Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller magento方法保存参考url和关键字_Model View Controller_Magento_Controller_Magento 1.7_Referer - Fatal编程技术网

Model view controller magento方法保存参考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功能

我的目标是保存在数据库的url引用和关键字时,进入我们的商店的任何页面。我想试着了解一下我的问题

我采用的方法是:

  • 使块粘贴在默认布局上,以便在每个页面上加载(已测试,正在工作)。此块将使用以下代码读取引用器:

    $request['url']=$this->getRequest()->getServer('HTTP_REFERER')

  • 然后调用将$request传递给控制器的函数: 这一步我还是不知道怎么做,用重定向?或者通过调用dispatchEvent并在控制器上使用
    postAction
    功能

    //on the phtml file
    <div>
         <?php
              $request['url'] = getRequest()->getServer(‘HTTP_REFERER’);
              Mage::dispatchEvent("allpagescontroller", $request);
         ?>
    </div>
    
  • 在模型上,我将拥有所有适当的代码来执行CRUD操作

  • 这是正确的吗?我试图通过以下步骤遵循Magento MVC方法。现在,我已经掌握了phtml文件中的所有代码。我正在获取referer,将其拆分并实例化模型以保存所有内容。但我知道这是不对的

    关于config.xml,目前我有:

    
    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;