在magento自定义模块表单中成功上传文件后,如何显示上传的文件名或链接。我附上了截图以便清楚理解。请帮助
问问题
4858 次
2 回答
13
为此,您需要为file
表单中的输入使用自定义渲染器。为此创建以下类:
<?php
class {{Namespace}}_{{Module}}_Block_Adminhtml_{{Entity}}_Helper_File extends Varien_Data_Form_Element_Abstract{
public function __construct($data){
parent::__construct($data);
$this->setType('file');
}
public function getElementHtml(){
$html = '';
$this->addClass('input-file');
$html.= parent::getElementHtml();
if ($this->getValue()) {
$url = $this->_getUrl();
if( !preg_match("/^http\:\/\/|https\:\/\//", $url) ) {
$url = Mage::getBaseUrl('media').'{{entity}}'.'/'.'file' . $url; //replace this with the path to the file if you upload it somewhere else
}
$html .= '<br /><a href="'.$url.'">'.$this->_getUrl().'</a> ';
}
$html.= $this->_getDeleteCheckbox();
return $html;
}
protected function _getDeleteCheckbox(){
$html = '';
if ($this->getValue()) {
$label = Mage::helper('{{module}}')->__('Delete File');
$html .= '<span class="delete-image">';
$html .= '<input type="checkbox" name="'.parent::getName().'[delete]" value="1" class="checkbox" id="'.$this->getHtmlId().'_delete"'.($this->getDisabled() ? ' disabled="disabled"': '').'/>';
$html .= '<label for="'.$this->getHtmlId().'_delete"'.($this->getDisabled() ? ' class="disabled"' : '').'> '.$label.'</label>';
$html .= $this->_getHiddenInput();
$html .= '</span>';
}
return $html;
}
protected function _getHiddenInput(){
return '<input type="hidden" name="'.parent::getName().'[value]" value="'.$this->getValue().'" />';
}
protected function _getUrl(){
return $this->getValue();
}
public function getName(){
return $this->getData('name');
}
}
然后您需要告诉您的 for 将其用于文件输入。因此,在您的编辑表单选项卡中,在定义 fiedlset 后立即添加:
$fieldset->addType('file', Mage::getConfig()->getBlockClassName('{{module}}/adminhtml_{{entity}}_helper_file'));
替换{{Namespace}}
, {{Module}} 并{{Entity}}
用适当的值保持大小写。
Namespace
是您的模块的名称空间(D'uh),Module
是您的模块的名称(再次是D'uh),Entity 是您管理的内容。可以是Article
, News
, Files
....
[编辑]
您可以使用此模块创建器构建您的模块。它会处理这类问题。
注意:我希望这不是自我推销。扩展是免费的,我没有从中获得任何经济利益。
于 2013-10-10T06:41:59.673 回答
0
好的,我自己找到了答案...
只需创建一个文件并使用magento核心抽象类扩展它Namespace_ModuleName_Block_Adminhtml_Modulename_Helper_File extends Varien_Data_Form_Element_Abstract
并将以下代码添加到管理表单
$fieldset = $form->addFieldset('Module_form', array('legend'=>Mage::helper('Module')->__('Video information')));
$fieldset->addType('file', Mage::getConfig()->getBlockClassName('Module/adminhtml_Module_helper_file')); /* line added */
于 2013-10-10T06:38:18.293 回答