这是正确的。在_form.php文件中,如果用户应该选择客户端,则必须定义一个下拉框:
gii成功生成模型(具有关系):
/**
* @return yiidbActiveQuery
*/
public function getClient()
{
return $this->hasOne(Client::className(), ['id' => 'client_id']);
}
但当我生成crud时,在客户端文件中只输入文本字段。请帮帮我,哪里有问题?
<?= $form->field($model, 'client')->dropDownList($clients) ?>
在控制器操作创建/更新中,您必须提供$clients:
return $this->render('create', [ // or: return $this->render('update', [
'model' => $model,
'clients' => ArrayHelper::map(Client::find()->all(), 'id', 'name'),
]);
不要忘记在create.php和update.php的视图文件中将它们传递到_form.php文件:
<?= $this->render('_form', [
'model' => $model,
'clients' => $clients, // <-- added
]) ?>
在其他视图中,您只想向客户端显示您可以使用以下内容:
echo $model->client->name; //or something different