Php 如何将变量从控制器传递到块
嗨,我遇到了一个错误,将变量从控制器传递到块。我正在尝试做一个搜索功能 错误消息: 致命错误:调用上的成员函数setCustomerRegistries() 非宾语 E:\xampp\htdocs\magento2\app\code\local\Mdg\Giftregistry\controllers\SearchController.php 第27行 控制器Php 如何将变量从控制器传递到块,php,magento,magento-1.9,magento-1.4,Php,Magento,Magento 1.9,Magento 1.4,嗨,我遇到了一个错误,将变量从控制器传递到块。我正在尝试做一个搜索功能 错误消息: 致命错误:调用上的成员函数setCustomerRegistries() 非宾语 E:\xampp\htdocs\magento2\app\code\local\Mdg\Giftregistry\controllers\SearchController.php 第27行 控制器 <?php class Mdg_Giftregistry_SearchController extends Mage_Core_C
<?php
class Mdg_Giftregistry_SearchController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
$this->loadLayout();
$this->renderLayout();
return $this;
}
public function resultsAction(){
$this->loadLayout();
if ($searchParams = $this->getRequest()->getParam('search_params')) {
$results = Mage::getModel('mdg_giftregistry/entity')->getCollection();
if($searchParams['type']){
$results->addFieldToFilter('type_id', $searchParams['type']);
}
if($searchParams['date']){
$results->addFieldToFilter('event_date', $searchParams['date']);
}
if($searchParams['location']){
$results->addFieldToFilter('event_location', $searchParams['location']);
}
$this->getLayout()->getBlock('mdg_giftregistry.search.results')->setCustomerRegistries($results);
}
$this->renderLayout();
return $this;
}
}
-
布局XML
<?xml version="1.0"?>
<layout version="0.1.0">
<mdg_giftregistry_index_index>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content">
<block name="giftregistry.list" type="mdg_giftregistry/list" template="mdg/list.phtml" as="giftregistry_list"/>
</reference>
</mdg_giftregistry_index_index>
<mdg_giftregistry_index_new>
<reference name="content">
<block name="giftregistry.new" type="core/template" template="mdg/new.phtml" as="giftregistry_new"/>
</reference>
</mdg_giftregistry_index_new>
<mdg_giftregistry_index_edit>
<reference name="content">
<block name="giftregistry.edit" type="core/template" template="mdg/edit.phtml" as="giftregistry_edit"/>
</reference>
</mdg_giftregistry_index_edit>
<mdg_giftregistry_view_view>
<reference name="content">
<block name="giftregistry.view" type="core/template" template="mdg/view.phtml" as="giftregistry_view"/>
</reference>
</mdg_giftregistry_view_view>
<mdg_giftregistry_search_index>
<reference name="content">
<block name="giftregistry.search" type="core/template" template="mdg/search.phtml" as="giftregistry_search"/>
</reference>
</mdg_giftregistry_search_index>
<mdg_giftregistry_search_results>
<reference name="content">
<block name="giftregistry.results" type="mdg_giftregistry/list" template="mdg/list.phtml"/>
</reference>
</mdg_giftregistry_search_results>
<catalog_product_view translate="label">
<reference name="content">
<reference name="product.info">
<block type="mdg_giftregistry/add" name="registry.add" as="registry_add" template="mdg/add_to_registry.phtml" />
</reference>
</reference>
</catalog_product_view>
</layout>
第/1页column.phtml
试试这个解决方案。换行
$this->getLayout()->getBlock('mdg_giftregistry.search.results')->setCustomerRegistries($results);
到
在
E:\xampp\htdocs\magento2\app\code\local\Mdg\Giftregistry\controllers\SearchController.php中,第27行是什么样子的。“$this->getLayout()->getBlock('mdg_giftregistry.search.results')->setCustomerRegistries($results);”您可以显示模块布局xml文件的代码吗?您可以发布setCustomerRegistries的代码吗。我实际上只是在学习Magento错误消失了,但是集合没有过滤它没有将$results传递给模板在您的块中,只需调用这个$this->getCustomerRegistries()代码>我在.phtml文件中调用它。我的php块代码上的函数不会有冲突吗?代码发布在top上。请将块中现有函数的名称更改为任何其他名称。要从控制器获取数据,您需要使用相同的getter/setter方法。
<?xml version="1.0"?>
<layout version="0.1.0">
<mdg_giftregistry_index_index>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content">
<block name="giftregistry.list" type="mdg_giftregistry/list" template="mdg/list.phtml" as="giftregistry_list"/>
</reference>
</mdg_giftregistry_index_index>
<mdg_giftregistry_index_new>
<reference name="content">
<block name="giftregistry.new" type="core/template" template="mdg/new.phtml" as="giftregistry_new"/>
</reference>
</mdg_giftregistry_index_new>
<mdg_giftregistry_index_edit>
<reference name="content">
<block name="giftregistry.edit" type="core/template" template="mdg/edit.phtml" as="giftregistry_edit"/>
</reference>
</mdg_giftregistry_index_edit>
<mdg_giftregistry_view_view>
<reference name="content">
<block name="giftregistry.view" type="core/template" template="mdg/view.phtml" as="giftregistry_view"/>
</reference>
</mdg_giftregistry_view_view>
<mdg_giftregistry_search_index>
<reference name="content">
<block name="giftregistry.search" type="core/template" template="mdg/search.phtml" as="giftregistry_search"/>
</reference>
</mdg_giftregistry_search_index>
<mdg_giftregistry_search_results>
<reference name="content">
<block name="giftregistry.results" type="mdg_giftregistry/list" template="mdg/list.phtml"/>
</reference>
</mdg_giftregistry_search_results>
<catalog_product_view translate="label">
<reference name="content">
<reference name="product.info">
<block type="mdg_giftregistry/add" name="registry.add" as="registry_add" template="mdg/add_to_registry.phtml" />
</reference>
</reference>
</catalog_product_view>
</layout>
$this->getLayout()->getBlock('mdg_giftregistry.search.results')->setCustomerRegistries($results);
$this->getLayout()->getBlock('giftregistry.results')->setCustomerRegistries($results);