Estou com uma pequena duvida, estou desenvolvendo uma pagina que o form de login esta no layout(main.php) pois deve aparecer em todas as pagina. Onde fica o controller do layout para que eu possa renderizar este form e fazer as suas validação.
Faça um novo component na pasta components, por exemplo loginForm
tambem crie uma model para o login
o código do loginForm seria algo como
<?php
class loginForm{
protected $model;
protected function renderContent()
{
if(!$model)
$this->model=new UserModel;
//crie o form usando o model aqui
}
?>
Layouts não tem controllers. O Controller que vc acessa no layout é o controller corrente.
Mesmo o layout não tendo controller específico, nada impede que vc acesse uma action a partir dele. Vc pode fazer seu login no layout, e apenas setar a propriedade action do form com o endereço da action que vc quer acessar.
Se estiver usando CActiveForm, veja aqui, ou se vc está usando Chtml::form(), veja aqui.
Ta blz mais se no caso a minha aplicaçao tiver varios controles e quando eu setar o action ao controler correspondente como eu retorno na pagina que o usuario estava tipo, ele esta na pagina de produtos ai ele deseja fazer o login, ele faz mais tem que voltar na mesma pagina que ele estava, mais a action estava em outro controler…
E outra como eu faria para retornar o erro caso o usuario e senha estivesse errada. Estou falando de um site que tem varios controlles.
Pois no meu site tem uma pasta produto que tem o controlerProduto e uma pasta home que tem o controlerHome, e ambas tem o login
Aqui fica a minha resposta em português de Portugal:
Todos os controladores são extensões da classe Controller que se encontra em protected/components. Se criares aí uma accão ela fica disponivel em todos os controladores. Por isso podes usar uma funcção na classe Controller e vai ficar disponivel em todos os controladores.
No entanto, acho que não devias fazer assim, o login pode ser feito sempre no mesmo controller, o form do login pode estar no layout mas o controller que faz o login é sempre o mesmo.
Eu não lembro exatamente, mas tinha uma forma. Fiz isso pra empresa, mas nem lembro como, faz tempo. na segunda dou uma olhada. Mas acho que era do Yii mesmo…
Blz eu fiz o formulario login via html sem usar os helper do yii, no action eu coloquei(livros/index) pois o site que estou fazendo vai validar o usuario e mostrar para ele os livros que estão vinculado a sua conta. Ate ai blz.
O caso é o seguinte o site tera dois login um para frontend que seria os clientes e outro para o backend sistema admin do site, o do Backend ja esta funcionado este esta ok, o meu problema esta sendo o do frontend.
Gostaria de saber como eu posso validar este usuario pois eu nao estou usando nenhum model form pois fiz o form na mao e eu estava pensando fazer as validaçoes dos campos no proprio action. O problema é que eu nao tenho a minima ideia de fazer a validaçao deste usuario com o banco, tenho um model usuario, sei que tb tem a class UserIdentity mais como poderia fazer de forma simples esta validação sem que utilize esta class pois como eu disse sao dois formulario de login e eu nao quero que aconteça confritos. Apesar de estar separado.
A minha ideia é fazer a validaçao deste usuario no proprio (livro/index) mais como poderia adapitar o UserIdentity neste action, pois os comando (Yii::app()->user->id e outros) nao pode ter conflito com o backend.
Resulmindo tudo eu quero separar o login frontend e o Backend.