Observação: Este tutorial refere-se ao Laravel-4-BETA, estando totalmente DESATUALIZADO para a versão atual. Muita coisa mudou no framework…
Já que o nosso sistema é multi-usuário vamos fazer uma página ROCHEDA de cadastro de novos usuários.
Eu chega tô sem graça.
As coisas são tão fáceis com Laravel que eu fico escrevendo abobrinha nos posts para eles ficarem maiores.
Se você está acompanhando essa série de posts desde o começo aposto que já tem na cabeça como vai fazer esse cadastro de usuário.
Simbora?
Rotas
/* cadastro de novos usuários */ Route::get('cadastro', 'UserController@form'); Route::post('cadastro', ['before' => 'csrf', 'uses' => 'UserController@cadastro']);
Controller
Vamos criar o arquivo UserController.php com os métodos form e cadastro.
<?php class UserController extends BaseController { public function form() { return View::make('cadastro/form'); } public function cadastro() { $regras = ['email' => 'required|email|unique:users,email', 'senha' => 'required', 'confirmacao' => 'required|same:senha']; $validacao = Validator::make(Input::all(), $regras); if ($validacao->fails()) return Redirect::to('cadastro')->withErrors($validacao); //cadastrando um novo usuário $usuario = new User; $usuario->email = Input::get('email'); $usuario->password = Hash::make( Input::get('senha') ); $usuario->save(); return View::make('cadastro/sucesso'); } }
OPA!
COM CALMA!!!!
Utilizei duas regras bem legais no método cadastro.
A regra unique verifica se existe na tabela.
No caso, não podemos ter emails repetidos.
A regra same verifica se dois campos do formulário são iguais.
No caso, queremos ter certeza que a senha e a confirmação da senha são iguais.
Falando sério, papo de amigo: é fácil pra caralho caramba ou não?
Você já está programando com um sorriso no rosto?
View
Se vocês derem uma reparada no controller vão ver que nas chamadas para as views utilizei um cadastro/ antes do nome da view.
Isso quer dizer que a view encontra-se dentro dessa pasta.
Então, criei a pasta cadastro e coloquei dentro dela os arquivos.
form.blade.php
@extends('template') @section('conteudo') <div class="row-fluid marketing"> <div class="span6"> @if ( count($errors) > 0) Erros encontrados:<br /> <ul> @foreach ($errors->all() as $e) <li>{{ $e }}</li> @endforeach </ul> @endif <form method="post" action="{{ URL::to('cadastro') }}"> <label> Email: <input type="text" name="email"> </label> <label> Senha: <input type="password" name="senha"> </label> <label> Confirmação da senha: <input type="password" name="confirmacao"> </label> <input type="hidden" name="_token" value="{{ csrf_token() }}" /> <input type="submit" value="Login"> </form> </div> </div> @stop
sucesso.blade.php
@extends('template') @section('conteudo') <div class="row-fluid marketing"> <div class="span6"> Usuário Cadastrado com Sucesso.<br /> <a href="{{ URL::to('login') }}">Clique aqui para logar</a> </div> </div> @stop
Considerações
Tudo muito fácil.
Não tenho mais nada a declarar 😀
No fim das contas eu gostaria de deixar aqui uma observação: eu não conferi se o usuário está logado.
Então, qualquer usuário, logado ou não, pode tentar criar um cadastro no aplicativo.
Isso é errado?
No meu ponto de vista sim, o usuário deveria fazer logout para poder se cadastrar.
Fiz essa validação, mas não coloquei o código aqui.
É muito simples e acredito que qualquer pessoa que esteja acompanhando essa série de artigos pode fazê-lo sem dificuldade (dica: é um filtro que já vem pronto).
Mesmo assim, pode-se copiar o código lá no GiHub:
https://github.com/frenetic/todovel
Muito bom.
Consegui chegar até aqui.
Estou aprendendo bastente.
Obrigado.
Que bom cara!
Muito boa sorte!
Acredito que em mais uns 5 posts essa série será terminada.
E ai você será um Artisan!
Uma boa dica: Traducao das msgs
Baixa esta pasta para dentro do seu projeto: https://github.com/mapb1990/laravel-pt_PT
a pasta pt deve esta dentro da sua lang, e ele ira mostrar as msgs todas em PT
Outra coisa legal que achei, é forma como vc pode mostrar as msgs: coloque isso debaixo do seu input: {{ $errors->first(‘confirmacao’,’:message’) }}