Функция внутри объекта в конструкторе форм Symfony - PullRequest
0 голосов
/ 08 ноября 2018

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

$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?

1 Ответ

0 голосов
/ 08 ноября 2018

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

Пример реализации может выглядеть следующим образом:

$builder->add('attending', ChoiceType::class, array(
    // [..]
    'choice_attr' => function($choiceValue, $key, $product) {
        return [
            'data-single-price' => $product->getPrice()
        ];
    }
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...