すべてのブロックの Template.php は、これらのモジュールに属するすべてのテンプレートに共通のメソッドを定義していますか?
私はこれについてとても興味があります。/Block/Template.php で定義されたメソッドを使用する init.phtml という名前のテンプレートがあります。init.phtml で $this->methodInTemplateBlock() を直接呼び出せる理由がわかりません。誰でも私に説明できますか?前もって感謝します!
すべてのブロックの Template.php は、これらのモジュールに属するすべてのテンプレートに共通のメソッドを定義していますか?
私はこれについてとても興味があります。/Block/Template.php で定義されたメソッドを使用する init.phtml という名前のテンプレートがあります。init.phtml で $this->methodInTemplateBlock() を直接呼び出せる理由がわかりません。誰でも私に説明できますか?前もって感謝します!
メソッドMage_Core_Block_Template::fetchView
を見ると、次のように表示されます。
public function fetchView($fileName)
{
...
try {
$includeFilePath = realpath($this->_viewDir . DS . $fileName);
if (strpos($includeFilePath, realpath($this->_viewDir)) === 0 || $this->_getAllowSymlinks()) {
include $includeFilePath;
} else {
Mage::log('Not valid template file:'.$fileName, Zend_Log::CRIT, null, null, true);
}
...
}
ご覧のとおり、テンプレート ファイルの内容は、このクラスに存在するメソッドの本体に直接含まれています。つまり、$this を通じてクラス インスタンスを簡単に参照できます。