Image addField类型图像和缩略图路径

Image addField类型图像和缩略图路径,image,path,magento,thumbnails,Image,Path,Magento,Thumbnails,我有一个Magento网站商店,刚刚创建了一个带有扩展名(Modulecreator)的自定义模块。该模块带有一个标准的管理界面,可以处理文件上传。我发现如果你想显示缩略图,你可以使用'image'字段类型(addField('myfield','image'))而不是'file'类型字段 但现在我有个问题。当我上传文件时,我将它们保存在“媒体”目录中名为“幻灯片”的子目录中。但当我编辑该项目时,uploadfield旁边缩略图的图像路径设置为“media”文件夹。不是我的文件夹,因为我将其设置

我有一个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.