我希望能够很好地专注于您正在寻找的东西。
关于$configuration
和$helper
,您可以在cache\mypplication\dev\modules\autoMymodule\actions\actions.class.php
函数中找到preExecute()
也用于创建它们:
$this->configuration = new mymoduleGeneratorConfiguration();
$this->helper = new mymoduleGeneratorHelper();
这些类在apps\docdesk\modules\mymodule\lib
. 您可以在cache\mypplication\dev\modules\autoMymodule\lib
. 查看这些基类以了解如何使用以及管理生成器提供哪些配置函数和辅助函数。
为了处理您的新操作,我不知道您正在开发的功能,因此我将尝试想象两种可能的情况。您只能使用一个表单来通过自定义小部件切换上传/创建图片的功能,覆盖模板_form.php
,在您的片段中调用,以及新的操作等等,或者,这就是您所遵循的方式,创建一个完全独立的动作、表格和所有需要的模板。因此,在您的 makenewSucces.php 中,您可以包含一个名为 _makeform.php 的模板
<?php include_partial('poster/makeform', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
当然,您必须将模板作为每个新的或覆盖的模板_makeform.php
放入。apps\docdesk\modules\mymodule\template
我不太了解您对图像保存的麻烦...我想您是在询问图像的保存链以及如何以及在何处可以管理所需内容。要添加小部件以在您的PosterForm
类中上传图像,您可以使用这样的片段,我们假设photo
作为小部件名称,根据模式字段photo: { type: varchar(255), required: true }
,这当然是自定义的:
public function configure()
{
$photo = $this->getObject()->getPhoto(); // get the photo name
$photo = sfConfig::get('sf_upload_image_dir').$photo;
$this->widgetSchema['photo'] = new sfWidgetFormInputFileEditable(array(
'label' => 'Photo',
'file_src' => $photo,
'is_image' => true,
'edit_mode' => !$this->isNew(),
'delete_label' => 'check to remove',
'template' => '<div>%input%<br/><br/>%file%<br/><br/>%delete%<p>%delete_label%<br/><p></div>'
));
$this->validatorSchema['photo'] = new sfValidatorFile(array(
'required' => true,
'path' => sfConfig::get('sf_upload_image_dir'),
'mime_categories' => array('web_images' => array(
'image/jpeg',
'image/pjpeg',
'image/png',
'image/x-png'
)),
'mime_types' => 'web_images',
));
$this->validatorSchema['photo_delete'] = new sfValidatorPass();
}
请注意,我的设置upload_image_dir
是%SF_UPLOAD_DIR%/images/
Symfony 将为您上传并保存图像!
然后,您可以根据需要覆盖该doSave
函数,将相同的函数放在您的PosterForm
类中:
protected function doSave($con = null)
{
$delete = $this->getValue('photo_delete');
if ( $delete )
{
// ...
}
$upload = $this->getValue('photo');
if ( $upload )
{
// ...
}
return parent::doSave($con);
}
最后要删除您的图像,即文件,当您删除对象时,即图像名称为字段的数据库记录,您必须将此代码放在模型类中Poster
:
public function delete(PropelPDO $con = null) // using Propel
{
$photo = sfConfig::get('sf_upload_image_dir').$this->getPhoto();
if ( file_exists($photo) )
unlink($photo);
return parent::delete($con);
}
我希望这可以帮助你。