2011-11-09 8 views
1

Magento Blog Module(AWブログ)の投稿に画像アップロードフィールドを作成する必要があります。 したがって、各投稿に画像が含まれている必要があります。Magentoカスタム画像のアップロードが機能しない

私は、次のファイルを編集した: /home/clients/websites/w_gale/public_html/gale/app/code/community/AW/Blog/Block/Manage/Blog/Edit/Tab/Form.php

は次のようにフィールドセットを追加しました:

このファイルの上に
$fieldset->addField('fileinputname', 'image', array(
      'label'  => Mage::helper('blog')->__('Upload image'), 
      'required' => false, 
      'name'  => 'fileinputname', 
      'required' => true, 
      'style'  => 'height:100px;border:2px solid #999;', 
    )); 

は、適切な場所で、私はこのような形式が定義された:

$form = new Varien_Data_Form(array(
      'id' => 'edit_form', 
      'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))), 
      'method' => 'post', 
      'enctype' => 'multipart/form-data', 
     ) 
    ); 
Blogcontroller.phpで

は、私はちょうど、B、次のコードを追加しましたellow the if ($data = $this->getRequest()->getPost()) { line

if(isset($_FILES['fileinputname']['name']) && (file_exists($_FILES['fileinputname']['tmp_name']))) { 
      try { 

       $uploader = new Varien_File_Uploader('fileinputname'); 

       $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); // or pdf or anything 

       $uploader->setAllowRenameFiles(true); 
       $uploader->setFilesDispersion(false); 

       $path = Mage::getBaseDir('media') . DS ; 

       $uploader->save($path, $_FILES['fileinputname']['name']); 

       $data['imageurl'] = $_FILES['fileinputname']['name']; 

      } catch(Exception $e) { 

      } 
     } else {  

      if(isset($data['fileinputname']['delete']) && $data['fileinputname']['delete'] == 1) 
       $data['imageurl'] = ''; 
      else 
       unset($data['fileinputname']); 
     } 

ただし、アップロードは機能しません。私は間違って何をしていますか? データベースの適切なフィールドに特別な行を追加しました。 フロントエンドセクションには、手動で入力するときのデータベース値が表示されます。

ありがとうございます。

答えて

2

画像をアップロードするデータヘルパーのメソッドコードです。 getBaseDir()メソッドを実装する必要があります(アップロードされたファイルを格納したいディレクトリが返されます)。

/** 
* Upload image and return uploaded image file name or false 
* 
* @throws Mage_Core_Exception 
* @param string $scope the request key for file 
* @return bool|string 
*/ 
public function uploadImage($scope) 
{ 
    $adapter = new Zend_File_Transfer_Adapter_Http(); 
    $adapter->addValidator('ImageSize', true, $this->_imageSize); 
    $adapter->addValidator('Size', true, $this->_maxFileSize); 
    if ($adapter->isUploaded($scope)) { 
     // validate image 
     if (!$adapter->isValid($scope)) { 
      Mage::throwException(Mage::helper('mycompany_mymodule')->__('Uploaded image is not valid')); 
     } 
     $upload = new Varien_File_Uploader($scope); 
     $upload->setAllowCreateFolders(true); 
     $upload->setAllowedExtensions(array('jpg', 'gif', 'png')); 
     $upload->setAllowRenameFiles(true); 
     $upload->setFilesDispersion(false); 
     if ($upload->save($this->getBaseDir())) { 
      return $upload->getUploadedFileName(); 
     } 
    } 
    return false; 
} 
0

あなたは正しいコードを使用しています。私は正しいMYSQLデータ型を使用して問題を解決しました。私は「VARCHAR(255)」に「テキスト」からのデータ型を変更した場合、それは問題

を解決し、...あなたは、次のコードを追加していることを確認してください:/アプリ/コードで

$form = new Varien_Data_Form(array(
     'id' => 'edit_form', 
     'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))), 
     'method' => 'post', 
     'enctype' => 'multipart/form-data', 
    ) 
); 

を/community/AW/Blog/Block/Manage/Blog/Edit/Form.php アプリ/コード/コミュニティ/ AW /ブログ/ブロック/管理/ブログ/編集/タブ/ Form.php

関連する問題