помогите разобраться с renderPartial
хочу форму логина засунуть в popup
тоесть как я понимаю в файле index я должен выполнить renderPartial('файл с формой', array($data)) ?
если просто сделать renderPartial('файл с формой') - получаем ошибку, потому что наш SiteController не может понять форму какой модели мы хотим вывести с данными, правилами валидации и т.д., а само автоматом оно не подтягивает (как я понимаю).
обьясните как правильно вязать вид в котором есть popup'ы с формами, которые могут относится не то, что к другим моделям, а вцелом и к другим моделям внутри других модулей и т.д. (как должны между собой взаимодействовать виды/контроллеры, чтобы все работало, что куда рендерить, что откуда забирать партиалом?)
forms renderPartial
-
- Сообщения: 362
- Зарегистрирован: 2012.03.06, 11:33
- Откуда: Украина/Житомир
- Контактная информация:
forms renderPartial
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
yii@conference.jabber.ru
- Ivan Ozercov
- Сообщения: 53
- Зарегистрирован: 2012.03.21, 15:53
- Откуда: Минск
Re: forms renderPartial
я делаю так окно вывожу с помошью виджета
потом делаю например пост запрос на адрес user/login. в этой фунуции в пустой див (<div id="loginForm"></div>) загружается содержимое окна
код экшена логин
Код: Выделить всё
<?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'); ?>
Код: Выделить всё
<?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);
}
}
-
- Сообщения: 362
- Зарегистрирован: 2012.03.06, 11:33
- Откуда: Украина/Житомир
- Контактная информация:
Re: forms renderPartial
2 Ivan Ozercov
я правильно понимаю, что таким образом мы можем создавать пустые формы с дальнейшим их заполнением ? а если завтра в модальном окне захочу что-то отредактировать ? или показать расширенные данные ? остаётся много вопросов ...
хочу разобраться как использовать renderPartial чтобы в форму подгружались данные
я правильно понимаю, что таким образом мы можем создавать пустые формы с дальнейшим их заполнением ? а если завтра в модальном окне захочу что-то отредактировать ? или показать расширенные данные ? остаётся много вопросов ...
хочу разобраться как использовать renderPartial чтобы в форму подгружались данные
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
yii@conference.jabber.ru
- Ivan Ozercov
- Сообщения: 53
- Зарегистрирован: 2012.03.21, 15:53
- Откуда: Минск
Re: forms renderPartial
по поводу renderPatrial он отличает тем, что не отображет layout. Отредактировать модальное окно можно, просто изменить в контроллере метод который выводит в модальное окно.alexZT писал(а): я правильно понимаю, что таким образом мы можем создавать пустые формы с дальнейшим их заполнением ? а если завтра в модальном окне захочу что-то отредактировать ? или показать расширенные данные ? остаётся много вопросов ...