Magento-将一个变量从控制器传递到签出temaplte
我已经阅读了关于这个主题的其他帖子,尝试了很多东西,但是无法从我的控制器文件中获取一个变量。我很少有创建模块的经验,所以按照指南创建以下内容 应用程序▸ 密码▸ 地方的▸ 克雷尔▸ 限制▸ 等▸ config.xmlMagento-将一个变量从控制器传递到签出temaplte,magento,variables,controller,Magento,Variables,Controller,我已经阅读了关于这个主题的其他帖子,尝试了很多东西,但是无法从我的控制器文件中获取一个变量。我很少有创建模块的经验,所以按照指南创建以下内容 应用程序▸ 密码▸ 地方的▸ 克雷尔▸ 限制▸ 等▸ config.xml <?xml version="1.0"?> <config> <modules> <Creare_AgeRestricted> <version>0.1.0</vers
<?xml version="1.0"?>
<config>
<modules>
<Creare_AgeRestricted>
<version>0.1.0</version>
</Creare_AgeRestricted>
</modules>
<global>
<events>
<payment_method_is_active>
<observers>
<age_restricted>
<type>singleton</type>
<class>AgeRestricted/observer</class>
<method>AgeRestricted</method>
</age_restricted>
</observers>
</payment_method_is_active>
</events>
<models>
<AgeRestricted>
<class>Creare_AgeRestricted_Model</class>
<resourceModel>agerestricted_mysql4</resourceModel>
</AgeRestricted>
</models>
<sales>
<quote>
<item>
<product_attributes>
<age_restricted/>
</product_attributes>
</item>
</quote>
</sales>
</global>
</config>
然后我试着用以下方式来称呼:
echo Mage::registry('feedback');
存档:
app/design/frontend/dexam/default/template/checkout/onepage/payment.phtml
但它什么也没显示。我已经在payment.phtml中测试了位置。。我的测试文本出现,但“反馈”并没有调用$AGERSTRICTED
我试着克制自己;在我的控制器中,它在我的屏幕顶部回显了许多“1”,以便我可以看到变量包含真实值
如何调用$AgeRestricted in payment.phtml
非常感谢!!
达兹
您可以使用magento签出会话设置从观察者到付款文件的值
<?php
class Creare_AgeRestricted_Model_Observer
{
public function AgeRestricted(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$AgeRestricted = false;
foreach (Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems() as $item)
{
if($item->getProduct()->getAgeRestricted()){
$AgeRestricted = true;
}
}
if($AgeRestricted){
Mage::getSingleton('checkout/session')->setRestictedAge($AgeRestricted);
}
}
}
在您的payment.phtml中
<?php $session = Mage::getSingleton('checkout/session');?>
<?php echo $session->getRestrictedAge();?>
你必须把Mage::register'feedback',$AgeRestricted;初始化变量$AgeRestricted=false后;谢谢,我尝试了这个,但是我得到了错误-Mage注册表项反馈已经存在。我确信这是因为相同的代码在反复运行。我也尝试了下面的if语句,但这也给出了键已存在错误。这在加载签出时给出了此错误:-Mage注册表键反馈已存在您是否检查此Mage::register'feedback',$AgeRestricted;在Observer.php中只有一次,您还需要设置if条件来检查变量寄存器是否存在这是它在Observer.php中调用的唯一一次。其代码与上面提供的代码相同。我知道,当我回显$AGERSTRICTED时,它会给出很多“1”,因此它显然会运行多次。如何注册变量,然后在每次后续尝试时更新其值?我已经添加了您在上面添加的if语句,但仍然给出错误-Mage注册表项反馈已经存在。您确定在Mage::register'feedback'、$Agerstricted或在代码编辑后清除缓存和日志文件的其他位置不存在此代码吗
<?php
class Creare_AgeRestricted_Model_Observer
{
public function AgeRestricted(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$AgeRestricted = false;
foreach (Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems() as $item)
{
if($item->getProduct()->getAgeRestricted()){
$AgeRestricted = true;
}
}
if($AgeRestricted){
Mage::getSingleton('checkout/session')->setRestictedAge($AgeRestricted);
}
}
}
<?php $session = Mage::getSingleton('checkout/session');?>
<?php echo $session->getRestrictedAge();?>