2015-10-07 130 views
0

我有一個表單和POST方法的問題。 我在控制器中創建一個表單是這樣的:Symfony2 POST方法控制器

$form = $this->createFormBuilder() 
     ->setAction($this->generateUrl('ricerca_index')) 
     ->setMethod('POST') 
     ->add('search', 'text',array(
       'label'=>'Cerca', 
       'required'=>false)) 
     ->add('submit', 'submit', array('label' => 'Cerca')) 
     ->getForm();  

    $name = $request->getLocale(); 
    return $this->render('DtEcBundle:Default:index.html.twig',array(
      'form' => $form->createView() 

而且我配置「ricerca_index」在我的路由文件中這樣說:

 ################################################################################ 
    #        ricerca          # 
    ################################################################################ 

ricerca_index: 
     host:  "{_locale}.{domain}" 
     locales: { it: "/ricerca.{_format}", fr: "/ricerca.{_format}", de: "/ricerca.{_format}" } 
     defaults: { _locale: "%locale%", domain: "%domain%", _format: "html",  _controller: DtEcBundle:Search:index } 
requirements: 
    _locale: "it|fr|de" 
    domain: "%domain%" 
    _format: "html|json" 
    method: "POST" 

ricerca_index_www.it: 
    path:  /ricerca.{_format} 
    host:  "www.{domain}" 
    defaults: { _locale: "%locale%", _format: "html", _controller: DtEcBundle:Search:index } 
requirements: 
    _locale: "%locale%" 
    domain: "%domain%" 
    _format: "html|json" 
    method: "POST" 

ricerca_index_nowww.it: 
    path:  /ricerca.{_format} 
    host:  "{domain}" 
    defaults: { _locale: "%locale%", _format: "html", _controller:   DtEcBundle:Search:index } 
requirements: 
    _locale: "%locale%" 
    domain: "%domain%" 
    _format: "html|json" 
    method: "POST" 

在我的目的地我頁面的控制器以這種方式編寫打印我的變量ricerca_index:

use Symfony\Component\HttpFoundation\Request; 
class SearchController extends Controller { 

public function indexAction(Request $request) { 

    $search = $request->get('search'); 

    return $this->render('DtEcBundle:Search:index.html.twig',array(
      "search" => $search, 

    )); 

} 

在樹枝文件我想打印我的變量形式「文本框「我寫這樣的代碼:

{% extends '::base.html.twig' %} 
{% block body %} 
<div class="container"> 
    {{ search }} 
</div> 

{% endblock %} 

我沒有收到錯誤,但我與轉儲變量爲空,哪裏出了問題?我是Symfony的新手..我該如何在頁面中打印我的變量?

+0

看起來你有不同程度的POST請求的搜索值。嘗試調試請求並在其中查找搜索字段。 symfony表單有一個名稱。所以當請求進入控制器時,你必須從表單名稱的請求中檢索數據。要弄清楚表單的名稱(或排除這種情況),只需查看您的html。它看起來像什麼?搜索字段的名稱屬性的值是什麼? – Alex

+0

@Alex我不忍受,「嘗試調試請求並在其中查找搜索字段」。 這是調試中的html代碼: ** ** –

+0

這就是我的意思。您應該以不同的方式檢索您的表單。要獲取搜索值,請使用以下代碼:$ request-> get('form')['search'];或$ form = $ request-> get('form'); $ search = $ form ['search']; – Alex

回答

0

只是做到這一點:

$searchForm = $request->get('form'); 
$search = $searchForm['search']; 

而不是$請求 - >獲取( '搜索');

您的文章數據看起來像這樣實際上是:

[ 
    'form' => [ 
     'search' => <search_val>, 
     <...> // other values if any 
    ] 
]