Hallo Leute,
folgendes Problem habe ich bereits auf Stackoverflow und dem Yii-Forum(wo es eigentlich hingehört) gepostet, allerdings ohne ein Feedback zu bekommen. In der Hoffnung, dass es mitunter hier gelöst wird, poste ich es auch hier. Selbstverständlich werde ich vermerken, sobald ich aus genannten Foren Feedback bekomme. Die Syntax ist Framework bedingt und somit etwas eigenwillig, ein Versuch ist es dennoch wert.
Folgende AJAX-Anfrage zeigt mir zwar die Treffer an, ins Formular übernehmen kann ich sie allerdings nicht(s. hochgeladene Datei) . Ich komme mir vor wie ein Hund, dem man ein Leckerlie vor die Nase hält, die Hand aber immer wieder wegzieht
Weiß jemand Rat? Ich vermute einen inkorrekten escapeMarkup oder templateSelection Aufruf.
id_ba_xml_gelernter_beruf_1 ist eine Propertie des Models, also ein Attribut der Tabelle ($model=ba_berufe)
Hier der AJAX-Aufruf:
hier der Conrollercode, der allerdings reibungslos funktionert. Ich poste ihn nur der Vollständigkeit halber:
folgendes Problem habe ich bereits auf Stackoverflow und dem Yii-Forum(wo es eigentlich hingehört) gepostet, allerdings ohne ein Feedback zu bekommen. In der Hoffnung, dass es mitunter hier gelöst wird, poste ich es auch hier. Selbstverständlich werde ich vermerken, sobald ich aus genannten Foren Feedback bekomme. Die Syntax ist Framework bedingt und somit etwas eigenwillig, ein Versuch ist es dennoch wert.
Folgende AJAX-Anfrage zeigt mir zwar die Treffer an, ins Formular übernehmen kann ich sie allerdings nicht(s. hochgeladene Datei) . Ich komme mir vor wie ein Hund, dem man ein Leckerlie vor die Nase hält, die Hand aber immer wieder wegzieht

Weiß jemand Rat? Ich vermute einen inkorrekten escapeMarkup oder templateSelection Aufruf.
id_ba_xml_gelernter_beruf_1 ist eine Propertie des Models, also ein Attribut der Tabelle ($model=ba_berufe)
Hier der AJAX-Aufruf:
PHP:
<?php
$url = \yii\helpers\Url::to(['berufe']);
?><?=
$form->field($model, 'id_ba_xml_gelernter_beruf_1', ['addon' => [
'prepend' => ['content' => 'gelernter Beruf 1']]])->widget(\kartik\widgets\Select2::classname(), [
'options' => ['placeholder' => 'Berufe suchen ...'],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'language' => [
'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
],
'ajax' => [
'url' => $url,
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(id_ba_xml_gelernter_beruf_1) { return id_ba_xml_gelernter_beruf_1.text; }'),
'templateSelection' => new JsExpression('function (id_ba_xml_gelernter_beruf_1) { return id_ba_xml_gelernter_beruf_1.text; }'),
],
])->label(false);
?>
hier der Conrollercode, der allerdings reibungslos funktionert. Ich poste ihn nur der Vollständigkeit halber:
PHP:
public function actionBerufe($q = null, $id = null) {
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$out = ['results' => ['id' => '', 'text' => '']];
if (!is_null($q)) {
$query = new \yii\db\Query();
$query->select('ID, Bezeichnung_neutral_kurz AS text')
->from('yii2_ba.ba_berufe')
->where(['like', 'Bezeichnung_neutral_kurz', $q])
->limit(20);
$command = $query->createCommand();
$data = $command->queryAll();
$out['results'] = array_values($data);
} elseif ($id > 0) {
$out['results'] = ['id' => $id, 'text' => \common\modules\basis\models\BaBerufe::find($id)->Bezeichnung_neutral_kurz ];
}
return $out;
}
Anhänge
Zuletzt bearbeitet: