2017-07-31 71 views
0

在查看我听说构建数据不是很好,但无论如何,我想知道为什么它不工作:的Yii 2下拉值安全新手

查看

<?php $form = ActiveForm::begin(); 

$alleSpieler = \common\models\Spieler::find()->all(); 

if ($alleSpieler) { 
unset($types); 
foreach ($alleSpieler as $value) { 
       $types[$value->id] = $value->email . ' ' . $value->vorname . ' ' . $value->nachname; 
           } 
         } 

echo $form->field($model, 'spielerId')->dropDownList($types, 'prompt'=>'Spieler manuell hinzufügen']); 

          ActiveForm::end(); 
          ?> 

<?= AnmeldungDurchfuehrung2::widget(['durchfuehrungId' => $model->id, 'spielerId' => $model->spielerId]) ?> 

型号

public $spielerId; 

但spielerId IST没有我的情况下设置。例如,如果我在窗口小部件调用中设置'spielerId'=> 1120,它正在工作。但是,如果我想从下拉列表中获取值,则操作是说spielerId丢失。我是新手,也许我忘了什么?谢谢!

+0

我有什么做$ spielerId充满了从下拉列表中ID? –

+0

你需要为下拉的改变事件写入javascript –

+0

你能帮我用javascript吗?是这样的吗? 回声$形式 - >字段($模型, 'spielerId') - > DROPDOWNLIST($类型,阵列( '平变化'=> '的getData($模型 - > spielerId)', '类'=> '形式控制' ,'prompt'=>' - 选择一个Player-')); –

回答

1

你必须在你的模型,索姆验证阵列添加$spielerId;这样的:

public function rules() 
{ 
    return [ 
     [['spielerId'], 'integer'], //type of atribute value 
     [['spielerId'], 'required'], //if need 
     /*... other atributes ...*/ 
    ]; 
} 

的详细检查documentation

+0

这个我已经在模型 –

+0

对不起,我错误地忽略了你的问题,在工作yii2的理解中做出了一些摆脱,首先你需要在模型中上传数据来使用它们。在你的情况我recomendet创建创建单独的操作,以在spielerId字段更改值后呈现小部件,并使用$ this-> renderAjax函数来返回它。 – vityapro

+1

因此,你需要: 1)JS脚本巫婆将蜂行动派选择的值和处理响应(插入您的resived内容) 2)控制器女巫的行动将得到的数据和渲染视图:'$这个 - > renderAjax(” _sform '[ 'ID'=> $ ID, 'spielerId'=> $ spielerId]);' 3)考虑到与内容:'<= AnmeldungDurchfuehrung2 ::插件([? 'durchfuehrungId'=> $ ID,' spielerId '=> $ spielerId])?> – vityapro

0

还好现在我知道我需要什么:

echo $form->field($model, 'spielerId')->dropDownList($types,['prompt'=>'Waehlen Sie einen Spieler']); 
echo Html::submitButton('Auswählen', ['class' => 'btn btn-primary']); 

这是我的下拉。

我需要这样的东西:

<?php if(!empty($_GET['spielerId'])) { 
         echo AnmeldungDurchfuehrung2::widget(['durchfuehrungId' => $model->id, 'spielerId' => $_GET['subject']]); }?> 
+0

好吧现在我知道了,只需要设置字段的值名称。 –