2011-07-11 13 views
0

私はテンプレートエンジンとして口髭(PHPバージョン)を使用しています。可変構文( ">"なし)を使用した口ひげ部分

テンプレート内で{{何か}}のように書式設定する代わりに、{{何か}}を部分的なものとして扱えるかどうかは疑問です。理想的には、変数名が_partials配列内にある場合、変数は部分として扱われます。

これにより、テンプレートを変更することなく、変数を部分的に変更することができます。

これは可能ですか?

答えて

0

私はMustache.phpの_renderTag関数を変更することでこれを行う方法を理解しました。 switch文では、デフォルトの場合、$ tag_nameが$ this - > _ partials配列にあるかどうかを確認するだけです。

protected function _renderTag($modifier, $tag_name, $leading, $trailing) { 
    switch ($modifier) { 
     case '=': 
      return $this->_changeDelimiter($tag_name, $leading, $trailing); 
      break; 
     case '!': 
      return $this->_renderComment($tag_name, $leading, $trailing); 
      break; 
     case '>': 
     case '<': 
      return $this->_renderPartial($tag_name, $leading, $trailing); 
      break; 
     case '{': 
      // strip the trailing } ... 
      if ($tag_name[(strlen($tag_name) - 1)] == '}') { 
       $tag_name = substr($tag_name, 0, -1); 
      } 
     case '&': 
      if ($this->_hasPragma(self::PRAGMA_UNESCAPED)) { 
       return $this->_renderEscaped($tag_name, $leading, $trailing); 
      } else { 
       return $this->_renderUnescaped($tag_name, $leading, $trailing); 
      } 
      break; 
     case '#': 
     case '^': 
     case '/': 
      // remove any leftover section tags 
      return $leading . $trailing; 
      break; 
     default: 
      // Render var as partial if it is in _partial array (so we don't have to use "{>partial}" syntax) 
      if ($this->_partials[$tag_name]) { 
       $partial = $this->_renderPartial($tag_name, $leading, $trailing); 
       return $partial; 
      } 


      if ($this->_hasPragma(self::PRAGMA_UNESCAPED)) { 
       return $this->_renderUnescaped($modifier . $tag_name, $leading, $trailing); 
      } else { 
       return $this->_renderEscaped($modifier . $tag_name, $leading, $trailing); 
      } 
      break; 
    } 
} 
関連する問題