Php 需要帮助使用yii框架创建带有下拉菜单(关系)的CRUD屏幕吗
我需要使用yii框架创建CRUD屏幕。简单的积垢屏幕使用一个表是完美的工作。我在使用下拉列表(链接表)时遇到问题 我已经安装了giix扩展,如果指定了FK,它应该使用下拉菜单创建CRUD,但我的主机提供商上没有MySql引擎InnoDB,所以我无法使用该扩展。我需要手动操作 我有两张桌子 主要内容:- 身份证件 商店标识 前缀 商店:- 身份证件 名字 现在main的store_id是FK到store表的id。我想为主表创建CRUD 因此,添加屏幕应显示:- 商店名称:-下拉列表 前缀:-文本框 查看屏幕应使用存储表的“名称”列,而不是显示存储idPhp 需要帮助使用yii框架创建带有下拉菜单(关系)的CRUD屏幕吗,php,yii,yii-extensions,Php,Yii,Yii Extensions,我需要使用yii框架创建CRUD屏幕。简单的积垢屏幕使用一个表是完美的工作。我在使用下拉列表(链接表)时遇到问题 我已经安装了giix扩展,如果指定了FK,它应该使用下拉菜单创建CRUD,但我的主机提供商上没有MySql引擎InnoDB,所以我无法使用该扩展。我需要手动操作 我有两张桌子 主要内容:- 身份证件 商店标识 前缀 商店:- 身份证件 名字 现在main的store_id是FK到store表的id。我想为主表创建CRUD 因此,添加屏幕应显示:- 商店名称:-下拉列表 前缀:-文本框
提前感谢。使用Gii生成CRUD,然后阅读我的博客 基本上,在Gii生成之后,您的store_id字段将有类似的内容
<?php echo $form->labelEx($model,'store_id'); ?>
<?php echo $form->textField($model, 'store_id', array('size'=>60,'maxlength'=>255));?>
<?php echo $form->error($model,'store_id'); ?>
要完成此关系,还应将以下关系添加到商店模型:
public function relations()
{
return array(
'main'=>array(self::HAS_MANY, 'Main', 'store_id'),
);
}
这些关系定义了Store和Main之间的一对多关系,其中Store是父级,Main是子级。要使它成为一对一的关系,改变有多对有一。HAS_*进入父模型并指向子表中的外键属性。子表中的属性指向父表中的主键
现在要在view操作中查看商店名称,需要将view.php中的“store_id”更改为如下数组:
array(
'name' => 'store_id',
'value' => $model->store->name,
)
array(
'name' => 'store_id',
'value' => '$data->store->name',
)
管理视图略有不同。我不确定确切原因,但要在“管理”视图中查看商店名称而不是id,您需要使用如下数组:
array(
'name' => 'store_id',
'value' => $model->store->name,
)
array(
'name' => 'store_id',
'value' => '$data->store->name',
)
请注意,Gii生成了这个函数,因此$data是模型而不是$model,而且它还做了一个有趣的双间接操作,因此您需要将变量声明放在单引号中。感谢jmarkmurphy的帮助。你帮了我很大的忙,我认为你的答案是正确的,因为你给了我指导。只是张贴详细的确切代码 我用以下代码更改了view.php:-
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'id',
'store.name',
'prefix',
),
<?php echo CHtml::encode($data->store->name); ?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'main-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'store.name',
'prefix',
array(
'class'=>'CButtonColumn',
),
),
再次感谢杰玛克墨菲。谢谢。我的应用程序现在运行正常,完全符合我的要求。感谢jmarkmurphy的回复,当我单击“添加”时,它运行良好,但仍在查看表单中,我可以看到Id而不是名称:(…我想我需要修改_view.php文件以查看存储名称而不是id…。这是_view.php的代码:-:你能告诉我应该用什么替换上面的代码吗?没有关系名称,因为我在MySql中没有InnoDB存储…我只是替换了你给我的代码,它正在添加屏幕上工作..我可以在添加屏幕上看到下拉列表n但在单记录的查看屏幕上…或网格屏幕上…我看到的是商店id而不是商店名称非常好…非常感谢jmarkmurphy:)…它工作正常,工作完美…正是我想要的…我修改了view.php,现在它工作正常…我可以在查看页面上看到商店名称,但admin.php(网格视图)呢:-有代码:-那么代码所在的_view.php呢:-很抱歉问了这么多问题和疑问:(…实际上我是yii框架的新手,我需要做这个CRUD任务:(…我真的不知道这是怎么回事:(好吧,您应该感到欣慰的是,Yii非常容易学习,并且有不错的文档。我对它也很陌生,因为我还没有完成我的第一个Yii项目。我首先要看的几个地方是课堂参考:(对于GridView),以及最终指南:。这两个地方对我帮助很大。我还有一个博客,在那里我放了一些我学到的花絮。我希望继续写下去:。检查你的标签。我使用数组而不是快捷存储的原因。name是,如果标签在标签数组。这意味着我必须为我使用的每个快捷方式添加一个标签,或者我必须接受对我没有添加的快捷方式的猜测。因此,如果你的标签与你期望的不符,你需要为store.name.Sir添加一个标签。你是天才。关于标签你绝对正确。它没有显示正确的标签。它显示的是“name”作为标签,而我希望标签是商店名称。将代码更改为您提到的:-数组('Name'=>'Store\u id','value'=>$model->Store->Name),现在它显示正确的标签。非常感谢:)