создать форму select2. когда выбрано, измените другой inputText из той же таблицы sql
Привет всем нужен ваш совет в рамках yii2. У меня есть имя таблицы sql: mfwp.its содержит id, id_mfwp, npwp, nama_wp и alamat_wp iиспользуйте виджет select2, чтобы найти npwp, после того, как пользователь выберет npwp, он бросит идентификатор в имя inputText: nama_wp (извлечет nama_wp из таблицы mfwp sql) и inputText: alamat_wp (извлечет alamat_wp из таблицы mfwp sql). Вот моя функция в MfwpC.
public function actionLists($id){
$countPosts = MFwp::find()
->where(['id' => $id])
->count();
$posts = Mfwp::find()
->where(['id' => $id])
->orderBy('id DESC')
->all();
if($countPosts>0){
foreach($posts as $post){
echo "<option value='".$post->id."'>".$post->nama_wp."</option>";
}
}else{
echo "<option>-</option>";
}
}
и вот моя форма просмотра
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\widgets\DatePicker;
use \yii\helpers\ArrayHelper;
use \app\models\Mfwp;
use \app\models\Pejabat;
use kartik\widgets\Select2;
use yii\helpers\Json;
use yii\helpers\Url;
use yii\web\View;
<?= $idnpwp = ArrayHelper::map(Mfwp::find()->all(),"id", "npwp", "nama_wp");?>
<?= $form->field($model, 'npwp')->widget(Select2::classname(), [
'language' => 'id',
'data' => $idnpwp,
'options' => ['placeholder' => 'Select a NPWP ...'],
'pluginOptions' => [
'allowClear' => true
],
'pluginEvents' => [
'Change'=>'
$.post("'.Url::to(['mfwp/lists']).'&id="+$(this).val(),function(data){
$("#target").html(data);
});
'
]
]);
?>
<?= $form->field($model, 'nama_wp')->textInput(['id' => 'target']) ?>
Я уже пробовал только для 1 inputText, но все еще застрял. Когда я перезагружаю свой консольный браузер, после списка аргументов появляется ошибка: SyntaxError: missing).
я пытаюсь перейти к http://bla -bla.oke / mfwp / lists? Id = 1 и показать что-то вроде этого:
Сначала попробуйте перед изменением кода:необработанные данные:
<option value='1'>DARIA VARIA</option>null
зачем показывать ноль? а затем
JSON: SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 1 данных JSON
такжеiam попробуй изменить pluginevents для select2, сделайте так:
'pluginEvents' => [
'change'=>'function(data) {
var data_id = data.currentTarget.value;
},$.post("'.Url::to(['mfwp/lists']).'&id="+val(data_id),function(data){
$("#target").val(data.nama_wp);
});',
]
и функция actionList в контроллере станет такой же
public function actionLists($id)
{
$posts = Mfwp::find()
->where(['id' => $id])
->asArray()
->orderBy('id DESC')
->one();
Yii::$app->response->format = 'json';
return $posts;
}
в консольном браузере все еще и все еще происходит ошибка, появляется ошибка: SyntaxError: отсутствует) после списка аргументов
, если я перейду к http://bla -bla.oke / mfwp / lists? Id = 1 : После того, как я изменил контроллер и просмотрю плагины форм в select2, таблица, отображаемая в браузере, все поля в таблице mfwp sql извлечены. либо в формате JSON, либо в виде необработанных данных.
но значение по-прежнему не отображается в inputText nama_wp в форме ..
thx для предоставления совета ..
Обновленное решение от г-на Омара:
ive изменил pluginevents стал таким:
'pluginEvents' => [
'change'=>'function(event){
var data_id = event.currentTarget.value;
$.post("'.Url::to(['mfwp/lists']).'?id="+data_id,function(data){
$("input#namas").val(data.nama_wp);$("#alamats").val(data.alamat_wp)
});
}'
]
и я изменил функцию в контроллере, стал таким:
public function actionLists($id)
{
$posts = Mfwp::find()
->where(['id' => $id])
->asArray()
->orderBy('id DESC')
->one();
Yii::$app->response->format = 'json';
return $posts;
}
** его работа великолепна, спасибо моему другу. **