Uma vez que temos um modelo pronto, podemos começar a escrever a lógica necessária para manipula-lo. Devemos colocar essa lógica dentro de uma ação no controle. Para o exemplo do formulário de login, o código a seguir é necessário:
public function actionLogin()
{
    $model=new LoginForm;
    if(isset($_POST['LoginForm']))
    {
        // coleta a informação inserida pelo usuário
        $model->attributes=$_POST['LoginForm'];
        // valida a entrada do usuário e redireciona para a página anterior, caso valide
        if($model->validate())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // exibe o formulário de login
    $this->render('login',array('model'=>$model));
}No código acima, primeiro criamos uma instância de um LoginForm. Se a requisição 
for do tipo POST (indicando que um formulário de login foi enviado), nós 
preenchemos o $model com os dados enviados via $_POST['LoginForm']. Em
seguida, validamos os dados e, em caso de sucesso, redirecionamos o navegador 
para a página que requisitou a autenticação. Se a validação falhar, ou se for o 
primeiro acesso a essa ação, renderizamos o conteúdo da visão 'login', que será 
descrita na próxima subseção.
Dica: Na ação
login, utilizamos a propriedadeYii::app()->user->returnUrlpara pegar a URL da página que necessitou a autenticação. O componenteYii::app()->useré do tipo CWebUser (ou de uma classe derivada dele) que representa a sessão com as informações do usuário (por exemplo, nome de usuário, status). Para mais detalhes, veja Autenticação e Autorização.
Vamos dar uma atenção especial para o seguinte trecho de código que aparece na 
ação login:
$model->attributes=$_POST['LoginForm'];Como descrevemos em Atribuição Segura de Atributos, 
essa linha de código preenche um modelo com as informações enviadas pelo usuário. 
A propriedade attributes é definida pela classe CModel que espera um vetor de 
pares nome-valor, e atribui cada valor ao atributo correspondente no modelo. 
Sendo assim, se $_POST['LoginForm'], contém um vetor desse tipo, o código 
acima seria o equivalente ao código mais longo abaixo (assumindo que todos os 
atributos necessários estão presentes no vetor):
$model->username=$_POST['LoginForm']['username'];
$model->password=$_POST['LoginForm']['password'];
$model->rememberMe=$_POST['LoginForm']['rememberMe'];Nota: Para fazer com que a variável
$_POST['LoginForm']nos retorne um vetor em vez de uma string, utilizamos uma convenção ao nomear os campos do formulário na visão. Para um campo correspondente ao atributoade um modelo da classeC, seu nome seráC[a]. Por exemplo, utilizamosLoginForm[username]para nomear o campo correspondente ao atributousernamedo modeloLoginForm.
O trabalho restante agora é criar a visão login que deve conter um formulário 
HTML com os campos necessários.
            Found a typo or you think this page needs improvement?
                Edit it on github !
        
Signup or Login in order to comment.