2013-11-08 3 views
3

Можно ли вернуть форму с помощью контроллера, например, так:Symfony 2: Возвращение формы в контроллере

$form = $this->createForm(new TfQuestionType(),$TfQuestion); 
    return new Response($form->createView()); 

Я хотел бы получить его с помощью Ajax, и я знаю, что вы должны вернуть HTML строка формы, но я не могу сделать это в моем случае.

Thanks,

David.

ответ

3

Вы можете сделать это, создав шаблон с помощью renderView и вернув его в качестве ответа. Посмотрите документацию здесь:

http://symfony.com/doc/current/book/controller.html#rendering-templates

EDIT

В контроллере:

$form = $this->createForm(new TfQuestionType(), $TfQuestion); 

return $this->render(
    'FooBundle:Bar:form.html.twig', 
    array('form' => $form) 
); 

Ваш form.html.twig может выглядеть примерно так:

<form method="post" action="{{ path('some_route')}}"> 
    {{ form_widget(form) }} 
    <input type="submit"> 
</form> 

Надеюсь, что это поможет :)

+0

Hello Darragh, Не решите ли ваше решение изменить мою страницу? Я хочу «включить» динамически кусок формы через jQuery, например [здесь] (http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-form-events-submitted-data/ "Здесь «). В настоящее время я работаю над jQuery ^^ – Gingi

+0

Hi Gingi. По моему мнению, я понимаю, что вы хотите сделать вызов AJAX из браузера на сервер, который отображает форму и возвращает ответ HTML. Я предполагаю, что вы вставляете его на страницу с помощью JavaScript? Если это так, то вы должны добавить вышеуказанный код в свой собственный метод, например 'QuestionController :: ajaxFormAction()' и вызвать этот метод из браузера. дайте мне знать, если я что-то упустил, и я могу изменить свой ответ. –

+0

Ты абсолютно прав Дарраг. Мой первоначальный вопрос: если я создам метод в моем контроллере «Вопрос», мне нужно будет вернуть экземпляр «Response». Возможно, я ошибаюсь, но я думаю, что Response принимает только строки в качестве параметра. С вашим ответом и [этим] (http://stackoverflow.com/questions/9516412/load-view-using-ajax-symfony2) Я выяснил, что мне необязательно использовать Response() с Ajax в Symfony (большинство из того, что я видел в Интернете, вернул строку для создания новых входных данных). Большое спасибо за вашу помощь Дарра. Я вернусь к вам, когда это сработает. ^^ – Gingi

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