Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要帮助使用yii框架创建带有下拉菜单(关系)的CRUD屏幕吗_Php_Yii_Yii Extensions - Fatal编程技术网

Php 需要帮助使用yii框架创建带有下拉菜单(关系)的CRUD屏幕吗

Php 需要帮助使用yii框架创建带有下拉菜单(关系)的CRUD屏幕吗,php,yii,yii-extensions,Php,Yii,Yii Extensions,我需要使用yii框架创建CRUD屏幕。简单的积垢屏幕使用一个表是完美的工作。我在使用下拉列表(链接表)时遇到问题 我已经安装了giix扩展,如果指定了FK,它应该使用下拉菜单创建CRUD,但我的主机提供商上没有MySql引擎InnoDB,所以我无法使用该扩展。我需要手动操作 我有两张桌子 主要内容:- 身份证件 商店标识 前缀 商店:- 身份证件 名字 现在main的store_id是FK到store表的id。我想为主表创建CRUD 因此,添加屏幕应显示:- 商店名称:-下拉列表 前缀:-文本框

我需要使用yii框架创建CRUD屏幕。简单的积垢屏幕使用一个表是完美的工作。我在使用下拉列表(链接表)时遇到问题

我已经安装了giix扩展,如果指定了FK,它应该使用下拉菜单创建CRUD,但我的主机提供商上没有MySql引擎InnoDB,所以我无法使用该扩展。我需要手动操作

我有两张桌子

主要内容:- 身份证件 商店标识 前缀

商店:- 身份证件 名字

现在main的store_id是FK到store表的id。我想为主表创建CRUD

因此,添加屏幕应显示:-

商店名称:-下拉列表 前缀:-文本框

查看屏幕应使用存储表的“名称”列,而不是显示存储id


提前感谢。

使用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),现在它显示正确的标签。非常感谢:)