使用renderPartial在一个页面上管理多个表单

时间:2011-06-16 09:47:32

标签: ajax widget yii renderpartial

我希望在一个页面上显示多个表单,例如首次显示登录表单,验证/身份验证后隐藏登录表单并显示另一个表单,该表单将记录用户的帐单/发货信息,以及新客户是否在同一页面上显示注册表单页面和成功注册后,使其登录并隐藏注册表单并呈现结算/运输表单。与信用卡信息等其他形式一样,希望使用基于ajax的验证和渲染。

我这样做是行不通的

if(Yii::app()->request->isAjaxRequest)
    {
        if(isset($_POST['Customers']))
        {
            if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
            {
                if(!$model->validate())
                {
                    echo CActiveForm::validate($model);
                    Yii::app()->end();
                }else{
                    $this->renderBillingShippingForm();
                }

            }

            if(isset($_POST['ajax']) && $_POST['ajax']==='signup-form')
            {
                if(!$model->validate())
                {
                    echo CActiveForm::validate($model);
                    Yii::app()->end();
                }else{
                    $this->customerSignup($model);
                }


            }


        }

这是函数

public function customerSignup($model)
{
    $model->attributes=$_POST['Customers'];
    if($model->validate())
    {
        $model->password=encrypting($model->password);
        $model->email=$model->email;

        if ($model->save())
        {
            $this->renderBillingShippingForm();
        }
    }
}

这是另一个

function renderBillingShippingForm()
{
    $billingShippingInfo = new CustomerBillingShippingInfo;
    $this->renderPartial('billing_shipping_form', array("billingShippingInfo"=>$billingShippingInfo));
    Yii::app()->end();
}

任何想法

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以创建两个小部件 - 用于登录表单和结算。在视图文件渲染中,必要的小部件取决于某些参数(如页面状态)。参数可以通过ajax或request传递。