форма авторизации на каждой странице
форма авторизации на каждой странице
хочу сделать так, чтобы форма авторизации присутствовала на каждой странице. уже даже сделал так, но возникла проблема - при неправильном наборе логина/пароля происходит редирект на страницу site/login (с выводом всех ошибок), куда, собственно, и ссылается action формы. так вот вопрос, как оставить вывод ошибок на этой же странице?
то есть, догадываюсь, конечно, что экшн формы надо оставлять пустым, но как проверять потом? фильтр или еще как?
(типа как на кукбуке нужна форма http://www.yiiframework.com/doc/cookbook/)
то есть, догадываюсь, конечно, что экшн формы надо оставлять пустым, но как проверять потом? фильтр или еще как?
(типа как на кукбуке нужна форма http://www.yiiframework.com/doc/cookbook/)
Re: форма авторизации на каждой странице
у-у-у! эпик-эпик! как карму поднять? или лучше пивом? ))
Re: форма авторизации на каждой странице
куда затерли примерчик? где еще можно глянуть реализацию авторизации через портлет?Caveman писал(а):http://yiiframework.ru/doc/blog/ru/portlet.login
Re: форма авторизации на каждой странице
Спасибо! Сделал уже сам практически идентично, единственное что я делал на проверку гостя в представленииRyadnov писал(а):http://code.google.com/p/yii/source/bro ... txt?r=2244
Код: Выделить всё
<?php if(Yii::app()->user->isGuest ): ?>
...........................
<?php endif; ?>
Код: Выделить всё
<?php $this->widget('UserLogin',array('visible'=>Yii::app()->user->isGuest)); ?>
Что и логично, если я не ошибаюсь visible CPortlet не имеет.
Re: форма авторизации на каждой странице
Помогите разобраться почему не передаются куки и соответственно не происходит авторизация через портлет. Экспериментирую на примере блога из документации, через страницу авторизации все работает нормально, куки передаются.
код портлета:
представление:
в макете подключаю так:
код портлета:
Код: Выделить всё
<?php
Yii::import('zii.widgets.CPortlet');
class UserLogin extends CPortlet
{
public function init()
{
$this->title='Login';
parent::init();
}
protected function renderContent()
{
$form=new LoginForm;
if(isset($_POST['LoginForm']))
{
$form->attributes=$_POST['LoginForm'];
if($form->validate())
$this->controller->refresh();
}
$this->render('userLogin',array('form'=>$form));
}
}
Код: Выделить всё
<?php echo CHtml::beginForm(); ?>
<div class="row">
<?php echo CHtml::activeLabel($form,'username'); ?>
<br/>
<?php echo CHtml::activeTextField($form,'username') ?>
<?php echo CHtml::error($form,'username'); ?>
</div>
<div class="row">
<?php echo CHtml::activeLabel($form,'password'); ?>
<br/>
<?php echo CHtml::activePasswordField($form,'password') ?>
<?php echo CHtml::error($form,'password'); ?>
</div>
<div class="row">
<?php echo CHtml::activeCheckBox($form,'rememberMe'); ?>
<?php echo CHtml::label('Запомнить меня',CHtml::activeId($form,'rememberMe')); ?>
</div>
<div class="row">
<?php echo CHtml::submitButton('Войти'); ?>
</div>
<?php echo CHtml::endForm(); ?>
Код: Выделить всё
<?php if(Yii::app()->user->isGuest) $this->widget('UserLogin'); ?>
Re: форма авторизации на каждой странице
Код: Выделить всё
...
if($form->validate() && $model->login() )
$this->controller->refresh();
...
Re: форма авторизации на каждой странице
Огромнейшее спасибо! Все заработало.