Php Symfony备用新动作
我有一个服务器,我需要存储一些图像。现在,图像可以被上传或动态创建,比如说,只需在一些默认图片中添加一些文本(因此我为此制作了一个文件Php Symfony备用新动作,php,symfony-forms,symfony-1.4,admin-generator,Php,Symfony Forms,Symfony 1.4,Admin Generator,我有一个服务器,我需要存储一些图像。现在,图像可以被上传或动态创建,比如说,只需在一些默认图片中添加一些文本(因此我为此制作了一个文件MakenewForm.php)。数据库中的表将文件名存储在本地文件系统上。现在上传很简单,我可以使用默认的新操作。为了创建图片,我做了一个新动作,比如说makenewnew和makenew都显示在列表视图中。我将newSuccess.php复制到makenewSuccess.php。现在我想要一套不同的提交按钮。我似乎不知道该怎么做。我所看到的是: <di
MakenewForm.php
)。数据库中的表将文件名存储在本地文件系统上。现在上传很简单,我可以使用默认的新操作。为了创建图片,我做了一个新动作,比如说makenew
new
和makenew
都显示在列表视图中。我将newSuccess.php
复制到makenewSuccess.php
。现在我想要一套不同的提交按钮。我似乎不知道该怎么做。我所看到的是:
<div id="sf_admin_content">
<?php include_partial('poster/form', array('poster' => $poster, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
</div>
我不知道什么是$configuration,什么是$helper。有人能告诉我他们的情况吗?我需要换哪一个,怎么换
另外,您可以推断,new
操作的提交操作只需要执行$form->save()
,但是makenew
的提交操作需要执行所有文本输入并编写一个图像文件(比如使用imagejpeg)
我需要一些实现这一目标的建议 我希望把重点放在你要找的东西上 关于
$configuration
和$helper
,您可以在cache\myapplication\dev\modules\autoMymodule\actions\actions.class.php
中找到,函数preExecute()
也用于创建它们:
$this->configuration = new mymoduleGeneratorConfiguration();
$this->helper = new mymoduleGeneratorHelper();
这些类位于apps\docdesk\modules\mymodule\lib
中。您可以在cache\myapplication\dev\modules\autoMymodule\lib
中找到基类。看看这些基类,了解它们是如何使用的,以及管理生成器提供了哪些配置函数和帮助函数
为了处理您的新操作,我不知道您正在开发的功能,因此我将尝试想象两种可能的场景。您只能使用一个表单,通过自定义小部件切换上载/创建图片的功能,覆盖代码片段中调用的模板\u form.php
,以及新操作等等,或者,按照您所遵循的方式,创建一个完全独立的操作、表单和所有需要的模板。因此,在makenewSucces.php中,可以包含一个名为
当然,您必须将模板\u 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();
}
最后,要删除图像(即文件),当删除对象(即图像名称为字段的db记录)时,必须将此代码放入模型类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);
}
我希望这能帮助你
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);
}