2017-07-11 5 views
0

MagentoでCMSページの追加フィールドを作成するために、さまざまなチュートリアルを使用しました。CMSページのMagento画像アップロードのカスタムフィールド - CMSページのエラーと保存された画像がデータベースに保存されない

これらは、テキスト、テキストエリア、画像アップロードフィールドで構成されています。私は正常にテキストフィールドからのデータを格納するために管理しますが、している私は、画像をアップロードすると、私は次のエラー見ていますページを保存するとき:私は私のbeforeSaveクラスにエラーが絞られている

Notice: Array to string conversion in /var/www/html/magento/lib/Varien/Data/Form/Element/Image.php on line 56

、制御アップロードした画像をCMSページに保存することはできませんが、私の人生の間、アップロードされた画像のすべての画像フィールドを正しくチェックしてデータベースに保存する方法を見つけられません。

ここに私のObserver.phpとConfig.xmlファイルがあります。誰かが私のObserverクラスで問題の方向に私を指すことができれば、それは非常に高く評価されるでしょう。

class Ddog_Customcms_Model_Observer 
{ 
    public function cmsField($observer) 
    { 
     //get CMS model with data 
     $model = Mage::registry('cms_page'); 
     //get form instance 
     $form = $observer->getForm(); 
     //create new custom fieldset 'atwix_content_fieldset' 
     $fieldset = $form->addFieldset('Ddog_content_fieldset_header', array('legend'=>Mage::helper('cms')->__('Page Header'),'class'=>'fieldset-wide')); 
      //add new field 
      $fieldset->addField('content_custom_banner', 'image', array(
       'name'  => 'content_custom_banner', 
       'label'  => Mage::helper('cms')->__('Banner Image'), 
       'title'  => Mage::helper('cms')->__('Banner Image'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomBanner() 
      )); 
      $fieldset->addField('content_custom_description', 'text', array(
       'name'  => 'content_custom_description', 
       'label'  => Mage::helper('cms')->__('Description'), 
       'title'  => Mage::helper('cms')->__('Description'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomDescription() 
      )); 
     $fieldset = $form->addFieldset('Ddog_content_fieldset_items', array('legend'=>Mage::helper('cms')->__('Required Items'),'class'=>'fieldset-half')); 
      $fieldset->addField('content_custom_ingredients', 'textarea', array(
       'name'  => 'content_custom_ingredients', 
       'label'  => Mage::helper('cms')->__('Ingredients'), 
       'title'  => Mage::helper('cms')->__('Ingredients'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomIngredients() 
      )); 
      $fieldset->addField('content_custom_supplies', 'textarea', array(
       'name'  => 'content_custom_supplies', 
       'label'  => Mage::helper('cms')->__('Supplies'), 
       'title'  => Mage::helper('cms')->__('Supplies'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomSupplies() 
      )); 
      $fieldset->addField('content_custom_colours_tinted', 'textarea', array(
       'name'  => 'content_custom_colours_tinted', 
       'label'  => Mage::helper('cms')->__('Colours Tinted'), 
       'title'  => Mage::helper('cms')->__('Colours Tinted'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomColoursTinted() 
      )); 
     $fieldset = $form->addFieldset('Ddog_content_fieldset_method_step1', array('legend'=>Mage::helper('cms')->__('Method - Step 1'),'class'=>'fieldset-wide')); 
      $fieldset->addField('content_custom_step1_instructions', 'textarea', array(
       'name'  => 'content_custom_step1_instructions', 
       'label'  => Mage::helper('cms')->__('Instructions'), 
       'title'  => Mage::helper('cms')->__('Instructions'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomStep1Instructions() 
      )); 
      $fieldset->addField('content_custom_step1_image1', 'image', array(
        'name'  => 'content_custom_step1_image1', 
        'label'  => Mage::helper('cms')->__('Image'), 
        'title'  => Mage::helper('cms')->__('Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomStep1Image1() 
       )); 
      $fieldset->addField('content_custom_step1_image2', 'image', array(
        'name'  => 'content_custom_step1_image2', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomStep1Image2() 
       )); 
      $fieldset->addField('content_custom_step1_image3', 'image', array(
        'name'  => 'content_custom_step1_image3', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomStep1Image3() 
       )); 
     $fieldset = $form->addFieldset('Ddog_content_fieldset_method_step2', array('legend'=>Mage::helper('cms')->__('Method - Step 2'),'class'=>'fieldset-wide')); 
      $fieldset->addField('content_custom_step2_instructions', 'textarea', array(
       'name'  => 'content_custom_step2_instructions', 
       'label'  => Mage::helper('cms')->__('Instructions'), 
       'title'  => Mage::helper('cms')->__('Instructions'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomStep2Instructions() 
      )); 
      $fieldset->addField('content_custom_step2_image1', 'image', array(
        'name'  => 'content_custom_step2_image1', 
        'label'  => Mage::helper('cms')->__('Image'), 
        'title'  => Mage::helper('cms')->__('Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomStep2Image1() 
       )); 
      $fieldset->addField('content_custom_step2_image2', 'image', array(
        'name'  => 'content_custom_step2_image2', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomStep2Image2() 
       )); 
      $fieldset->addField('content_custom_step2_image3', 'image', array(
        'name'  => 'content_custom_step2_image3', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomStep2Image3() 
       )); 
     $fieldset = $form->addFieldset('Ddog_content_fieldset_method_step3', array('legend'=>Mage::helper('cms')->__('Method - Step 3'),'class'=>'fieldset-wide')); 
      $fieldset->addField('content_custom_step3_instructions', 'textarea', array(
       'name'  => 'content_custom_step3_instructions', 
       'label'  => Mage::helper('cms')->__('Instructions'), 
       'title'  => Mage::helper('cms')->__('Instructions'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomStep3Instructions() 
      )); 
      $fieldset->addField('content_custom_step3_image1', 'image', array(
        'name'  => 'content_custom_step3_image1', 
        'label'  => Mage::helper('cms')->__('Image'), 
        'title'  => Mage::helper('cms')->__('Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomstep3Image1() 
       )); 
      $fieldset->addField('content_custom_step3_image2', 'image', array(
        'name'  => 'content_custom_step3_image2', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomstep3Image2() 
       )); 
      $fieldset->addField('content_custom_step3_image3', 'image', array(
        'name'  => 'content_custom_step3_image3', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomstep3Image3() 
       )); 
     $fieldset = $form->addFieldset('Ddog_content_fieldset_method_step4', array('legend'=>Mage::helper('cms')->__('Method - Step 4'),'class'=>'fieldset-wide')); 
      $fieldset->addField('content_custom_step4_instructions', 'textarea', array(
       'name'  => 'content_custom_step4_instructions', 
       'label'  => Mage::helper('cms')->__('Instructions'), 
       'title'  => Mage::helper('cms')->__('Instructions'), 
       'disabled' => false, 
       //set field value 
       'value'  => $model->getContentCustomStep4Instructions() 
      )); 
      $fieldset->addField('content_custom_step4_image1', 'image', array(
        'name'  => 'content_custom_step4_image1', 
        'label'  => Mage::helper('cms')->__('Image'), 
        'title'  => Mage::helper('cms')->__('Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomstep4Image1() 
       )); 
      $fieldset->addField('content_custom_step4_image2', 'image', array(
        'name'  => 'content_custom_step4_image2', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomstep4Image2() 
       )); 
      $fieldset->addField('content_custom_step4_image3', 'image', array(
        'name'  => 'content_custom_step4_image3', 
        'label'  => Mage::helper('cms')->__('Additional Image'), 
        'title'  => Mage::helper('cms')->__('Additional Image'), 
        'disabled' => false, 
        //set field value 
        'value'  => $model->getContentCustomstep4Image3() 
       )); 
    } 

    public function addFormEnctype(Varien_Event_Observer $observer) 
    { 
     try { 
      $block = $observer->getEvent()->getBlock(); 

      if ($block instanceof Mage_Adminhtml_Block_Cms_Page_Edit_Form) { 

       $form = $block->getForm(); 
       $form->setData('enctype', 'multipart/form-data'); 
       $form->setUseContainer(true); 
      } 
     } catch(Exception $e) { 
      Mage::logException($e); 
     } 
    } 

    public function beforeSave(Varien_Event_Observer $observer) 
    { 
     try { 
      $model = $observer->getEvent()->getPage(); 

      $request = $observer->getEvent()->getRequest(); 
      $data = $request->getPost(); 

      $path = Mage::getBaseDir('media') . '/wysiwyg/'; //. DS . self::MEDIA_DIR; 
      if (! file_exists($path)) { 
       mkdir($path, 0777, true); 
      } 

      $imagesAttributesNames = array('content_custom_banner','content_custom_step1_image1','content_custom_step1_image2','content_custom_step1_image3','content_custom_step2_image1','content_custom_step2_image2','content_custom_step2_image3','content_custom_step3_image1','content_custom_step3_image2','content_custom_step3_image3','content_custom_step4_image1','content_custom_step4_image2','content_custom_step4_image3'); 
      $images = array(); 
      foreach($imagesAttributesNames as $imageAttributeName) { 

       $uploadedImage = $_FILES[$imageAttributeName]; 

       if ($uploadedImage['name'] > '1') { 
        Mage::log('uploading'); 
        $uploader = new Varien_File_Uploader($imageAttributeName); 
        Mage::log('set'); 
        $uploader->setAllowedExtensions(array('jpg', 'jpeg', 'gif', 'png', 'bmp')); 
        $uploader->setAllowRenameFiles(true); 
        $uploader->setFilesDispersion(false); 
        $uploader->save($path, $uploadedImage['name']); 
        Mage::log($uploader); 
        $model->setData($imageAttributeName, 'wysiwyg/' . $uploader->getUploadedFileName()); //$path.'/'.$uploader->getUploadedFileName()); 
       } else { 
        if(isset($data[$imageAttributeName]['delete']) && $data[$imageAttributeName]['delete'] == 1) {       
         $data[$imageAttributeName] = ''; 
         $model->setData($imageAttributeName, $data[$imageAttributeName]); 
        } else { 
         unset($data[$imageAttributeName]); 
         $model->setData($imageAttributeName, implode($request->getPost($imageAttributeName))); 
        } 
       } 
      } 

     } catch(Exception $e) { 
      Mage::logException($e); 
     } 
    } 
} 

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Ddog_Customcms> 
      <version>1.0.2</version> 
     </Ddog_Customcms> 
    </modules> 
    <global> 
     <page> 
      <layouts> 
       <Ddog_custom_page> 
        <label>Recipe Steps</label> 
        <template>page/recipe-steps.phtml</template> 
       </Ddog_custom_page> 
      </layouts> 
     </page> 
     <models> 
      <Ddog_Customcms> 
       <class>Ddog_Customcms_Model</class> 
      </Ddog_Customcms> 
     </models> 
     <events> 
      <adminhtml_block_html_before> 
       <observers> 
        <Ddog_Customcms_cms_page_edit_form_add_enctype> 
         <type>singleton</type> 
         <class>Ddog_Customcms_Model_Observer</class> 
         <method>addFormEnctype</method> 
        </Ddog_Customcms_cms_page_edit_form_add_enctype> 
       </observers> 
      </adminhtml_block_html_before> 
      <cms_page_prepare_save> 
       <observers> 
        <Ddog_Customcms_cms_page_prepare_save> 
         <type>singleton</type> 
         <class>Ddog_Customcms_Model_Observer</class> 
         <method>beforeSave</method> 
        </Ddog_Customcms_cms_page_prepare_save> 
       </observers> 
      </cms_page_prepare_save> 
      <adminhtml_cms_page_edit_tab_content_prepare_form> 
       <observers> 
        <Ddog_Customcms_page_edit_tab_content> 
         <type>singleton</type> 
         <class>Ddog_Customcms_Model_Observer</class> 
         <method>cmsField</method> 
        </Ddog_Customcms_page_edit_tab_content> 
       </observers> 
      </adminhtml_cms_page_edit_tab_content_prepare_form> 
     </events> 
     <resources> 
      <Ddog_Customcms_setup> 
       <setup> 
        <module>Ddog_Customcms</module> 
       </setup> 
      </Ddog_Customcms_setup> 
     </resources> 
    </global> 
</config> 

答えて

0

あなたは、データを保存する前に文字列に配列から画像形式を変更する必要があります。この問題を解決するには、 'beforeSave'関数に '$model->setData($data);'の前に次のコードを挿入してください。

コードは次のとおりです。

if(isset($data['image_url']['value'])) // Use your image_field_name instead of image_url i.e. content_custom_step1_image1 
{ 
    $data['image_url'] = $data['image_url']['value']; // Use image_field_id instead of image_url i.e. content_custom_step1_image1 
} 
関連する問題