Очевидно, что $this
не имеет смысла, потому что вы не используете его изнутри объекта.У всех помощников есть эти функции, здесь я использую 'core'
, потому что он наиболее общий, но если вы пишете для своего собственного модуля, тогда используйте помощник вашего модуля - это помогает с переводом.
Mage::helper('core')->__('hello');
Mage::helper('core')->stripTags('world');
getLayout()
не может работать из внешнего файла, потому что с этой страницей не связан ни один маршрутизатор / контроллер / действие, следовательно, нет используемого макета.
Более длинный, но немного более правильный способ - работа с контроллерами Magento.а не внешние файлы.Скажем, ваш модуль My_Module
, а URL AJAX - www.example.com/mymodule/ajax/
...
app / code / local / My / Module / etc / config.xml
<config>
<frontend>
<routers>
<mymodule>
<use>standard</use>
<args>
<module>My_Module</module>
<frontName>mymodule</frontName>
</args>
</mymodule>
</routers>
</frontend>
</config>
app / code / local / My / Module / controllers / AjaxController.php
<?php
class My_Module_AjaxController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$this->getResponse()->setBody($this->__('hi'));
}
}
Более сложный пример см. Mage_CatalogSearch_AjaxController
в app/code/core/Mage/CatalogSearch/controllers/AjaxController.php
, он используетблоки в качестве выходных данных, которые лучше следуют парадигме MVC.