20.11.2014 Views

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

public function actionLogin()<br />

{<br />

$model=new LoginForm;<br />

if(isset($_POST['LoginForm']))<br />

{<br />

// coleta a informação inserida pelo usuário<br />

$model->attributes=$_POST['LoginForm'];<br />

// valida a entrada <strong>do</strong> usuário e redireciona<br />

// para a página anterior, caso valide<br />

if($model->validate())<br />

$this->redirect(<strong>Yii</strong>::app()->user->returnUrl);<br />

}<br />

// exibe o formulário de login<br />

$this->render('login',array('model'=>$model));<br />

}<br />

No código acima, primeiro criamos uma instância de um LoginForm. Se a requisição for<br />

<strong>do</strong> tipo POST (indican<strong>do</strong> que um formulário de login foi envia<strong>do</strong>), nós preenchemos o<br />

$model com os da<strong>do</strong>s envia<strong>do</strong>s via$_POST['LoginForm']. Em seguida, validamos os<br />

da<strong>do</strong>s e, em caso de sucesso, redirecionamos o navega<strong>do</strong>r para a página que requisitou<br />

a autenticação. Se a validação falhar, ou se for o primeiro acesso a essa ação,<br />

renderizamos o conteú<strong>do</strong> da visão 'login', que será descrita na próxima subseção.<br />

Dica: Na ação login, utilizamos a propriedade <strong>Yii</strong>::app()->user->returnUrl para pegar a<br />

URL da página que necessitou a autenticação. O componente <strong>Yii</strong>::app()->user é <strong>do</strong><br />

tipo CWebUser (ou de uma classe derivada dele) que representa a sessão com as<br />

informações <strong>do</strong> usuário (por exemplo, nome de usuário, status). Para mais detalhes,<br />

veja Autenticação e Autorização.<br />

Vamos dar uma atenção especial para o seguinte trecho de código que aparece na ação<br />

login:<br />

$model->attributes=$_POST['LoginForm'];<br />

Como descrevemos em Atribuição Segura de Atributos, essa linha de código preenche um<br />

modelo com as informações enviadas pelo usuário. A propriedade attributes é definida<br />

pela classe CModel que espera um vetor de pares nome-valor, e atribui cada valor ao<br />

atributo correspondente no modelo. Sen<strong>do</strong> assim, se$_POST['LoginForm'], contém um<br />

vetor desse tipo, o código acima seria o equivalente ao código mais longo abaixo<br />

(assumin<strong>do</strong> que to<strong>do</strong>s os atributos necessários estão presentes no vetor):<br />

$model->username=$_POST['LoginForm']['username'];<br />

$model->password=$_POST['LoginForm']['password'];<br />

$model->rememberMe=$_POST['LoginForm']['rememberMe'];

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!