gpt4 book ai didi

yii - 多个相关模型单个 Controller

转载 作者:行者123 更新时间:2023-12-01 02:38:18 25 4
gpt4 key购买 nike

我遇到的问题与 Yii 中单个 Controller / View 中的多个模型有关。
具体来说,我无法弄清楚如何使用 Gii 生成的 CRUD 在管理和搜索 View 中为我的相关模型设置搜索栏。

我有两个模型“食谱”和“食谱步骤”

这是我的食谱关系

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,'recipe_name',array('size'=>11,'maxlength'=>11)); ?>
</div>

<div class="row">
<?php echo $form->label($model,'recipe_description'); ?>
<?php echo $form->textArea($model,'recipe_description',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(),列过滤器()。

阅读本主题:

Yii - Search filter of a relations field through cgridview

关于yii - 多个相关模型单个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com