Я хотел бы показывать только некоторые части формы, но форма всегда полностью отображается со всеми полями, а не просто показывает поля, которые я хочу отобразить. Вы знаете, почему?
{{ form_start(form) }}
{{ form_label(form.title) }}
{{ form_end(form) }}
$form = $this->createFormBuilder($advert)
->add('date', DateType::class, array(
'widget' => 'text',
'label' => 'custom Date',
))
->add('title', TextType::class)
->add('save', SubmitType::class)
->getForm();
return $this->render('OCPlatformBundle:Advert:edit.html.twig', array(
'form' => $form->createView(),
'advert' => $advert
));
В результате: отображается дата и заголовок, как с меткой, так и с значением html.
благодаря
form_end()
также выводит form_rest()
, который отображает все поля, которые еще не были отображены для данной формы: http://symfony.com/doc/current/reference/forms/twig_reference.html#form-rest-view- переменные
Если вы не хотите отображать незагруженные поля, добавьте {'render_rest': false}
в form_end
:
{{ form_end(form, {'render_rest': false}) }}
Вы можете отобразить только часть формы
{{ form_start(form) }}
{{ form_errors(form) }}
{{ form_row(form.first) }}
{{ form_row(form.second) }}
...
{{ form_row(form.submit, { 'label': 'Submit me' }) }}
{{ form_end(form, {'render_rest': false}) }}
Если вы хотите удалить поля, вы можете удалить поля в примере контроллера:
$form->remove("your fields");
form_end()
(из-за его вызова form_rest()
как объяснил Александру Фуркулита).