我有表单搜索,方法必须是' 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);
}
//.....
}
答案 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');
// ...
}
}