Yii,一种形式的几个模型实例

时间:2014-03-25 19:52:56

标签: php forms validation yii

我们有两个型号

class Base extends AbstractModel
{
    public $id;
    public $name;

    public function tableName()
    {
        return 'table_base';
    }
}

class ExtendBase extends AbstractModel
{
    public $id;
    public $baseID;

    public function tableName()
    {
        return 'table_base_extend';
    }
}

我不会描述所有内容,只会描述主要内容。

所以,现在我想创建将这些表单组合起来的表单。并希望在行动中做这样的事情

public function actionSome ()
{
    $oBase = new Base();
    $aExtendBase = array(); // important this is array

    for ($i = 1; $i <= 3; $i++) {
        $aExtendBase[] = new Extend(); // fill in array, pre-create for form
    }

    if ($this->isPost()) { // protected custom method
        if (isset($_POST['Base'], $_POST['ExtendBase'])) // here should be specific checker because we have several ExtendBase instances in form
        {
            // save Base model
            // save each ExtendBase model
        }
    }

    $this->render('formView', array('oBase' => $oBase, 'aExtendBase' => $aExtendBaes))
}

所以问题是

  1. 如何创建这样的&#39;组合&#39;形式在视野中;
  2. 如何在POST操作后获取所有表单数据(我的意思是每个);

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以为单个表单创建一个不代表CFormModel的模型(ActiveRecord)。

我认为这将是您继续进行的最佳方式(假设我已正确理解您的问题)。

如果我是你,我会创建一个模型来代表这个表单的规则(就像我说的,CFormModel的实例,而不是ActiveRecord)然后,在你的控制器中,拿走提交的元素并手动创建和/或更新两个类的对象。