2014-01-23 2 views
1

Использования Symfony 2.3 Я пытаюсь использовать тупую форму на основе формы класса (без лица), как это:symfony2 нежелательное поле отображается в форме?

SearchType.php

<?php 

namespace Floarc\ParkingBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class SearchType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('search', 'text'); 
    } 

    public function getName() 
    { 
     return 'search'; 
    } 
} 

И это то, что я попал в моем контроллере:

/** 
    * @Route("/search", name="_farc_search") 
    * @Template() 
    */ 
    public function searchAction(Request $request) 
    { 
     $form = $this->createForm(new SearchType()); 
     $form->handleRequest($request); 


     return array('form' => $form->createView()); 
    } 

И на мой взгляд

{{ form(form) }} 

Simple не так ...

Но когда я показываю эту страницу, я получаю только 2 поля вместо одного!

Вот код формы:

<form name="search" method="post" action=""> 
    <input type="search" id="search" name="search" required="required"> 
    <div> 
     <label for="search_search" class="required">Search</label> 
     <input type="text" id="search_search" name="search[search]" required="required"> 
    </div> 
    <input type="hidden" id="search__token" name="search[_token]" value="oMyq2WORCXyD97WKLb309F0pR1NpDkvVyi8FgqilUzo"> 
</form> 

поле я добавил был назван с идентификатором = «search_search» и правильной связанной этикеткой, и, конечно, у меня есть вход для токена.

Но я не понимаю, откуда пришел input id="search"? Кроме того, этот вход не имеет метки?

Любые идеи?

+0

ли вы настроить форму рендеринга, как и в [этой документации] (http://symfony.com/doc/current/cookbook/form/form_customization.html)? Возможно, вы переопределите стандартный вывод –

ответ

4

Возможно getName(), что возвращает «поиск» конфликтов со встроенным search вид формы.

Попробуйте изменить его вернуть что-то еще ...

+0

Да, если я использую другие striong, тогда «поиск» работает! Но я возвращаю «поиск» в funntion getName, даже если я использую имя aonther для моей классной формы. У меня такое странное поведение ... – farc

+1

Этот ответ верный. Поскольку getName() возвращает «поиск», выводится блок Twig «search_widget» (т. Е. Ввод поиска). Неважно, что вызван ваш класс, но вы должны убедиться, что getName() возвращает уникальное имя типа (например, «floarc_search»). –

+0

Хорошо, большой тх для вашего андерсера! – farc

Смежные вопросы