Я Форма с 1 EntityType поля, которое должно содержать выбор в зависимости от второго поля EntityType, не отображаются в первой сущности, как это:Symfony - FormType - Динамический выбор
ServicePlaceType.php:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('placetype', EntityType::class, array(
"class" => "AppBundle:PlaceType",
"choice_label" => "place",
"mapped" => false
))
->add('idplace', EntityType::class, array(
"class" => "AppBundle:Place",
"choice_label" => "place"
))
->add('...');
таблицы
+---------+--------------+---------------+-----------+
| Service | ServicePlace | Place | PlaceType |
+---------+--------------+---------------+-----------+
| | id | | |
+---------+--------------+---------------+-----------+
| | idplace > | < id | |
+---------+--------------+---------------+-----------+
| id > | < idservice | idPlaceType > | < id |
+---------+--------------+---------------+-----------+
| service | | place | placetype |
+---------+--------------+---------------+-----------+
Так что, когда я выбрать PlaceType я хочу, чтобы Место выберите шоу только те места, где idplacetype соответствуют PlaceType идентификатор.
Я попытался в javascript с событием onChange в выборе PlaceType, который фильтрует параметры Place в соответствии с фактическим значением PlaceType, но я не знаю, как получить свойство PlaceType для Place в formType. я пытался что-то вещи, но он не работает
->add('idplace', EntityType::class, array(
"class" => "AppBundle:Place",
"choice_label" => "place",
"attr" => array("placeType" => $this->getPlaceType()), // nor like that
))
->add('idplace', EntityType::class, array(
"class" => "AppBundle:Place",
"choice_label" => "place",
"attr" => array("placeType" => function ($place) {
return $place->getPlaceType();
}), // neither like that
))
ли кто-нибудь знает, как извлечь эти ДАННЫЕ? Или как динамически фильтровать параметры по-другому?
Спасибо за помощь!
try wih 'choice_label' => 'placeType', – mmmm
Спасибо за идею. Я подумал об этом, но мне нужно, чтобы на лейбле было место! – Boulboulouboule
это сработало? :) – mmmm