【发布时间】:2017-02-17 10:40:45
【问题描述】:
大家好,我正在使用 Symfony 进行一个新项目,当他们有输入文件时,我在编辑视图时遇到了一些困难,当我打开 un 产品的编辑视图时,我的名称输入与产品名称水合,输入价格与产品价格但照片输入文件为空:s
在修改持久化之前我该如何处理这个输入文件
我的表单生成器
class ProductEditType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name',TextType::class)
->add('price',TextType::class)
->add('Photo',PhotoType::class)
->add('enregistrer',SubmitType::class);
}
控制器
public function editProductAction($id, Request $request){
$product = new Product();
$repository=$this->getDoctrine()->getManager()->getRepository('MyProjectProductBundle:Product');
$product= $repository->find($id);
$form=$this->get('form.factory')->create(ProductEditType::class,$product);
if($request->isMethod('post') && $form->handleRequest($request)->isValid()){
$em=$this->getDoctrine()->getManager();
$em->persist($product);
$em->flush();
return $this->redirectToRoute('my_project_backoffice_product', array('id'=>$product->getId()));
}
return $this->render('MyProjectBackofficeBundle:Backoffice:editproduct.html.twig',array('form'=>$form->createView(),'product'=>$product));
}
照片类型
class PhotoType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('file', FileType::class) ;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyProject\ProductBundle\Entity\Photo'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'myproject_productbundle_photo';
}
树枝视图
<div class="well">
{{ form_start(form) }}
<div class="container4_in">
<div class="gri4">
<div class="grid2">
<div class="form_elem_wrraper">
<div class="row_form">
{{ form_label(form.name, "Name ") }}
{# Génération de l'input. #}
{{ form_widget(form.name,{ 'attr': {'class' :'input', 'placeholder': "Entrez le nom de l'auteur"}}) }}
</div>
</div></div>
<div class="grid2">
<div class="form_elem_wrraper">
<div class="row_form">
{{ form_label(form.price, "Price ") }}
{# Génération de l'input. #}
{{ form_widget(form.price,{ 'attr': {'class' :'input', 'placeholder': "Entrez le nom de l'auteur"}}) }}
</div>
<div class="row_form">
{{ form_label(form.Photo, "Photo") }}
{# Génération de l'input. #}
{{ form_widget(form.Photo) }}
</div>
</div>
</div>
</div>
</div>
{# Pour le bouton, pas de label ni d'erreur, on affiche juste le widget #}
{{ form_widget(form.enregistrer,{'attr': {'class': 'btn_bleu btn_submit_form'}}) }}
{# Fermeture de la balise <form> du formulaire HTML #}
{{ form_end(form) }}
</form>
我需要你的帮助,谢谢
【问题讨论】: