Управление несколькими формами на одной странице с помощью renderPartial - PullRequest
0 голосов
/ 16 июня 2011

Я хочу показать несколько форм на одной странице, например, сначала показать форму в журнале, после проверки / аутентификации скрыть форму входа в систему и показать другую форму, которая будет принимать платежные данные / информацию о доставке пользователя, и если новый клиент отобразит форму регистрации на той же самой странице страницы и после успешной регистрации, сделайте это, войдите в систему и скройте форму регистрации и предоставьте форму оплаты / доставки. и то же самое с другими формами, такими как информация о кредитной карте, хотите использовать проверку и рендеринг на основе 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 голосов
/ 17 июня 2011

Вы можете создать два виджета - для формы входа и для выставления счетов.При рендеринге файла представления необходимый виджет зависит от какого-либо параметра (например, состояния страницы).Параметр может быть передан с помощью ajax или запроса.

...