我想在模板文件(自定义模块模板文件)中显示某些条件的消息。我有以下代码。
<?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;?>
但这不能正常运作。该消息显示在不在同一页面上的其他页面上。
答案 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();
了解详情
答案 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。