-1
我是新手,需要一些幫助。Symfony 2驗證表格
我嘗試驗證表單時出現問題。
下面我不同的文件:
AmiAttrbType.php
<?php
namespace Site\TestBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class AmiAttrbType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email','text', array(
'required' => true,
'attr' => array(
'placeholder' => 'Adresse Mail'
)))
->add('produitsAttrb','collection', array(
'type' => new ProduitAttrbType()
));
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Site\TestBundle\Entity\Ami'
));
}
/**
* @return string
*/
public function getName()
{
return 'site_testbundle_amiAttrb';
}
}
ProduitAttrbType.php
<?php
namespace Site\TestBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class ProduitAttrbType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom', 'hidden')
->add('qte','integer', array(
'required' => true
));
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Site\TestBundle\Entity\ProduitAttrb'
));
}
/**
* @return string
*/
public function getName()
{
return 'site_testbundle_produitAttrb';
}
}
Controller.php這樣
public function attrbAction(Event $commande)
{
$ami = new Ami;
foreach($commande->getProduits() as $produit)
{
$ami->addProduitsAttrb(new ProduitAttrb($produit->getNom(),0));
}
$form = $this->createForm(new AmiAttrbType(),$ami);
$request = $this->get('request');
if($this->get('request')->getMethod() == 'POST')
{
$form->bind($request);
if ($form->isValid())
{
$commande->addAmi($ami);
$em = $this->getDoctrine()->getManager();
$em->merge($commande);
$em->flush();
return $this->render('SiteTestBundle:Test:attrb.html.twig', array('commande' =>$commande, 'form' => $form->createView()));
}
}
return $this->render('SiteTestBundle:Test:attrb.html.twig', array('commande' =>$commande, 'form' => $form->createView()));
}
attrb.html.twig:
<tr>
<td class="attrb-new">
<div class="row">
<div class="col-xs-12">
{{ form_widget(form.email) }}
</div>
</div>
</td>
{% for produit in form.produitsAttrb %}
<td class="attrb-newQte">
{{ form_widget(produit.qte) }}
</td>
{% endfor %}
{{ form_rest(form) }}
</tr>
我有兩個情況: 如果在控制器中,我使用綁定($要求),我有兩個錯誤:
- Email empty (email has been entered)
- Token invalid (token exist in my source code)
我不明白爲什麼我有這樣的錯誤。
如果我使用handleRequest($request)
,什麼也沒有發生。
我的symfony版本更高2.3但binds一直工作。
當我刪除這部分在我的樹枝代碼,我有bind($request)
:
{% for produit in form.produitsAttrb %}
<td class="attrb-newQte">
{{ form_widget(produit.qte) }}
</td>
{% endfor %}
它的作品。
請你幫幫我。
預先感謝您。
關於