Intereting Posts
Удалить расширение .php с помощью PHP многострадальный PHP-скрипт и способы решения проблемы? как отображать имя пользователя в URL-адресе Номер проверки базовой проверки? UTF-8 с PHP DOMDocument loadHTML? Как преобразовать двоичный код в десятичный без использования собственных функций PHP? Шаблоны для многопроцессорных процессов PHP? file_get_contents (): поток не поддерживает поиск / Когда поведение PHP об этом изменилось? PHP и MySQL: показать SUM о чем-то, классифицированном по отдельным категориям максимальная длина сеанса php и файлов cookie php scandir () не показывает файлы – только показ каталогов фильтрация в ng-повторе от ответа JSON PHP preg_replace для удаления html-комментариев в стиле MS Office Необходимо проверить, что веб-сайт содержит сертификат ssl или нет, если да, то какова дата истечения срока действия сертификата с использованием php-скриптов PHP flock () – что находится под капотом?

Magento: избегайте потери переводов при переписывании контроллеров

Я переписываю контроллер следующим образом:

<frontend> <routers> <checkout> <args> <modules> <My_Foo before="Mage_Checkout">My_Foo</My_Foo> </modules> </args> </checkout> </routers> 

Я переписываю только одну функцию. Другая функция контроллера (левый оригинал) вызывает $this->__('A string'); когда я отслеживаю это в отладчике, Mage_Core_Controller_Front_Action::__() выражение перевода ( $expr ) является

 _text = 'A string', _module = 'My_Foo' 

и перевод не найден – потому что он доступен только в Mage_Checkout .

Я считаю, что лучшим решением было бы избежать перезаписывания контроллера и использования событий, но это невозможно во всех случаях.

Есть ли какое-либо чистое решение – кроме использования событий – сохранить исходный перевод внутри перезаписанных контроллеров?

Related of "Magento: избегайте потери переводов при переписывании контроллеров"

Решение очень простое. Просто укажите имя модуля, которое должно использоваться в контроллере для перевода строк.

  • Укажите значение для свойства $ _realModuleName этого класса.

Пример:

 class My_Foo_SomeController extends Mage_Checkout_SomeController { protected $_realModuleName = 'Mage_Checkout'; // Some your code goes here } 

В этом случае Magento будет использовать значение из этого свойства для извлечения модулей, вместо того, чтобы пытаться определить имя модуля из имени класса.