Как сделать форму rest () не отображать поле с Symfony2?
Я начал использовать Symfony2, но у меня есть некоторые проблемы. Я хотел отрисовывать поля вручную, но это не работает, потому что мое поле, еще отрисованное мной, отображается с помощью
4 ответа:
{{ form_rest(form) }}
идет в самом конце, после отрисовки каждого поля "вручную". Если вы используете его для токена CSRF, вы всегда можете отобразить его с помощью:{# Token CSRF #} {{ form_widget(form._token) }}
другое по-моему менее хаки способ сделать это так:
{{ form_end(form, {'render_rest': false}) }}
Это официальная документация (v3.0) так что это в значительной степени лучшие практики Я думаю.
ситуация, в которой вы не хотите показывать некоторые поля говорит о плохой форме. Вы можете кормить некоторые аргументы в это
__construct
чтобы сделать его условным (скажем, включить / исключить некоторые поля), или вы можете просто создать отдельныйForm
классах (что, на мой взгляд, немного перебор).у меня был общий случай несколько месяцев назад, когда форма отличалась, когда пользователь вставлял/обновлял записи. Это было что-то вроде этого:
... public function __construct($isUpdateForm){ $this->isUpdateForm= $isUpdateForm; } public function buildForm(FormBuilder $builder, array $options){ .... $builder->add('some_filed', 'text', ..... ); if ( $this->isUpdateForm ){ $builder->add(.....); } .... } ....
если по каким-то причинам вы не можете рефакторинг класса формы вы все еще можете отображать нежелательные поля, но обернуть их в
<div>
который имеет CSS . Таким образом, "они все еще там" (и все средства обрабатываются нормально), но не видны пользователю.надеюсь, что это помогает...