Функция внутри объекта в конструкторе форм Symfony

Я не знаю, почему я получаю ошибку, если я пытаюсь это:

$builder
->add('product', EntityType::class, array(
'data' => $options['product'],
'placeholder' => 'Wyszukiwarka',
'mapped' => false,
'multiple' => false,
'class' => Products::class,
'attr' => [
'class' => 'chosen-select order_product',
'data-placeholder'=>'Wybierz produkt',
'single_price' => function ($product) {
$cena = $product->getJson()["products"]["price"];
dump($cena);
return $cena;
}
],

'choice_label' => function ($product) {
return  ''.$product->getJson()["products"]["name"] .' | Stan Magazynowy: '.$product->getJson()["products"]["stock"].'';
},
'label' => 'Wybierz produkty'

))

Итак, функция внутри ‘choice_label’ работает отлично, поэтому я не могу сделать то же самое в attr, который содержит несколько дополнительных атрибутов для этого ввода.
Я получаю эту ошибку:

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class Closure could not be converted to string").

Почему не работает функция внутри объекта attr?

0

Решение

Вы используете неправильную опцию конфигурации. attr опция не принимает обратный вызов. В вашем случае — чтобы добавить атрибут в зависимости от значения каждого выбора — вам нужно использовать choice_attr как найдено в документация.

Пример реализации может выглядеть так:

$builder->add('attending', ChoiceType::class, array(
// [..]
'choice_attr' => function($choiceValue, $key, $product) {
return [
'data-single-price' => $product->getPrice()
];
}
));
4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector