ToDoVel [Parte 05]: Hello World – Controllers

Observação: Este tutorial refere-se ao Laravel-4-BETA, estando totalmente DESATUALIZADO para a versão atual. Muita coisa mudou no framework…

Já demos uma breve olhadela em como funcionam as views e em como funciona os routes.
Agora, vamos dar aquela leve pincelada de azul de metileno em como funciona os controles (controllers se você gosta mais do termo em inglês).

Controllers

Os controles de uma aplicação Laravel 4 ficam na pasta app/controllers.
Por padrão, o Laravel 4 já possui dois controles nessa pasta para servir de exemplo. Você não precisa utilizar nenhum desses controles.
Na verdade, é bom você manter o BaseController.php, mas não é obrigatório.

Por motivo de força maior da preguiça, vamos utilizar o arquivo HomeController.php.
Dentro dele vou criar um método chamado olá que irá fazer o mesmo que a rota olá está fazendo, a mesma que foi definida no post anterior:

class HomeController extends BaseController {
	public function ola($usuario = null)
	{
		return View::make('ola')->with('usuario', $usuario);
	}
}

Lá na minha rota vou remover o closure que lá se encontra, informando ao Laravel para executar um controller.

Route::any('ola/{usuario?}', 'HomeController@ola');

E ai é só acessar normalmente.

Para Que Serve O Controller?

A idéia de utilizar o controller é que você execute processamentos antes de retornar a visão.
Se você não fosse executar nada, ou fosse executar uma besterinha, dava para fazer tudo dentro da closure, como fizemos no começo de tudo.
Porém, para manter seu routes.php mais legível, recomendo agrupar processamentos de urls dentro de controllers.
Por exemplo, podemos garantir que o nome do usuário tenha a primeira letra maíscula utilizando a função ucwords.

class HomeController extends BaseController {
	public function ola($usuario = "fulano")
	{
		$usuario = ucwords($usuario);
		return View::make('ola')->with('usuario', $usuario);
	}
}

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *