Как я получаю сообщение успеха в Magento?
Array
(
[core] => Array
(
[_session_validator_data] => Array
(
[remote_addr] => 192.168.151.102
[http_via] =>
[http_x_forwarded_for] =>
[http_user_agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4
)
[session_hosts] => Array
(
[technova2] => 1
)
[messages] => Mage_Core_Model_Message_Collection Object
(
[_messages:protected] => Array
(
)
[_lastAddedMessage:protected] => Mage_Core_Model_Message_Success Object
(
[_type:protected] => success
[_code:protected] => Your review has been accepted for moderation
[_class:protected] =>
[_method:protected] =>
[_identifier:protected] =>
[_isSticky:protected] =>
)
)
[just_voted_poll] =>
[visitor_data] => Array
(
[] =>
[server_addr] => -1062692990
[remote_addr] => -1062693018
[http_secure] =>
[http_host] => technova2
[http_user_agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4
[http_accept_language] => en-US,en;q=0.8
[http_accept_charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
[request_uri] => /~rahuls/sextoys/index.php/review/product/list/id/169/
[session_id] => 21bq2vtkup5m1gtghknlu1tit42c6dup
[http_referer] => http://technova2/~rahuls/sextoys/index.php/review/product/list/id/169/
[first_visit_at] => 2010-06-16 05:49:56
[is_new_visitor] =>
[last_visit_at] => 2010-06-16 06:00:00
[visitor_id] => 935
[last_url_id] => 23558
)
[last_url] => http://technova2/~rahuls/sextoys/index.php/review/product/list/id/169/
)
)
После регистрации обзора я хочу отобразить сообщение: "Ваш обзор был принят для модерирования". Появляется в $ _SESSION массив, но как я выбираю его? Помогите.Заранее спасибо.
Поскольку сообщение хранится в подмассиве core
, вы будете использовать блок сообщений ядра Magento для его получения. В вашем макете вы должны увидеть эту строку (в page.xml):
<block type="core/messages" name="global_messages" as="global_messages"/>
Это означает, что страница вызывает блок сообщений и извлекает сообщения из массива ядра. Затем, в ваших макетах, вы должны увидеть строку, которая фактически вызывает вывод:
<?php echo $this->getChildHtml('global_messages') ?>
Это фактически повторяет обычные блоки сообщений для любых сообщений в сессии. Если вы не можете найти эти блоки, добавьте их. Если вам нужно получить сообщение в другом контексте (это может помешать работе другого сайта), попробуйте сделать это в файле phtml:
<?php print $this->getLayout()->createBlock('core/messages')->toHtml(); ?>
Надеюсь, это поможет!
Спасибо, Джо
Похоже, то, что вы запрашиваете, уже существует в Magento. Как только пользователь разместил отзыв о товаре, по умолчанию появляется сообщение "Ваш отзыв принят на модерацию", как указано в app/code/core/Mage/Review/controllers/ProductController.php в строке 188 (Magento 1.4.0.1)
В любом случае, если вы хотите отображать сообщения (уведомление, успех, ошибка, предупреждение), просто используйте, например, в случае сообщения об успехе:
<?php
$message = $this->__('Your success message here');
Mage::getSingleton('core/session')->addSuccess($message);
?>
Сообщение будет сохранено в сессии и автоматически появится на фронтенде, если в файле шаблона страницы есть код $this->getMessagesBlock()->getGroupedHtml(), который есть во всех phtml страницах по умолчанию, поставляемых с Magento. Так что вам не нужно беспокоиться.
Конечно, в приведенном выше примере вы можете изменить
addSuccess($message)
на.
addError($message)
или addWarning($message)
или addNotice($message)
в зависимости от того, какую информацию вы хотите отобразить.
Я нашел следующий блок в page.xml
Я использовал следующие две строки в своем коде для сообщения об успехе, но безуспешно.
getChildHtml ('global_messages')?> getLayout () -> createBlock ('core / messages') -> toHtml (); ?>$messages = Mage::getSingleton('core/session')->getMessages(true);
foreach($messages->getItems() as $message)
{
// Do something
$message->getText();
}