How to create a custom form action to a controller in admin html from Magento?

Naveenbos picture Naveenbos · Oct 13, 2015 · Viewed 7.7k times · Source

I have created a form in admin html, but its action not working properly, the action not coming to the controller. My config.xml file shown below

<adminhtml>
        <menu>
            <customercare module="customercare">
                <title>Calls</title>
                <sort_order>100</sort_order>
                <children>
                    <customercare module="customercare">
                        <title>View Missed Calls</title>
                        <sort_order>0</sort_order>
                        <action>admin_customercare/adminhtml_missedcall</action>
                    </customercare>
                    <customercarecalllog module="customercare">
                        <title>View Call Logs</title>
                        <sort_order>1</sort_order>
                        <action>admin_customercare/adminhtml_calllog</action>
                    </customercarecalllog>                    
                </children>
            </customercare>
            <customer>
                    <children>
                            <customercarevirtualretialerrequest module="customercare">
                                    <title>Manage Virtaul Retailers</title>
                                    <sort_order>10</sort_order>
                                    <action>admin_customercare/adminhtml_virtualretialerrequest</action>
                            </customercarevirtualretialerrequest>
                    </children>
            </customer>

        </menu>
        <acl>
            <resources>
                <all>
                    <title>Allow Everything</title>
                </all>
                <admin>
                    <children>
                        <customercare translate="title" module="customercare">
                            <title>Calls</title>
                            <sort_order>1000</sort_order>
                            <children>
                                <customercare translate="title">
                                    <title>View Missed Calls</title>
                                </customercare>
                                <customercare translate="title">
                                    <title>Manage Missed Calls</title>
                                    <sort_order>0</sort_order>
                                </customercare>
                                <customercarecalllog translate="title">
                                    <title>View Call Logs</title>
                                    <sort_order>1</sort_order>
                                </customercarecalllog>

                            </children>
                        </customercare>                        
                    </children>
                    <customer>                                        
                            <children>                            
                                <virtualretialerrequest translate="title" module="customer">
                                    <title>Manage Virtual Retailers</title>
                                    <sort_order>10</sort_order>
                                </virtualretialerrequest>                            
                            </children>                                        
                    </customer>

                </admin>
            </resources>
        </acl>

My Controller file

<?php
class Suyati_Customercare_Adminhtml_VirtualretialerrequestController extends Mage_Adminhtml_Controller_Action 
{
    protected function _isAllowed()
    {
        return true;
    }

    public function indexAction()
    {

        $this->loadLayout(); 
        $block = $this->getLayout()->createBlock(
            "Mage_Core_Block_Template",
            "virtual-registration",
            array('template' => 'customercare/virtual_retailer_registration_admin_form.phtml')
        );
        $this->_addContent($block);
        $this->renderLayout();

    }

    public function postAction()
    {
        echo "hello"; die();
    }
}

Phtml Form action file located in this path app/design/adminhtml/default/default/template/customercare/virtual_retailer_registration_admin_form.phtml

<form action="<?php echo Mage::helper("adminhtml")->getUrl("customercare/virtualretialerrequest/post"); ?>" id="retailerForm" method="post">
    <input type="hidden" name="form_key" value="<? echo $this->getFormKey(); ?>" />

When i try to submit my form it is going to dashboard not coming to the controller action file. please help me on this. I just need to get the post data in the controller file and need to send an email to the admin.

Answer

Qaisar Satti picture Qaisar Satti · Oct 14, 2015

i think the problem with form key change

<input type="hidden" name="form_key" value="<? echo $this->getFormKey(); ?>" />

to

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />