Yii';s Gii&x27;s积垢发生器考虑了型号';关系

Yii';s Gii&x27;s积垢发生器考虑了型号';关系,yii,relational-database,crud,relationship,Yii,Relational Database,Crud,Relationship,我将Yii的Gii的CRUD生成器用于与另一个模型定义了关系的模型,希望它能够创建某种下拉列表或其他方式来选择相关实体的实例,但它只是显示一个常规文本框 这是Gii的正常行为还是我做错了什么 以下是模型及其关系: 模型事件:关系“场馆”=>数组(self::属于“场馆”、“场馆”) 模型场馆:关系“事件”=>数组(self::有许多“事件”、“场馆”) 我希望事件CRUD显示某种方式来选择场馆实例。这是Gii的正常行为,在生成表单(CRUD和仅表单)时,它会使所有输入字段都成为文本字段。因此,默

我将Yii的Gii的CRUD生成器用于与另一个模型定义了关系的模型,希望它能够创建某种下拉列表或其他方式来选择相关实体的实例,但它只是显示一个常规文本框

这是Gii的正常行为还是我做错了什么

以下是模型及其关系:
模型事件:关系“场馆”=>数组(self::属于“场馆”、“场馆”)

模型场馆:关系“事件”=>数组(self::有许多“事件”、“场馆”)


我希望事件CRUD显示某种方式来选择场馆实例。

这是Gii的正常行为,在生成表单(CRUD和仅表单)时,它会使所有输入字段都成为文本字段。因此,默认的gii CRUD和表单生成器在生成代码时不考虑关系。
我们必须手动更改视图文件,即\u form.php,以用于所讨论的模型,这就是事件。
因此,根据您的要求,您可以对该文件进行以下更改:

/* As you have 'venue' field as the foreign key in the Event model */
<div class="row">
   <?php echo $form->labelEx($model, 'venue'); ?>
   <?php echo $form->dropDownList($model,'venue', CHtml::listData(Venue::model()->findAll(),
      'id', //this is the attribute name(of Venue model- could be the id of the venue) for list option values 
      'name' // this is the attribute name(of Venue model- could be the name of the venue) for list option texts 
       )
    ); ?>
   <?php echo $form->error($model,'venue'); ?>
</div>
/*因为您在活动模型中将“场馆”字段作为外键*/
要进行进一步的更改/自定义,请阅读更多信息。

希望这能有所帮助。

使用Giix它能很好地满足您的需求。。无需手动修改。

如有必要,要求澄清。