media目录要777权限,才能上传成功
修改 /app/code/local/Xinson/News/etc/config.xml
<modules>
<Xinson_News>
<version>0.1.1</version>
</Xinson_News>
</modules>
数据库更新文件
/app/code/local/Xinson/News/sql/news_setup/mysql4-upgrade-0.1.0-0.1.1.php
<?php
/* @var Mage_Core_Model_Resource_Setup $this */
$this->run("
ALTER TABLE `news` ADD `filename` VARCHAR (50) NOT NULL DEFAULT '' AFTER `title`;
");
修改编辑区域
/app/code/local/Xinson/News/Block/Adminhtml/News/Edit/Tab/Form.php
<?php
class Xinson_News_Block_Adminhtml_News_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm()
{
$model = Mage::registry('news_data');
$form = new Varien_Data_Form();
$fieldset = $form->addFieldset('news_form', array('legend'=>Mage::helper('news')->__('News information')));
if ($model->getNewsId()) {
$fieldset->addField('news_id', 'hidden', array(
'name' => 'news_id',
));
}
$fieldset->addField('title', 'text', array(
'name' => 'title',
'label' => Mage::helper('news')->__('News Title'),
'title' => Mage::helper('news')->__('News Title'),
'required' => true,
));
$fieldset->addField('is_active', 'select', array(
'name' => 'is_active',
'label' => Mage::helper('news')->__('Status'),
'title' => Mage::helper('news')->__('News Status'),
'required' => true,
'options' => $model->getAvailableStatuses(),
));
//新加的
//小图路径
$fieldset->addType('image', Mage::getConfig()->getBlockClassName('news/adminhtml_news_helper_image'));
//输入框
$fieldset->addField('filename', 'image', array(
'label' => Mage::helper('news')->__('File'),
'required' => false,
'name' => 'filename',
));
$fieldset->addField('content', 'editor', array(
'name' => 'content',
'label' => Mage::helper('news')->__('Content'),
'title' => Mage::helper('news')->__('Content'),
'required' => true,
'style' => 'width:700px; height:300px;',
));
$form->setValues($model->getData());
$this->setForm($form);
return parent::_prepareForm();
}
}
修改config配置文件(上传文件保存的目录)
<config>
......
<default>
<news>
<general>
<image_folder>news</image_folder>
<news>no_image.jpg</news>
</general>
</news>
</default>
</config>
加Image文件重写原来Image,/app/code/local/Xinson/News/Block/Adminhtml/News/Helper/Image.php
<?php
class Xinson_News_Block_Adminhtml_News_Helper_Image extends Varien_Data_Form_Element_Image
{
protected function _getUrl()
{
$url = false;
if ($this->getValue()) {
$url = Mage::getBaseUrl('media') . trim(Mage::getStoreConfig('news/general/image_folder'), ' /\\') . '/' . $this->getValue();
}
return $url;
}
}
/app/code/local/Xinson/News/Model/Mysql4/News.php 模型添加保存方法
//在保存前操作
protected function _beforeSave(Mage_Core_Model_Abstract $object)
{
/* image */
$value = $object->getFilename();
$path = Mage::getBaseDir('media') . DS . trim(Mage::getStoreConfig('news/general/image_folder'), ' /\\') . DS;
if (is_array($value) && !empty($value['delete'])) {
@unlink($path . $value['value']);
$object->setFilename('');
return $this;
}
if (empty($_FILES['filename']['name'])) {
if (is_array($value)) {
$object->setFilename($value['value']);
}
return $this;
}
try {
$uploader = new Varien_File_Uploader('filename');
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png', 'bmp'));
$uploader->setAllowRenameFiles(true);
$uploader->save($path);
$object->setFilename($uploader->getUploadedFileName());
} catch (Exception $e) {
$object->unsFilename();
throw $e;
//return $this;
}
return $this;
}
源码 http://share.weiyun.com/f4bf2dbd350e9364839da01c18470cb9