0
我正在關注Alan Storm的No_Frills_Magento_Layout。我有一個點,我不能按照什麼書這麼說我就這件事的另一種方法如何用createBlock調用文件
下面做工作,是書的方式,我得到一個錯誤
$layout = Mage::getSingleton(’core/layout’);
$block = $layout->createBlock('ts_nofrills/helloworld', 'root');
echo $block->toHtml();
//Fatal error: Call to a member function createBlock() on a non-object in
下面
是我的方式併產生一個.phtml文本
$main_block = new Ts_Nofrills_Block_Helloworld();
$layout = Mage::getSingleton(’core/layout’);
$block = $layout->createBlock($main_block, 'root');
echo $block->toHtml();
我的問題是這本書延續了這個例子上,並通過從示例偏離,並做我的方式,我不覺得我學的全部潛力擴大。
我想我已經寫了第一個參數錯誤地讓magento在createBlock函數中識別它我在例子1中做了什麼錯誤?
我一直不願意把這個問題的原因有兩個:
1 - 我敢肯定的答案就在書(我不能,雖然找到它)
2 - 我敢肯定,這個問題已經被問放在這裏(我再次看了看,但不能找到它)
===編輯===
<global>
<blocks>
<Ts_Nofrills>
<class>Ts_Nofrills_Block</class>
</Ts_Nofrills>
</blocks>
....
</global>
文件結構
- TS
-
- Nofrills
-
-
- 塊
-
-
-
-
- 的template.php
-
-
-
-
- 控制器
-
-
-
-
- IndexController。PHP
-
-
-
-
- 等
-
-
-
-
- config.xml中
-
-
感謝您回覆我的問題。我有配置設置這就是爲什麼示例二產生我的.phtml文件。我不明白的是爲什麼示例一生產和錯誤,而不是示例二。如果這是一個狡猾的配置問題,他們都會產生一個錯誤? – tony09uk
不,他們不會產生錯誤,因爲在你的例子中你正在創建一個新對象,而在Alan的他使用Magento來創建該對象。我相信在你的情況下,Magento由於配置不知道從哪裏獲得塊類。 – Emi
加載你的類'ts_nofrills/helloworld' Magento在config.xml中查找第一部分,名爲'ts_nofrills'的塊類,並且應該找到'Ts_Nofrills_Block',然後'/'變成'_'並且爆炸'_ _ '和'ucfirst'作爲explode數組中的每個元素,所以這個類變成'Ts_Nofrills_Block_Helloworld',並且可以在'app/code/local/Ts/Nofrills/Block/Helloworld.php裏找到' – Emi