2

ユーザーが詳細をフォームに入力し、その詳細を保存して、関連情報を指定された時間に転送できるようにするモジュールを作成しています。

フォームから詳細を取得してデータベースに追加するには、チュートリアルに従ってこのコードを作成しました

    public function saveAction()
{
    $title = $this->getRequest()->getPost('title');
    $f_name = $this->getRequest()->getPost('f_name');
    $l_name = $this->getRequest()->getPost('l_name');
    if ( isset($title) && ($title != '') && isset($f_name) && ($f_name != '') && isset($l_name) && ($l_name != '') ) {
        $contact = Mage::getModel('prefcentre/prefcentre');
        $contact->setData('title', $title);
        $contact->setData('f_name', $f_name);
        $contact->setData('l_name', $l_name);
        $contact->save();
        $this->_redirect('prefcentre/index/emailPreferences');
    } else {
        $this->_redirect('prefcentre/index/signUp');
    }
}

チュートリアルでは、saveAction でコントローラーに配置するように指示されていますが、これは正常に機能します。ただし、私の非常に限られた理解からすると、それはヘルパーに入り、コントローラーからヘルパーを呼び出します

上記のコードをヘルパーに配置し、次を使用して saveAction 内から呼び出しました

Mage::helper('module/helpername');//returned blank screen and did not save

私も試しました

Mage::helper('module/helpername_function');//returned error

私の設定は

<helpers>
    <prefcentre>
        <class>Ps_Prefcentre_Helper</class>
    </prefcentre>
</helpers>

1. このコードはヘルパーに入れるべきですか? そうでない場合、どこに入れるべきですか?

2. コードを利用するためにヘルパー (またはコードが移動する必要がある場所) を呼び出すにはどうすればよいですか?

4

1 に答える 1

1

1. このコードはヘルパーに入れるべきですか? そうでない場合、どこに入れるべきですか?

あなたがimoを投稿した実際のコードは、非常に具体的なプロセスフローを実現するため、コントローラーアクション内で使用される予定です。特定のケースのユーザーデータを取得する->該当する場合は保存する->リダイレクトします。

第二に、ヘルパーは決してルートのディスパッチを制御すべきではありません。コントローラーではなくヘルパーです。

メソッドをヘルパーに入れることで利点が得られるユースケースは見当たりません。

2. コードを利用するためにヘルパー (またはコードが移動する必要がある場所) を呼び出すにはどうすればよいですか?

定義は<prefcentre>エイリアスとして使用するため、Magento の標準的な方法でファイルを使用してヘルパーをセットアップした場合app/code/local/Ps/Prefcentre/Helper/Data.php、ヘルパー メソッドは次のように呼び出すことができます。

Mage::helper('prefcentre')->myMethodName();
于 2013-07-25T11:50:20.337 に答える