我有两种模式:
QuestionCategories
public function attributeLabels()
{
return [
'question_category_id' => 'ID',
'course_id' => Yii::t('course', 'Course'),
'name' => Yii::t('course', 'Question Category Name'),
'is_status' => Yii::t('course', 'Is Status'),
];
}
问题
public function attributeLabels()
{
return [
'question_id' => Yii::t('course', 'Question ID'),
'question_category_id' => Yii::t('course', 'Question Category'),
'question_course_id' => Yii::t('course', 'Course'),
'instructor_id' => Yii::t('course', 'Instructor'),
'question_name' => Yii::t('course', 'Question Name'),
];
}
在问题的视图中,我想创建一个下拉列表,其中 QuestionCategories 中的course_id等于问题中的question_course_id。
我如何实现这一目标?
看看到目前为止我做了什么。
<?= $form->field($model, 'question_category_id')->widget(Select2::classname(), [
'data' => ArrayHelper::map(QuestionCategories::find()->all(),'question_category_id','name'),
'language' => 'en',
'options' => ['placeholder' => 'Select Question Category ...'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
由于
答案 0 :(得分:0)
question_course_id
必须先预先确定,然后才能将其添加到您的条件中:
<?= $form->field($model, 'question_category_id')->widget(Select2::classname(), [
'data' => ArrayHelper::map(QuestionCategories::find()->where(['course_id' => $your_Course_id])->all(),'question_category_id','name'),
'language' => 'en',
'options' => ['placeholder' => 'Select Question Category ...'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
请参阅Yii 2 Guide - 查询构建器&amp;积极的记录。
答案 1 :(得分:0)
我使用getRequest()来解决问题。这使我能够获得参数。
<?php $courseid = Yii::$app->getRequest()->getQueryParam('acs_id');?>
<?= $form->field($model, 'question_category_id')->widget(Select2::classname(), [
'data' => ArrayHelper::map(QuestionCategories::find()->where(['course_id' => $courseid, 'is_status'=>0])->all(),'question_category_id','name'),
'language' => 'en',
'options' => ['placeholder' => 'Select Question Category ...'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
谢谢大家
答案 2 :(得分:0)
考虑到Kalu的回答和你的评论,我认为Yii的方法是通过Controller将参数传递给你的视图,如下所示:
//The parameter is $acs_id. How do I pass it from the Controller to the Dropdownlist in the View
public function actionCreate($acs_id) {
$model = new Questions();
if($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->question_id]); }
else { return $this->render('create', [ 'model' => $model, 'acs_id' => $acs_id]); }
通过这种方式,您可以在视图中访问$ acs_id作为变量,而无需直接访问请求。