PHP опциональная опция
Есть следующий код:
$form->field($model, 'test')->widget(Select2::classname(), [
'pluginOptions' => [
'tags' => true,
'allowClear' => true,
],
'options' => [
'autocomplete' => 'off',
'multiple' => true,
'value' => [$test_var],
],
]);
Интересует, как сделать параметр value опциональным, т.е. чтобы если $test_var !== null, то параметр добавлялся, если нет, то и параметра не должно быть. Пытаюсь сделать что-то вроде:
$form->field($model, 'test')->widget(Select2::classname(), [
'pluginOptions' => [
'tags' => true,
'allowClear' => true,
],
'options' => [
'autocomplete' => 'off',
'multiple' => true,
// Пытался так
($test_var !== null) ?? 'value' => [$test_var],
// И так тоже пытался
if ($test_var !== null) {
'value' => [$test_var];
}
],
]);
Но так это не работает :( Как можно реализовать подобное?
Понимаю, что если $test_var в первом примере не существует, то ничего не будет вставлено. Однако интересует именно опциональность параметра.
Ответы (1 шт):
обычный путь будет выглядеть таким образом
$options = [....];
if (...condition...) {
$options['value'] = $test;
}
$this->field(..., [
'options' => $options,
]);
естественно просто так никаких if-ов посреди массива написать нельзя, как вы пытаетесь это сделать.
Однако можно несколько упростить, особенно с учетом того, что вам массив ассоциативный, то добавить конкатенацию массивов с условным (тернарным) оператором, где вам нужно в зависимости от условия вернуть либо пустой массив, либо нужное значение
'options' => [...options ....]
+ ( expr ? ['value' => $value] : [] )