如何在方法获取时获取表单数据

时间:2016-06-26 13:18:55

标签: symfony

我有表单搜索,方法必须是' GET' 。问题是,当我使用GET 时,我无法访问控制器中的字段数据,但如果我使用方法POSt,我可以访问以形成filds数据。

这是控制器中的动作:

public function rechercheAction(Request $request)
{
 //....
$form = $this->createForm(BaseRechercheType::class);

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {

        $titre = $form->get('titre')->getData();
        $date = $form->get('date')->getData();
        $contenue = $form->get('contenue')->getData();
        $publier = $form->get('publier')->getData();

        $qb = $em->getRepository('AppBundle:Actualite')->listeRechercheBackend($titre, $date, $contenue, $publier);

        $entities = $paginator->paginate($qb, $request->query->get('page', 1), 10);
    }
  //.....
}

2 个答案:

答案 0 :(得分:0)

您是否尝试过如此路由注释:

/**
 * @Route("/recherche")
 * @Method({"GET","POST"})
 */
public function rechercheAction(Request $request)
{

或者也在routing.yml文件中:

# app/config.routing.yml
recherche:
    path:     /recherche
    defaults: { _controller: AppBundle:Controller:recherche }
    methods:  [GET]

对于上述" AppBundle:Controller:recherche",您应该更改' Controller'你用的是什么可能会有所不同。

试试那些。

答案 1 :(得分:0)

默认情况下,handleRequest方法查找POST参数以处理提交的表单。因此,您需要在表单类型类中将HTTP方法设置为GET。

class BaseRechercheType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->setMethod('GET');

        // ...
    }
}