У меня такая проблема что читая документацию я не могу понять как сделать, чтобы когда виджет показывает "совпадений не найдено",
<?= $form->field($client, 'phone')->widget(Select2::className(), [
'data' => ArrayHelper::map(Client::find()->all(), 'id', 'phone'),
'options' => ['placeholder' => 'Введите номер телефона'],
'pluginOptions' => [
'allowClear' => true,
'language' => [
'noResults' => new JsExpression('function () { return "<button type=\"button\" class=\"btn btn-info btn-xs\">Добавить в справочник</button>"; }'),
],
]
])?>
давала ссылку на модальное окно, где можно создать запись. Гуглил мало таких примеров, но некоторые я не пойму что и куда.
Примерно вот мой код, но так ссылка не высвечивается
Я пробовал еще примерно такой пример, потому что не доконца понимаю этот виджет на счет того чтобы изменить надпись на кнопку
Форме
<?php $clientPhone = empty($client->id) ? '' : Client::findOne($client->id)->phone; ?>
<?= $form->field($client, 'phone')->widget(Select2::className(), [
// 'data' => ArrayHelper::map(Client::find()->all(), 'id', 'phone'),
'options' => ['placeholder' => 'Введите номер телефона'],
'pluginOptions' => [
'allowClear' => true,
'ajax' => [
'url' => Url::to(['client/client-items']),
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {id:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(client) { return client.phone; }'),
'templateSelection' => new JsExpression('function (client) { return client.phone; }'),
]
])?>
В контроллере формы
public function actionCreate()
{
$model = new Zakaz();
$client = new Client();
...
}
return $this->render('create', [
'model' => $model,
'client' => $client,
]);
}
И в контроллере ClientController
public function actionsClientItem($q = null, $id = null)
{
Yii::$app->response->format = Response::FORMAT_JSON;
$out = ['result' => ['id' => '', 'text' => '']];
if (!is_null($q)) {
$query = new Query();
$query->select('id, phone AS tel')
->from('client')
->where(['like', 'phone', $q])
->limit(20);
$command = $query->createCommand();
$data = $command->queryAll();
$out['results'] = array_values($data);
} elseif ($id > 0){
$out['results'] = ['id' => $id, 'text' => Client::find($id)->phone];
} return $out;
}
Наверное правильно я понятно написал