3

Error:

Fatal error: Call to a member function setData() on boolean in C:\xampp\htdocs\magento-1-testing\app\code\core\Mage\Adminhtml\Block\Widget\Form\Container.php on line 141

I have create a custom module to add an additional section to upload an image for the CSM page but it is not working, its even not showing the input on the CMS page admin section.

<?xml version="1.0"?>
 <config>
 <modules>
 <Flexishore_Cms>
 <active>true</active>
 <codePool>local</codePool>
 </Flexishore_Cms>
 </modules>
 </config>

Config.xml

 <?xml version="1.0"?>
 <config>
 <modules>
 <Flexishore_Cms>
 <version>0.1.0</version>
 </Flexishore_Cms>
</modules>
<global>
 <models>
 <flexishore_cms>
 <class>Flexishore_Cms_Model</class>
 </flexishore_cms>
 </models>
 <blocks>
 <flexishore_cms>
 <class>Flexishore_Cms_Block</class>
 </flexishore_cms>
 <adminhtml>
 <rewrite>
 <cms_page_edit_form>Flexishore_Cms_Block_Adminhtml_Cms_Page_Edit_Form</cms_page_edit_form>
 </rewrite>
 </adminhtml>
 </blocks>
 <resources>
 <flexishore_cms_setup>
 <setup>
 <module>Flexishore_Cms</module>
 <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
 </setup>
 <connection>
 <use>core_setup</use>
 </connection>
 </flexishore_cms_setup>
 <flexishore_cms_write>
 <connection>
 <use>core_write</use>
 </connection>
 </flexishore_cms_write>
 <flexishore_cms_read>
 <connection>
 <use>core_read</use>
 </connection>
 </flexishore_cms_read>
 </resources>
</global>
<adminhtml> 
 <events>
 <cms_page_prepare_save>
 <observers>
 <flexishore_cms_save_page>
 <type>singleton</type>
 <class>flexishore_cms/observer_cms</class>
 <method>savePage</method>
 </flexishore_cms_save_page>
 </observers>
 </cms_page_prepare_save>
 <adminhtml_cms_page_edit_tab_main_prepare_form>
 <observers>
 <flexishore_cms_prepare_form>
 <type>singleton</type>
 <class>flexishore_cms/observer_cms</class>
 <method>prepareForm</method>
 </flexishore_cms_prepare_form>
 </observers>
 </adminhtml_cms_page_edit_tab_main_prepare_form>
 </events>
</adminhtml>

My Observer.php

class Flexishore_Cms_Model_Observer{
 public function prepareForm(Varien_Event_Observer $observer)
 {
 $form = $observer->getEvent()->getForm();
 $fieldset = $form->addFieldset(
 'image_fieldset',
 array(
 'legend' => 'Image',
 'class' => 'fieldset-wide'
 )
);
$fieldset->addField('background', 'image', array(
 'name' => 'background',
 'label' => 'Background image',
 'title' => 'Background image'
 ));
 }
public function savePage(Varien_Event_Observer $observer)
{
 $model = $observer->getEvent()->getPage();
 $request = $observer->getEvent()->getRequest();
 if (isset($_FILES['background']['name']) && $_FILES['background']['name'] != '') {
 $uploader = new Varien_File_Uploader('background');
 $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
 $uploader->setAllowRenameFiles(false);
 $uploader->setFilesDispersion(false);
 // Set media as the upload dir
 $media_path = Mage::getBaseDir('media') . DS . 'background' . DS;
 // Set thumbnail name
 $file_name = 'cms_';
 // Upload the image
 $uploader->save($media_path, $file_name . $_FILES['background']['name']);
 $data['background'] = 'background' . DS . $file_name . $_FILES['background']['name'];
 // Set thumbnail name
 $data['background'] = $data['background'];
 $model->setBackground($data['background']);
 } else {
 $data = $request->getPost();
 if($data['background']['delete'] == 1) {
 $data['background'] = '';
 $model->setBackground($data['background']);
 } else {
 unset($data['background']);
 $model->setBackground(implode($request->getPost('background')));
 }
 }
 }
 }
 }

Block Code is like this:

class Flexishore_Cms_Block_Adminhtml_Cms_Page_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
 protected function _prepareForm()
 {
 $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post', 'enctype' => 'multipart/form-data'));
 $form->setUseContainer(true);
 $this->setForm($form);
 return parent::_prepareForm();
 }
}

And Sql file in sql folder: mysql-install-0.1.0.php

 $installer = $this;
 $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
 $installer->startSetup();
 $installer->run(' ALTER TABLE `cms_page` ADD `background` VARCHAR( 255 ) NULL; ');
 $installer->endSetup();
Qaisar Satti
32.6k18 gold badges88 silver badges138 bronze badges
asked Mar 29, 2017 at 10:40

1 Answer 1

2

change

<class>flexishore_cms/observer_cms</class>

To

<class>flexishore_cms/observer</class>
answered Mar 29, 2017 at 12:07
2
  • Thanks it fix the issue just the minor error and i didn't see it.. Commented Mar 29, 2017 at 13:45
  • The error is still there , Now the module working fine, but error is not letting the page work fine. Fatal error: Call to a member function setData() on boolean in C:\xampp\htdocs\magento-1-testing\app\code\core\Mage\Adminhtml\Block\Widget\Form\Container.php on line 141 @Qaisar Satti Commented Mar 30, 2017 at 5:31

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.