我是symfony2的新手。
我正在研究搜索功能,这是我在indexAction中的代码:
/**
* @Route("/admin/users/", name="userspage")
*/
public function indexAction(Request $request)
{
$repo = $this->getDoctrine()->getRepository('AppBundle:User');
$users = $repo->getUsers();
//create
$form = $this->createForm(new SearchType());
if ($form->handleRequest($request)->isSubmitted()) {
if($form->isValid()){
return new Response("Valid");
} else {
return new Response("Not Valid");
}
}
return $this->render('AppBundle:User:index.html.twig', array(
'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
'active_nav' => 'users',
'users' => $users,
'form' => $form->createView(),
));
}
这是我的FormType:
class SearchType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('term', 'text' , array('attr'=> array('placeholder'=>
'Enter name to search', 'class' => 'form-control'),
'label' => 'Search: '
));
}
public function getName()
{
return 'user_search';
}
}
以下是我呈现表单的方式:
<div class="row row-padding no-gutter">
<form action="{{ path('userspage') }}" method="GET">
<div class="col-lg-1">
{{ form_label(form.term) }}
</div>
<div class="col-lg-4">
{{ form_widget(form.term) }}
</div>
<div class="col-lg-4">
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i> Search</button>
</div>
{{ form_rest(form) }}
</form>
</div>
我的问题是,表单永远不会有效,永远不会被提交。为什么会这样?
感谢。
答案 0 :(得分:2)
默认情况下,表单的方法是POST。您可以使用T const*
或将->setMethod('GET')
添加到选项中,以使表单使用GET方法。
还建议使用method => 'GET'
和{{ form_start(form) }}
代替硬编码的html标记,因为这样可以确保您的方法正常。
有关详细信息,请参阅http://symfony.com/doc/current/book/forms.html#changing-the-action-and-method-of-a-form。