2014-01-23 29 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) }} 

簡單是吧?

但是,當我顯示此頁時,我得到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> 

我添加先後被評爲用id =「search_search」和正確的相關聯的標籤,當然,我有一個輸入的字段爲令牌。

但我不明白input id="search"從哪裏來? 此外這個輸入沒有標籤?

任何想法?

+0

你定製形式[本文檔]渲染像(http://symfony.com/doc/current/cookbook/form/form_customization.html)?也許你重新定義標準輸出 –

回答

4

也許getName()返回「搜索」與內置的search表單類型衝突。

試着改變它返回別的東西......

+0

是的,如果我使用任何其他striong然後「搜索」它的作品! 但是我返回getName函數中的「搜索」,即使我使用aonther名稱作爲我的班級形式,我也有這種奇怪的行爲... – farc

+1

這個答案是正確的。因爲getName()返回「搜索」,所以呈現枝條塊「search_widget」(即搜索輸入)。不管你的類被調用什麼,但你應該確保getName()返回一個唯一的類型名稱(例如「floarc_search」)。 –

+0

好大thx爲您的anwser! – farc

相關問題