Several Models In One Form

So we have such models


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';

    }

}

I won’t describe all, will describe only main things.

So, now I want create form that will combine this forms. And want in action do something like this


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 shoul be specific checker because we have serveral ExtendBase instances in form

        {

            // save Base model

            // save each ExtendBase model

        }

    }


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

}

So question is

  1. How to create such ‘combined’ form in view;

  2. How to get all forms data (I mean each) after POST action;

It looks like you’re talking about tabular input. Check this section of the Guide. For that functionality I’ve used the extension MultiModelForm. Check them out.