Какова функция "initLayout" в magento?


Что делает эта функция в magento?

$this->_initLayoutMessages('customer/session');
$this->_initLayoutMessages('catalog/session');

Что _initLayoutMessages() возвращает?

Author: brentwpeterson, 2014-12-11

2 answers

Метод ничего не возвращает. Ну, на самом деле он возвращается $this.
Из разных частей приложения (в основном контроллеров) вы можете настроить сообщения сеанса, которые будут отображаться на следующей странице, которую вы посещаете.
Вот пример.
При подписке на рассылку новостей, когда страница обновится, вы увидите сообщение Thank you for your subscription..
Это сообщение добавлено из Mage_Newsletter_SubscriberController::newAction этой строкой:

$session->addSuccess($this->__('Thank you for your subscription.'));

Где $session = Mage::getSingleton('core/session').

Вызывая $this->_initLayoutMessages('customer/session'); внутри действия, вы указываете magento показывать все сообщения сеанса, которые были ранее добавлены с помощью:

Mage::getSingleton('customer/session')->addError(...) ( или addWarning, addNotice и addSuccess).

Поскольку сообщения могут быть добавлены с помощью разных частей сеанса (customer/session, catalog/session, checkout/session, core/session) это позволяет вам разделять и контролировать сообщения, которые видит пользователь.

Например, если в предыдущем действии вы добавили такое сообщение:

Mage::getSingleton('customer/session')->addError('Some error here');  

Пользователь не увидит это сообщение, пока не посетит страницу, которая соответствует действию, имеющему $this->_initLayoutMessages('customer/session');.

 8
Author: Marius, 2014-12-11 11:46:08

Метод _initLayoutMessages добавляет блок сообщений в макет страницы, который выводит любые сообщения об ошибках, уведомлениях или успехах, хранящиеся в модели сеанса, указанной в качестве аргумента.

Таким образом, $this->_initLayoutMessages('catalog/session'); выведет сообщение, добавленное через

Mage::getSingleton('catalog/session')->addError('foo');
Mage::getSingleton('catalog/session')->addSuccess('foo');
Mage::getSingleton('catalog/session')->addNotice('foo');
 4
Author: Sander Mangel, 2014-12-11 11:46:03