1

My goal is to have a form into a form container. When I call directly my form in my controller, it works, but when I call the container, I have this issue :

Fatal error: Call to a member function setData() on boolean in app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php on line 144

The code line is :

public function getFormHtml() {
    $this->getChild('form')->setData('action', $this->getSaveUrl());
    return $this->getChildHtml('form');
}

And this refers to another line :

protected function _prepareLayout() {
    if ($this->_blockGroup && $this->_controller && $this->_mode) {
        $this->setChild('form', $this->getLayout()->createBlock($this->_blockGroup
            . '/'
            . $this->_controller
            . '_'
            . $this->_mode
            . '_form'
            )
        );
    }
    return parent::_prepareLayout();
}

I've tried to tweak values of _blockGroup, _controller and _mode, but nothing works ...

My form container class :

class Cheek_Portraits_Block_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
{
    public function __construct()
        {
            $helper =  Mage::helper('portraits');
            $this->_blockGroup = 'portraits';
            $this->_controller = 'page';
            $this->_mode = 'edit';

            if($this->getRequest()->getParam('id'))
                {
                    $this->_headerText = $helper->__('Edit')." portrait";
                }
            else
                {
                    $this->_headerText = $helper->__('New')." portrait";
                }
            parent::__construct();
        }
}

Here my folders and files :

I also tried like this :

1 Answer 1

0

Check if you really created the the Form.php file from Yourmodule/Yournamespace/Block/Adminhtml/Page/Edit/Form.php

please make sure you have this method inside:

    protected function _prepareForm()
    {
        $form = new Varien_Data_Form(
            [
                'id'         => 'edit_form',
                'action'     => $this->getUrl(
                    '*/*/save',
                    [
                        'id' => $this->getRequest()->getParam('id')
                    ]
                ),
                'method'     => 'post',
                'enctype'    => 'multipart/form-data'
            ]
        );
        $form->setUseContainer(true);
        $this->setForm($form);
        return parent::_prepareForm();
    }

For me missing that file caused this error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.