Image addField类型图像和缩略图路径
我有一个Magento网站商店,刚刚创建了一个带有扩展名(Modulecreator)的自定义模块。该模块带有一个标准的管理界面,可以处理文件上传。我发现如果你想显示缩略图,你可以使用'image'字段类型(addField('myfield','image'))而不是'file'类型字段 但现在我有个问题。当我上传文件时,我将它们保存在“媒体”目录中名为“幻灯片”的子目录中。但当我编辑该项目时,uploadfield旁边缩略图的图像路径设置为“media”文件夹。不是我的文件夹,因为我将其设置为“媒体/幻灯片/” 我使用以下代码:Image addField类型图像和缩略图路径,image,path,magento,thumbnails,Image,Path,Magento,Thumbnails,我有一个Magento网站商店,刚刚创建了一个带有扩展名(Modulecreator)的自定义模块。该模块带有一个标准的管理界面,可以处理文件上传。我发现如果你想显示缩略图,你可以使用'image'字段类型(addField('myfield','image'))而不是'file'类型字段 但现在我有个问题。当我上传文件时,我将它们保存在“媒体”目录中名为“幻灯片”的子目录中。但当我编辑该项目时,uploadfield旁边缩略图的图像路径设置为“media”文件夹。不是我的文件夹,因为我将其设置
$fieldset->addField('filename', 'image', array(
'label' => Mage::helper('slideshow')->__('File'),
'required' => true,
'name' => 'filename',
));
我试图在数组中设置一个“path”键,但Magento没有选择它。讨厌Magento缺乏对良好且易于使用的文档的支持
也许你能帮我找到解决办法?好的,我找到了解决问题的办法。我更改了创建“图像”字段类型的文件。该文件位于/lib/Varien/Data/Form/Element/Image.php。查看代码时,您会看到最后一个函数是从给定的数据数组中获取键“name”:
public function getName()
{
return $this->getData('name');
}
所以我想,如果我使用另一个函数来获取“路径”索引会怎么样:
public function getPath()
{
return $this->getData('path');
}
接下来,当您转到函数_getUrl()时,它是上载图像的预览URL,您需要对其进行以下更改(仅在“$this->getValue()”之前添加函数getPath()):
我不认为这是解决这个问题的最优雅的方法,但它满足了我对这个项目的需求。如果其他人也面临这个问题,我希望我的解决方案对他们有效…没错,这不是解决这个问题的最优雅的方法,但它是有效的;) 更优雅的方法是在自己的模块中创建自己的图像字段类型。 我已经在StackOverflow帖子上解释了这样做的方法: 我希望它能帮助您以更优雅的方式完成此任务;)
Hugues.另一个解决方案是在magento调用$form->setValues(…)后编辑路径 基本上,在返回之前,做如下事情:
$p = $form->getElement('filename')->getValue();
$form->getElement('filename')->setValue('media/slides' . $p);
.gondo嗯,我刚开始使用magento模块开发时就遇到过这个问题。 使用Varien_File_Uploader将为您提供保存文件的路径及其名称(使用索引“File”)。 所以,在将信息保存到数据库之前,在数组中创建一个索引(使用表中的列名)(在控制器保存操作中表单提交时保留Post数据) 例如:
$upload = new Varien_File_Uploader($_FILE['custom_image']['name']);
$p = $upload->save('in/to/the/folder');
$data = $this->getRequest()->getPost();
$data['custom_image'] = 'myfolder'. DS .'subfolder'.$p['file'] // path return after save through Varien_File_Uploader.
保存操作后,它肯定会将文件路径信息存储到表中相应的列中。
希望有帮助。这更优雅!只需将“介质”从新值中删除,因为Magento会自动将/media前置到文件路径。因此它将是$form->getElement('filename')->setValue('slides/'。$p);
$upload = new Varien_File_Uploader($_FILE['custom_image']['name']);
$p = $upload->save('in/to/the/folder');
$data = $this->getRequest()->getPost();
$data['custom_image'] = 'myfolder'. DS .'subfolder'.$p['file'] // path return after save through Varien_File_Uploader.