首页 > 解决方案 > Yii2 依赖于模态中的文本输入和列表

问题描述

我有一个用于操纵我的模型的模态。可以在这里找到一个简单的示例。

控制器 ( controllers/ModalController.php) 中处理表单输入的操作如下所示:

public function actionShow() {
    $model = new Modal();

    if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ActiveForm::validate($model);
    } else {
        if ($model->load(Yii::$app->request->post())) {
            Yii::$app->session->setFlash('success', Yii::t('app', 'Values {value} commited to server', ['value' => json_encode($model->toArray())]));
            $this->redirect(['/modal']);
        } elseif (!Yii::$app->request->isPost) {
            return $this->renderAjax('show', ['model' => $model]);
        }
    }
}

views/show.php以及将被加载到模态中的视图 ( ):

$items = [1 => Yii::t('app', 'first item'),
        2 => Yii::t('app', 'second item'),
        3 => Yii::t('app', 'third item')
];
?>
<div class="modal-show">
    <?php $form = ActiveForm::begin(['id' => 'modal-show-form', 'enableAjaxValidation' => true]); ?>
    <div class="row">
        <div class="col-md-6">
            <?= $form->field($model, 'attribute1')->input('text') ?>
        </div>
        <div class="col-md-6">
            <?= $form->field($model, 'attribute2')->dropDownList($items,
                    ['prompt' => Yii::t('app', '---- Select item ----')]); ?>
        </div>
    </div>

    <?= $form->field($model, 'attribute3')->checkBox() ?>

    <div class="form-group" style="clear: both;">
        <?= Html::submitButton(Yii::t('app', 'Submit'), ['class' => 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>
</div>

现在我想在模式中有一个取决于输入字段的列表。例如,如果用户在输入字段中输入了一些单词,数据将从服务器获取并显示在列表中。当您为所提问题输入标题时,类似于 stackoverflow 建议。或者像krajee-depdrop这样的想法, 但带有文本输入字段。

我想应该有 ajax 或 pjax 参与其中,但我不知道如何以及从哪里开始。有人可以给我一个正确的方向吗?

标签: phpyii2

解决方案


推荐阅读