Magento 1.7.0.2 を実行しています。私の派生コントローラー クラスには、次のコードを含むアクションがあります。
パブリック関数 indexAction() {
$layout = Mage::getSingleton('core/layout');
$xml = simplexml_load_string('<layout>
<block type="core/text" name="root" output="toHtml">
<action method="setText"><text>Hello!</text></action>
</block>
</layout>');
$layout->setXml($xml);
$layout->generateBlocks();
echo $layout->getOutput();
}
Alan Storm の本 No Frills Magento Layout のように、文字列として渡された XML からレイアウトをロードしようとしていますが、次のエラーが発生します。私は何を間違っていますか?
テストやいじりの目的で、埋め込み XML から XML レイアウト ファイルをプログラムでロードする正しい方法である場合、SimpleXMLElement が VarienSimplexmlElement にキャストされないのはなぜですか?
Recoverable Error: Argument 1 passed to Varien_Simplexml_Config::setXml() must be an instance of Varien_Simplexml_Element, instance of SimpleXMLElement given, called in /var/www/magpractice/app/code/local/Alanstormdotcom/Helloworld/controllers/IndexController.php on line 17 and defined in /var/www/magpractice/lib/Varien/Simplexml/Config.php on line 133
#0 /var/www/magpractice/lib/Varien/Simplexml/Config.php(133): mageCoreErrorHandler(4096, 'Argument 1 pass...', '/var/www/magpra...', 133, Array)
#1 /var/www/magpractice/app/code/local/Alanstormdotcom/Helloworld/controllers/IndexController.php(17): Varien_Simplexml_Config->setXml(Object(SimpleXMLElement))
#2 /var/www/magpractice/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Alanstormdotcom_Helloworld_IndexController->indexAction()
#3 /var/www/magpractice/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#4 /var/www/magpractice/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#5 /var/www/magpractice/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#6 /var/www/magpractice/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#7 /var/www/magpractice/index.php(88): Mage::run('', 'store')
#8 {main}