yii – 多个相关模型单控制器
发布时间:2020-12-13 16:43:20 所属栏目:PHP教程 来源:网络整理
导读:我遇到的问题与Yii中单个控制器/视图中的多个模型有关. 具体来说,我无法弄清楚如何在管理和搜索视图中使用Gii生成的CRUD为我的相关模型设置搜索栏. 我有两个型号“Recipes”和“RecipeSteps” 这是我的食谱关系 public function relations() { // NOTE: you
我遇到的问题与Yii中单个控制器/视图中的多个模型有关.
具体来说,我无法弄清楚如何在管理和搜索视图中使用Gii生成的CRUD为我的相关模型设置搜索栏. 我有两个型号“Recipes”和“RecipeSteps” 这是我的食谱关系 public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'recipeSteps' => array(self::HAS_ONE,'RecipeSteps','recipe_id'),); } 我已经可以使用相关模型创建和更新问题,在搜索中我可以在结果中看到相关模型“RecipeSteps”,因为我将它添加到我的Gridview中,如下所示: <?php $this->widget('zii.widgets.grid.CGridView',array( 'id'=>'recipes-grid','dataProvider'=>$model->search(),'filter'=>$model,'columns'=>array( //'recipe_id','recipe_name','recipe_description','recipeSteps.instructions',array( 'class'=>'CButtonColumn',),)); ?> 但是,我需要弄清楚如何在“指令”字段上方的搜索栏中添加,以便也可以搜索字段. 我需要弄清楚如何在表单中添加“说明”. <div class="wide form"> <?php $form=$this->beginWidget('CActiveForm',array( 'action'=>Yii::app()->createUrl($this->route),'method'=>'get',)); ?> <div class="row"> <?php echo $form->label($model,'recipe_name'); ?> <?php echo $form->textField($model,array('size'=>11,'maxlength'=>11)); ?> </div> <div class="row"> <?php echo $form->label($model,'recipe_description'); ?> <?php echo $form->textArea($model,array('rows'=>6,'cols'=>50)); ?> </div> <div class="row buttons"> <?php echo CHtml::submitButton('Search'); ?> </div> <?php $this->endWidget(); ?> </div><!-- search-form --> 食谱中的配方搜索功能 public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria=new CDbCriteria; //$criteria->compare('recipe_id',$this->recipe_id,true); $criteria->compare('recipe_name',$this->recipe_name,true); $criteria->compare('recipe_description',$this->recipe_description,true); return new CActiveDataProvider($this,array( 'criteria'=>$criteria,)); 以及RecipesController中的Index和Admin /** * Lists all models. */ public function actionIndex() { $dataProvider=new CActiveDataProvider('Recipes'); $this->render('index',array( 'dataProvider'=>$dataProvider,)); } /** * Manages all models. */ public function actionAdmin() { $model=new Recipes('search'); $model->unsetAttributes(); // clear any default values if(isset($_GET['Recipes'])) $model->attributes=$_GET['Recipes']; $this->render('admin',array( 'model'=>$model,)); } 我知道这应该很简单,但我似乎无法弄清楚如何绕过它我已经阅读了我能找到的每一份文件. 解决方法
您需要更改搜索和列定义以使用关系.
你需要使用with(),列filter(). 阅读本主题: Yii – Search filter of a relations field through cgridview (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |