Intereting Posts
PHP – PDO не принимает вмонтированный массив в качестве параметра вопроса вопроса для предложения IN в запросе SELECT Как сохранить переменную в sessionignignitor Лучшая стратегия для переноса mysql enums на объекты доктрины с symfony2? Laravel – хранилище сеансов, не заданное по запросу Количество дубликатов в sql-результатах и ​​отображение с помощью PHP Использование таймера обратного отсчета jquery с mysql datetime? sql UPDATE row :: оставить текущее значение, если вход пустой быстрый способ отправки писем с использованием phpmailer smtp? Последовательности случайных данных Php / MySQL (музыкальный шаг) min, которая игнорирует отрицательные значения в php Добавьте два часа к дате в течение заданных часов, которые переносятся на следующий таймфрейм Легкий способ защиты паролем php-страницы Как реализовать функцию: отправить сообщение на форум по электронной почте? Как создать более светлый / темный цвет с помощью PHP? CodeIgniter Sqlite не работает

Передавать значение в массиве опций в встроенную форму

Я понимаю, как передать переменную из контроллера в форму с помощью метода createForm , но что, если мне нужно передать это значение форме, встроенной в форму, на которую я вызвал createForm ? Я никогда явно не называю createForm нигде во встроенной форме, так как я должен получить эту ценность? Стоит отметить, что значение, которое я пытаюсь передать, доступно через службу, но я не могу назвать $this->get('serviceName')->getValue() потому что я не в контроллере. Для справки, вот как я получаю значение в родительской форме, обратите внимание, как я это делаю с помощью метода createForm , а не с контруктором:

 //in a controller $form = $this->createForm(new FormType(), $formObject, array('value' => $value)); 

Это не потому, что вы не в контроллере, что не можете вводить сервисы (и параметры). Особенно в тех типах, где каждый тип может быть сервисом. Конечно, вы не можете сделать $this->get('serviceName')->getValue() напрямую, потому что метод get по умолчанию недоступен. Однако вы можете ввести услугу в свой тип формы. См. Другой вопрос, на который я ответил на инъекцию зависимости здесь для получения некоторой информации о том, как вводить услуги.

См. Этот раздел поваренной книги, в котором рассказывается, как преобразовать свой тип в службу, чтобы вы могли вводить свои зависимости и в то же время свою ценность.

Если по какой-либо причине вы не можете преобразовать свой тип в службу, то вам нужно передать ваши параметры FormType которые будут их читать, и передать параметр value встроенному типу. Это похоже на простую конструкцию стилей, вы передаете все свои параметры основному типу, который передаст некоторые из них для каждого подтипа, чем каждый из подтипов передаст их своим собственным подтипам и так далее. Опять же, вы можете взглянуть на этот [рецепт поваренной книги] на то, как читать параметры и использовать их в пользовательском типе формы.

В заключение я считаю, что проще превратить ваш тип в сервис.

Надеюсь, это поможет вам.

С Уважением,
Matt