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的新手..我该如何在页面中打印我的变量?
看起来你有不同程度的POST请求的搜索值。尝试调试请求并在其中查找搜索字段。 symfony表单有一个名称。所以当请求进入控制器时,你必须从表单名称的请求中检索数据。要弄清楚表单的名称(或排除这种情况),只需查看您的html。它看起来像什么?搜索字段的名称属性的值是什么? – Alex
@Alex我不忍受,“尝试调试请求并在其中查找搜索字段”。 这是调试中的html代码: ** ** –
这就是我的意思。您应该以不同的方式检索您的表单。要获取搜索值,请使用以下代码:$ request-> get('form')['search'];或$ form = $ request-> get('form'); $ search = $ form ['search']; – Alex