forms renderPartial

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
alexZT
Сообщения: 362
Зарегистрирован: 2012.03.06, 11:33
Откуда: Украина/Житомир
Контактная информация:

forms renderPartial

Сообщение alexZT »

помогите разобраться с renderPartial

хочу форму логина засунуть в popup

тоесть как я понимаю в файле index я должен выполнить renderPartial('файл с формой', array($data)) ?

если просто сделать renderPartial('файл с формой') - получаем ошибку, потому что наш SiteController не может понять форму какой модели мы хотим вывести с данными, правилами валидации и т.д., а само автоматом оно не подтягивает (как я понимаю).

обьясните как правильно вязать вид в котором есть popup'ы с формами, которые могут относится не то, что к другим моделям, а вцелом и к другим моделям внутри других модулей и т.д. (как должны между собой взаимодействовать виды/контроллеры, чтобы все работало, что куда рендерить, что откуда забирать партиалом?)
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
Аватара пользователя
Ivan Ozercov
Сообщения: 53
Зарегистрирован: 2012.03.21, 15:53
Откуда: Минск

Re: forms renderPartial

Сообщение Ivan Ozercov »

я делаю так окно вывожу с помошью виджета

Код: Выделить всё

            <?php
                $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
                    'id'=>'loginDialog',
                    'options'=>array(
                        'title'=>'Sign In',
                        'autoOpen'=>false,
                        'modal'=>true,
                        'hide'=>'drop',
                        'show'=>'drop',
                        'buttons'=>array(),
                    ),
                ));
            ?>
            <div id="loginForm"></div>
            <?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>
потом делаю например пост запрос на адрес user/login. в этой фунуции в пустой див (<div id="loginForm"></div>) загружается содержимое окна

Код: Выделить всё

                <?php
                Yii::app()->clientScript->registerScript('login', '
                jQuery("a#login-link").live("click",function() {
                    $.post(
                        $(this).attr("href"),
                        { "login-popup" : 1},
                        function(data){
                            jQuery("#loginForm").html(data);
                            jQuery("#loginDialog").dialog("open");
                        },
                        "html"
                    );
                    return false;
                });
                ', CClientScript::POS_END);
            ?>

код экшена логин

Код: Выделить всё

    public function actionLogin()
    {
        if (Yii::app()->user->isGuest){

            //Login through social networks
            $this->SocialLogin();

            $model=new UserLogin;
            // collect user input data
            if(isset($_POST['UserLogin']))
            {
                $model->attributes=$_POST['UserLogin'];
                // validate user input and redirect to previous page if valid

                if($model->validate()) {
                    $this->lastVisit();
                    if (strpos(Yii::app()->user->returnUrl,'/index.php')!==false) {
                        $this->redirect(Yii::app()->controller->module->returnUrl);
                    }
                    else{
                       // $this->redirect(Yii::app()->user->returnUrl);
                        $this->redirect(Yii::app()->request->urlReferrer);
                    }
                }
            }
            // display the login form

            if ($_POST['login-popup'] == 1){
                //ajax popup data
                $this->layout = 'layout';
                $this->render('/user/_loginForm',array('model'=>$model,'profile'=>$profile));
                 Yii::app()->end();
            }else{
              $this->render('/user/login',array('model'=>$model));
            }
        }else{
            $this->redirect(Yii::app()->controller->module->returnUrl);
        }
    }
alexZT
Сообщения: 362
Зарегистрирован: 2012.03.06, 11:33
Откуда: Украина/Житомир
Контактная информация:

Re: forms renderPartial

Сообщение alexZT »

2 Ivan Ozercov

я правильно понимаю, что таким образом мы можем создавать пустые формы с дальнейшим их заполнением ? а если завтра в модальном окне захочу что-то отредактировать ? или показать расширенные данные ? остаётся много вопросов ...

хочу разобраться как использовать renderPartial чтобы в форму подгружались данные
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
Аватара пользователя
Ivan Ozercov
Сообщения: 53
Зарегистрирован: 2012.03.21, 15:53
Откуда: Минск

Re: forms renderPartial

Сообщение Ivan Ozercov »

alexZT писал(а): я правильно понимаю, что таким образом мы можем создавать пустые формы с дальнейшим их заполнением ? а если завтра в модальном окне захочу что-то отредактировать ? или показать расширенные данные ? остаётся много вопросов ...
по поводу renderPatrial он отличает тем, что не отображет layout. Отредактировать модальное окно можно, просто изменить в контроллере метод который выводит в модальное окно.
Ответить