Los controladores en Laravel nos servirán de apoyo de todas las funcionalidades que tendrán cada una de las rutas que definamos. En vez de crear funciones closure saturadas de métodos y acciones, los controladores serán los responsables de agrupar toda la lógica en una única clase definida en el directorio app/Http/Controllers.
Controladores básicos
Los controladores son clases que extienden de la clase Controller. Y para crearlos no tenemos que ir copiando y pegando los controladores ya existentes sino que nos podemos servir de las funcionalidades que da Artisan.
Para crear un controlador nuevo debemos ingresar en una consola el comando de Artisan make:controller con el nombre que le queramos dar a la clase (las clases empiezan todas por mayúscula por convenio):
php artisan make:controller PageController
Supongamos que lo que queremos es mostrar el home de la web. Hay que remarcar que estos métodos deben ser siempre públicos para que puedan ser enrutados.
<?php use Illuminate\Http\Request; namespace App\Http\Controllers; class PageController extends Controller { /* Mostramos la página 'home' */ public function index() { return view('home'); } }
El método público index se encarga de la lógica de devolver una vista llamada ‘home.blade.php’ que está en el directorio /resources/views.
El siguiente paso es indicar en las rutas la llamada al controlador y al método dentro del mismo:
Rote::get('/', 'PageController@index');
En esta ocasión el segundo argumento para el método Route::get() deja de ser una función anónima y ahora recibe una cadena. Esta cadena consta de dos partes separadas por una arroba (@). El primer componente es la clase del controlador y el segundo componente es el método solicitado.
Generar una URL de acción
Cuando creamos un enlace que requiera llamar a la acción de algún controlador, se usa el método action para ejecutarlo.
<a href="{{ action('PageController@logout') }}">Cerrar sesión</a>
El botón de «Cerrar sesión» llama al método logout() que hemos creado en el controlador PageController.
Espero ampliar esta parte del manual con los controladores de recursos, aquellos controladores en Laravel que no pueden invocarse mediante GET o POST.
Hola si quiero llamar a una funcion que devuelva un valor como lo hago?
Lo maximo que he conseguido es imprimir la url del controlador
Si lo que quieres es imprimir por pantalla algún valor te recomiendo que veas esta entrada del flujo de datos entre los controladores y las vistas