【问题标题】:How to have Yii generate drop-down list from known users?Yii 如何让已知用户生成下拉列表?
【发布时间】:2012-02-06 21:46:53
【问题描述】:

我刚刚开始学习使用yii,并且已经设法做一些基本的事情。

假设我有两个简单的表:“用户”和“项目”,其中关系是一对多(一个用户可以有多个项目)

我已经使用 GII 生成了 CRUD,但是在“创建/编辑用户页面”中,它不提供下拉菜单,而只提供我需要输入用户 ID 的文本字段。

在编辑项目时,我希望有一个下拉列表,我可以在其中选择用户(因此该元素应显示用户名列表)。

我假设 GII 无法为此生成控制器和查看代码

这样做的最佳做法是什么?

我已经按照http://www.yiiframework.com/doc/guide/1.1/en/database.arr中的说明声明了关系

public function relations()
{
   return array(
        'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
    );
}

public function relations()
{
    return array(
        'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
    );
}

【问题讨论】:

  • 为什么你在公共函数projects()方法中定义了关系所有的关系都应该去relationship()方法
  • Lapsus manus,我很抱歉。函数是public函数relationship()我已经更正原帖了

标签: php activerecord non-relational-database yii


【解决方案1】:

找到生成用户列表的示例代码

<?php
    $form = $this->beginWidget('CActiveForm', array(
                'id' => 'project-form',
                'enableAjaxValidation' => true,
            ));

?>

<?php echo $form->dropDownList($model, 'user_id',
                CHtml::listData(Projects::model()->with('projects_rel')->findAll(), 'id', 'username'),
                array('style'=>'width:150px;')
                ); ?>

【讨论】:

  • 我确实发现你很有用!但不幸的是,我只有不到 15 人可以投票给你。对不起
【解决方案2】:

查看这些 gii 扩展以生成扩展 CRUD:

两者都能够使用关系输入来呈现表单。 GTC 为这些可以自定义的输入使用关系小部件。

【讨论】:

    【解决方案3】:

    别忘了取消注释

    $this->执行AjaxValidation($model)

    在控制器上,否则您将不得不创建项目而不是一个!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多