tony09uk
tony09uk

Reputation: 2991

How to use a helper

I am creating a module that allows a user to input details into a form and save their details to allow relevant information to be forwarded to them at specified times.

To retrieve the details from the form and add them to the database I followed a tutorial and produced this code

    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');
    }
}

The tutorial says to put it into the controller in a saveAction, and that works fine. However from my very limited understanding it would go in to a helper and i'd call the helper from the controller

I placed the above code in my helper and called it from within the saveAction using the following

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

I also tried

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

My config has

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

1 . Should this code go in a helper, if not where should it go?

2 . How do I call the helper(or the location the code need to go) to utilise the code?

Upvotes: 2

Views: 1285

Answers (1)

J&#252;rgen Thelen
J&#252;rgen Thelen

Reputation: 12727

1 . Should this code go in a helper, if not where should it go?

The actual code you posted imo is predestinated to be used within a controller action because it realizes a very specific process flow: Get user data for a specific case -> save if applicable -> redirect.

Secondly, a helper imo never should control route dispatching. It's a helper, not a controller.

I fail to see any use case where putting the method into a helper would give any advantages.

2 . How do I call the helper(or the location the code need to go) to utilise the code?

Your definition uses <prefcentre> as alias, so if you did setup the helper the Magento standard way and using the file app/code/local/Ps/Prefcentre/Helper/Data.php, than your helper methods are callable like this:

Mage::helper('prefcentre')->myMethodName();

Upvotes: 1

Related Questions