Answers:
有两种方法可以做到这一点。
直接分配给块:
$block->assign($var);
要么
$block->assign(array('myvar'=>'value','anothervar'=>true));
然后,您可以像下面这样在phtml文件中访问它:
$this->myvar
使用法师注册表:
Mage::register('custom_var', $var);
然后像这样使用它:
$var = Mage::registry('custom_var');
$this->myvar
模板文件中的进行访问
Mage::register($key, $value, ...)
。那么,Mage::register('custom_var', $var)
?
$block->assign('myvar',$var);
,不是吗?
Mage::register('custom_var', $var);
在会话中写入值,并且可以从除当前操作模板之外的其他模板文件访问该值?
您的phtml必须由一个块呈现。该块必须在布局中具有名称。
您可以在致电后执行此操作$this->loadLayout();
$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
$block->setSomething($something);
}
然后您可以在phtml
文件中获取值,例如
$value = $this->getSomething();
//or
$value = $this->getData('something');
万一您错过了,还有另一种方法可以完成此任务
使用会话
Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;
$block->setSomething()
或$block->assign()
。感觉就像“太多代码”,应尽可能避免使用php。
如果您在块控制器中。
class module_namespace_Block_example extends Mage_Core_Block_Template
{
protected $_var;
public function __construct(){
$this->_var = "something";
}
}
然后在您的.phtml文件中
<?php
$variable = $this->_var;
echo $variable; // prints "something"
?>
<h1>You're inside your phtml file...... <?php echo $variable; //prints "something" ?></h1>
controllers
模块目录中找到的控制器操作。
这很容易将数据从控制器发送到phtml文件。
步骤1:-首先创建Model类,并从Varien_Object扩展
class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{
}
步骤2:-现在打开contollerfile并将代码放入函数中。
$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();
步骤3:-打开phtml文件并放入代码。
echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');
输出:-'gaurav';
$block->assign($var)
但是如何在phtml
文件中检索呢?