Model view controller magento方法保存参考url和关键字
我的目标是保存在数据库的url引用和关键字时,进入我们的商店的任何页面。我想试着了解一下我的问题 我采用的方法是:Model view controller magento方法保存参考url和关键字,model-view-controller,magento,controller,magento-1.7,referer,Model View Controller,Magento,Controller,Magento 1.7,Referer,我的目标是保存在数据库的url引用和关键字时,进入我们的商店的任何页面。我想试着了解一下我的问题 我采用的方法是: 使块粘贴在默认布局上,以便在每个页面上加载(已测试,正在工作)。此块将使用以下代码读取引用器: $request['url']=$this->getRequest()->getServer('HTTP_REFERER') 然后调用将$request传递给控制器的函数: 这一步我还是不知道怎么做,用重定向?或者通过调用dispatchEvent并在控制器上使用postAction功能
postAction
功能
//on the phtml file
<div>
<?php
$request['url'] = getRequest()->getServer(‘HTTP_REFERER’);
Mage::dispatchEvent("allpagescontroller", $request);
?>
</div>
0.1.0
Dts\u所有页面\u模型
所有页面\u mysql4
Dts\u所有页面\u模型\u mysql4
关键词
参考页
Dts\u所有页面\u块
Dts\u所有页面\u帮助程序
核心写入
核心读取
>
标准
Dts_所有页面
所有页面
allpages.xml
就Magento MVC流而言,您的逻辑不正确。模板是程序流程的最后一站,您不应该在模板中插入任何逻辑,因为您的系统将变成不稳定的混乱 您试图实现的逻辑根本不需要任何视图。它甚至不需要控制器。正如您所知,Magento使用事件观察者模式,您的任务只是要求它 您应该创建观察者,并从初始请求流中侦听一些事件。您可以侦听在每个页面请求上触发的任何事件,但它不应该太早-当系统本身还未初始化时,也不应该太迟,当其他一些系统逻辑可以重定向、转发或对referer进行一些更改时。我认为
controller\u action\u predispatch
将满足您的需要
在“观察者”中,您可以获取HTTP\u REFERER,并使用模型层将其保存在数据库中。在“观察者”中使用此代码
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
Mage::app()->getResponse()->sendResponse();
exit;
我又一次在路上看到了事件观察员……我怀疑这条路是否正确。不是你帮我清理的。因此,我不需要添加块、模板或控制器,只需要添加事件观察者的所有逻辑。将对其进行测试。我被困在如何侦听所有页面predispatch事件上。@Yaroslav-以下是一个配置示例,您应该将其插入到自定义模块
allpages/Observer savereferer
中。您应该使用savereferer方法创建一个观察者模型,并且它应该在每个页面上触发。谢谢。几周前,我还在为事件/观察者模式而挣扎。这就是我在评论中所说的“再一次,我的路上的事件观察者……”。将测试并返回给您。我遇到了一个错误,通过用
替换礼仪
解决了它。可以吗?如果没有,我在Dts\AllPages\Model\Observer.php上搜索Observer.php时收到了一个未包含的文件
<?xml version="1.0"?>
<config>
<modules>
<Dts_Allpages>
<version>0.1.0</version>
</Dts_Allpages>
</modules>
<global>
<models>
<allpages>
<class>Dts_Allpages_Model</class>
<resourceModel>allpages_mysql4</resourceModel>
</allpages>
<allpages_mysql4>
<class>Dts_Allpages_Model_mysql4</class>
<entities>
<keywords>
<table>keywords</table>
</keywords>
<referencedpages>
<table>referencedpages</table>
</referencedpages>
</entities>
</allpages_mysql4>
</models>
<blocks>
<allpages>
<class>Dts_Allpages_Block</class>
</allpages>
</blocks>
<helpers>
<allpages>
<class>Dts_Allpages_Helper</class>
</allpages>
</helpers>
<resources>
<allpages_write>
<connection>
<use>core_write</use>
</connection>
</allpages_write>
<allpages_read>
<connection>
<use>core_read</use>
</connection>
</allpages_read>
</resources>
</global>>
<frontend>
<routers>
<allpages>
<use>standard</use>
<args>
<module>Dts_Allpages</module>
<frontName>allpages</frontName>
</args>
</allpages>
</routers>
<layout>
<updates>
<allpages>
<file>allpages.xml</file>
</allpages>
</updates>
</layout>
</frontend>
</config>
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
Mage::app()->getResponse()->sendResponse();
exit;