私の目標は、ストアの任意のページに入るときに、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>
コントローラーはモデルをインスタンス化し、セッターを呼び出して必要な値を更新/挿入します
//on the controller function postAction ($params) { $referer = $this->getRequest()->getPost(); }
モデルには、CRUD 操作を実行するための適切なコードがすべて含まれています。
これは正しいです?次の手順に従って、Magento MVC アプローチに従おうとしています。今のところ、phtml ファイルにすべてのコードがあります。リファラーを取得して分割し、モデルをインスタンス化してすべてを保存しています。しかし、私はこれが正しくないことを知っています。
今のところ config.xml には次のものがあります。
<?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>