如何在模板文件中显示错误或成功消息?

时间:2014-04-15 05:59:09

标签: magento magento-1.7

我想在模板文件(自定义模块模板文件)中显示某些条件的消息。我有以下代码。

<?php
 if(count($collection)): ?>             
        <?php foreach($collection as $coll): ?>         
                   some calculations                   
        <?php endforeach; ?>
<?php else: ?>
        <?php $message = $this->__('There is no data available'); ?>
        <?php echo Mage::getSingleton('core/session')->addNotice($message);?>
<?php endif;?>

但这不能正常运作。该消息显示在不在同一页面上的其他页面上。

3 个答案:

答案 0 :(得分:5)

如果您确实需要在模板中实现该权限,可以使用以下代码:

<?php echo $this->getLayout()->createBlock('core/messages')->addNotice('My Message')->toHtml(); ?>

Amit Bera 所描述的解决方案听起来更像是解决问题的方法。

答案 1 :(得分:4)

Muk,根据你的代码

  Mage::getSingleton('core/session')->addNotice($message);

向magento添加通知。这是code set notice to session,根据php会话反映页面刷新,会话变量设置值在页面刷新后反映。

如果您在访问文件之前已在其他页面上添加此通知,则ou need to add core/session to custom module template file controllers file。 代码为$this->_initLayoutMessages('core/session');

在控制器中,您需要控制器中的以下代码。

/* load the layout from xml */
        $this->loadLayout();

        $this->_initLayoutMessages('core/session');

        /* rendering layout */
        $this->renderLayout();

inchoo blog

了解详情

答案 2 :(得分:0)

我发现$this->loadLayout()是从会话中读取和清除消息的内容,因此如果您在调用$this->loadLayout()之前添加消息,那么这些消息应显示在当前页面上。

示例:

public function chooseFileAction() {

    // a quick and dirty way to find the larger out of post_max_size and upload_max_filesize
    $post_max_size = ini_get('post_max_size'); $post_max_size_int = str_replace('K', '000', str_replace('M', '000000', str_replace('G', '000000000', $post_max_size)));
    $upload_max_filesize = ini_get('upload_max_filesize'); $upload_max_filesize_int = str_replace('K', '000', str_replace('M', '000000', str_replace('G', '000000000', $upload_max_filesize)));
    $maxsize = $post_max_size_int < $upload_max_filesize_int ? $post_max_size : $upload_max_filesize;

    // display max file size to user in a message box
    $msg = 'Max file size: ' . $maxsize;
    Mage::getSingleton('core/session')->addNotice($msg);

    $this->loadLayout();

    $this->_title($this->__('Catalog'))->_title($this->__('File Upload'));
    $this->_setActiveMenu('catalog/customfileupload');

    $block = $this->getLayout()->createBlock('customfileupload/adminhtml_customfileupload_choosefile');
    $this->_addContent($block);

    $this->renderLayout();

}

警告:这是在Magento 1.9中测试的,而不是1.7。