Laravel controlador y enrutado

Publicado en 25 julio, 2014

Para no definir todo la lógica a nivel de ruta en el fichero route.php, podemos utilizar Controller classes. Los controladores se almacenan en app/controllers (aunque pueden almacenarse en otras rutas).

Controlador Basico

UserController.php ( La clase se llamara igual que el fichero)

class UserController extends BaseController {

/**
* Show the profile for the given user.
*/
public function showProfile($id)
{
$user = User::find($id);

return View::make(‘user.profile’, array(‘user’ => $user)); {{– Muestra la plantilla view/user/profile.blade.php y le pasa un array –}}
}

}

Para utilizar este controlador deberemos introducir la ruta en route.php

Route::get(‘user/{id}’, ‘UserController@showProfile’); {{–Cuando llamemos a la url  http://misitio/user/{id} no direccinoara a la el controlador UserController metodo showProfile–}}

Filtros

Se pueden definir en las rutas:

Route::get(‘profile’, array(‘before’ => ‘auth’, ‘uses’ => ‘UserController@showProfile’));

O en los controladores:

class UserController extends BaseController {

/**
* Instantiate a new UserController instance.
*/
public function __construct()
{
$this->beforeFilter(‘auth’, array(‘except’ => ‘getLogin’));

}

}

Controladores RESTful

Con este tipo de controladores ahorraremos mucho código.

La forma de llamarlo en route.php es la siguiente:

Route::controller(‘users’, ‘UserController’); {{– Solo pondremos la URI y en nombre del controlador–}}

Controlador:

UserController.php

class UserController extends BaseController {

{{– Los métodos tendrán el nombre compuesto por el método HTTP (get, post, ect…), más el nombre de la URI –}}

public function getIndex() {{– Este es el método inicial que utiliza la URI de el fichero de rutas (users)–}}
{
//
{{– El enrutado para el resto de métodos es users/URI–}}

public function postProfile() {{– –}}
{
//
}

public function anyLogin()
{
//
}

}

Controladores Resource

Este controlador hace fácil construir controladores RESTful en torno a los recursos.

Par crear controladores a traves de la linea de comando, (podemos crear el controlador solo con los métodos que le indiqumos):

php artisan controller:make NombreuriController 

php artisan controller:make NombreuriController –only=index,show

php artisan controller:make NombreuriController –except=index

Nos creara un fichero controlador con todos los metodos que necesitamos en app/controllers/NombreController.php

Erutamos a nuestro nuevo controlador en route.php, (podemos enrutar solo los métodos que necesitemos):

Route::resource(‘uri’, ‘NombreuriController’);

Route::resource(‘uri’, ‘NombreuriController’,
array(‘only’ => array(‘index’, ‘show’)));

Route::resource(‘uri’, ‘NombreuriController’,
array(‘except’ => array(‘create’, ‘store’, ‘update’, ‘destroy’)));

Documentación:

http://laravel.com/docs/controllers

 


Sin respuestas to "Laravel controlador y enrutado"


    ¿Algo que comentar?