1

私はPHPプログラミングとMagentoにかなり慣れていません。カスタム ブロック内のフォームから現在の ProductId をコントローラーに渡したい (新しいアクション)。

はい、1 つの方法として、カスタム ブロック フォームに非表示の入力 (製品 ID を使用) を追加し、通常の方法で値を取得する方法があることを知っています。

$this->getRequest()->getPost('myvalue'))

追加のシークレット入力フィールドを宣言することなく、Magento でコントローラー内の値を取得するためのより良い方法はありますか?

4

3 に答える 3

0

Magento は、構成 DOM に対して計算された、必要な値で URL を構築する方法を提供します。ブロック (およびブロック テンプレート) はMage_Core_Block_Abstract::getUrl()直接呼び出すことができます:

$this->getUrl('some_handle/foo/test',array('id'=>'some_value'));
// Mage::getUrl() will work as well

上記は、次の URL になります。

http://base_url/frontname/foo/action/id/some_value/

FooController testAction()...これはasで読むことができます

$this->getRequest()->getParam('id') // 'some_value'
于 2013-04-12T14:05:43.557 に答える
0

Magento 内のベスト プラクティスを順守したいとお考えのあなたに朗報です! ただし、コントローラーへのデータの受け渡しはかなり標準的です。製品ページから製品がどのように追加されるかを見ると、実際にはフォーム アクション URL のパラメータに製品 ID が表示されます。

http://domain.com/checkout/cart/add/uenc/uenc_value/product/45573/

...45573製品 ID はどこにありますか。もちろん、これは隠し入力フィールドを介してコントローラーに送信することもできます。これは私が常に使用しています。http://domain.com/checkout/cart/add/?uenc=uenc_value&product=45573上記はMagentoと同じであることに注意してください。

将来の使用のためにコントローラで使用するためにデータを格納する別の方法は、データをセッションに設定することです。コントローラーにデータを投稿する場合、この方法はお勧めしませんが、心に留めておくべきことがあります。

$session = Mage::getSingleton('core/session');
$session->setMyValue(true);

my_valueセッションをインスタンス化するだけで、後でデータを取得できます。幸運を!

于 2013-04-12T12:05:42.390 に答える
0

データの受け渡しはさまざまな方法で行うことができます:

  1. Magento のマジック セッターとゲッターを使用できます。
    したがって、値を設定するには、次のようにする必要があります。

    Mage::getSingleton('core/session')->setSomeVariable($value);
    

    これを取得するには:

    Mage::getSingleton('core/session')->getSomeVariable();
    
  2. または、レジスターを使用することもできます。

    Mage::register('key', $value); //to set your data
    Mage::registry('key'); //to get your data
    
于 2013-04-12T13:21:37.830 に答える