форма авторизации на каждой странице

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
seme4kin
Сообщения: 16
Зарегистрирован: 2009.10.17, 20:03

форма авторизации на каждой странице

Сообщение seme4kin »

хочу сделать так, чтобы форма авторизации присутствовала на каждой странице. уже даже сделал так, но возникла проблема - при неправильном наборе логина/пароля происходит редирект на страницу site/login (с выводом всех ошибок), куда, собственно, и ссылается action формы. так вот вопрос, как оставить вывод ошибок на этой же странице?

то есть, догадываюсь, конечно, что экшн формы надо оставлять пустым, но как проверять потом? фильтр или еще как?
(типа как на кукбуке нужна форма http://www.yiiframework.com/doc/cookbook/)
seme4kin
Сообщения: 16
Зарегистрирован: 2009.10.17, 20:03

Re: форма авторизации на каждой странице

Сообщение seme4kin »

у-у-у! эпик-эпик! как карму поднять? или лучше пивом? ))
ynik
Сообщения: 124
Зарегистрирован: 2010.05.05, 13:07
Откуда: Ukraine

Re: форма авторизации на каждой странице

Сообщение ynik »

куда затерли примерчик? где еще можно глянуть реализацию авторизации через портлет?
ynik
Сообщения: 124
Зарегистрирован: 2010.05.05, 13:07
Откуда: Ukraine

Re: форма авторизации на каждой странице

Сообщение ynik »

Спасибо! Сделал уже сам практически идентично, единственное что я делал на проверку гостя в представлении

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

<?php if(Yii::app()->user->isGuest ): ?>
...........................
<?php endif; ?>
и в соотвествии уже выводил форму на страницу, как почему то у меня проверить при выводе виджета параметром visible

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

<?php $this->widget('UserLogin',array('visible'=>Yii::app()->user->isGuest)); ?>
вот так не работает выдает ошибку что атрибут UserLogin.visible не определен.
Что и логично, если я не ошибаюсь visible CPortlet не имеет.
SkyFire
Сообщения: 2
Зарегистрирован: 2012.03.14, 13:35

Re: форма авторизации на каждой странице

Сообщение SkyFire »

Помогите разобраться почему не передаются куки и соответственно не происходит авторизация через портлет. Экспериментирую на примере блога из документации, через страницу авторизации все работает нормально, куки передаются.
код портлета:

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

<?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'); ?>
AlexMist
Сообщения: 109
Зарегистрирован: 2011.09.16, 14:13
Контактная информация:

Re: форма авторизации на каждой странице

Сообщение AlexMist »

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

...
if($form->validate() &&          $model->login()            )
                $this->controller->refresh();
...
?
SkyFire
Сообщения: 2
Зарегистрирован: 2012.03.14, 13:35

Re: форма авторизации на каждой странице

Сообщение SkyFire »

Огромнейшее спасибо! Все заработало.
Ответить