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 的实际代码注定要在控制器操作中使用,因为它实现了一个非常具体的流程:获取特定案例的用户数据 -> 如果适用则保存 -> 重定向。

其次,一个助手 imo 永远不应该控制路由调度。它是一个助手,而不是一个控制器。

我看不到任何将方法放入助手中会带来任何优势的用例。

2. 我如何调用助手(或代码需要去的位置)来使用代码?

您的定义<prefcentre>用作别名,因此如果您确实以 Magento 标准方式设置了助手并使用了 file app/code/local/Ps/Prefcentre/Helper/Data.php,那么您的助手方法可以像这样调用:

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