ViciousAmateur:Default:Index Controller/action に関連するビューで、ページ分割された結果をフィルタリングするフォーム (KnpPaginatorBundle) を追加したいと考えています。コントローラーでフォームを作成し、フォーム変数でビューを返します。(ああ..フォームをビューに直接配置すると、期待どおりに機能します)。
/**
* @Route("/{page}", defaults={"page" = 1}, name="homepage")
* @Route("/")
* @Template()
*/
public function indexAction(Request $request, $page)
{
$filters = new Filters();
$form = $this->createForm(new FiltersType(), $filters);
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
// Do something with form submited data
}
}
// Do something when index action loads, pagination etc...
return $this->render('ViciousAmateurBundle:Default:index.html.twig', array(
'form' => $form->createView(),
'pagination' => $pagination
)
);
}
しかし、フォーム変数をそのビューに渡して(ビューを継承/分離するために)小枝インクルードにフォームを入れようとすると、うまくいきません。「エラー 101 (net::ERR_CONNECTION_RESET): Se ha restablecido la conexión.」という応答が返されます。(いくつかの単語はスペイン語です)それが私の見解です:
// file: ViciousAmateurBundle:Default:index.html.twig
{% extends '::base.html.twig' %}
{% block body %}
{{ include('ViciousAmateurBundle:Default:filters.html.twig', {'form': form}) }}
{% block filters %}
{% endblock %}
// Stuff in the body
{% endblock %}
ご覧のとおり、フォーム ビューは index から継承され ( extends 句)、コードをその "filters" twig ブロックに追加します...
// file: ViciousAmateurBundle:Default:filters.html.twig
{% extends 'ViciousAmateurBundle:default:index.html.twig' %}
{% block filters %}
<section class="filters">
<form action="{{ path('homepage') }}" method="post" {{ form_enctype(form) }} class="filters">
{{ form_errors(form) }}
{{ form_errors(form.country) }}
{{ form_widget(form.country, { 'attr': { 'placeholder': 'País', 'class': 'input-block-level' } }) }}
// Some more form fields...
{{ form_rest(form) }}
<input type="submit" class="filters_submit btn btn-large btn-block" />
</form>
</section>
{% endblock %}
そしたら… そんな事出来るの?フォームを継承されたビュー (インデックスからのフィルター ビュー) に配置するには、コントローラーによって指定されたフォーム変数を渡します。それは動作するはずですか?私が行方不明または間違っていることは何ですか? ありがとうございました