Попробуем написать пример с контроллером, который назовём "MouseController". И попробуем вызвать его на титульную страницу сайта:
<?php
Route::get('/', 'MouseController@show');
?>
В этом коде можно заметить конструкцию "@show". Такая запись означает, что при использовании контроллера мы обратились к действию "show" (по сути это метод класса контроллера). Попробуем описать этой действие:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MouseController extends Controller{
public function show() {
return 'титульная страница';
}
}
?>
Как можно видеть, единственное что делает метод "show" - это выводит фразу "титульная страница".
Для обеспечения автозагрузки класса необходимо, чтобы название файла соответствовало названию класса. Иначе Laravel не загрузит файл.
Передача параметра в контроллер
Существует возможность передачи параметров действиям контроллеров. Приведём пример кода, отвечающего за вывод страницы с детальным содержанием новости:<?php
Route::get('/news/{id}/', 'MouseController@show');
?>
Необходимо принять значение параметра id в действии контроллера. Для этого его необходимо написать в переменные для метода "show":
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MouseController extends Controller{
public function show($id) {
return 'Страница новости с id=' . $id;
}
}
?>
Несколько параметров в контроллер
Передавать можно не только один параметр, но и несколько. От этого лишь зависит количество аргументов у действия. Попробуем сделать два параметра:<?php
Route::get('/news/{section}/{id}/', 'MouseController@show');
?>
У метода класса напишем два аргумента, в которые попадут значения двух параметров:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MouseController extends Controller{
public function show($section, $id) {
return 'новость под номером ' . $id . ' из раздела ' . $section;
}
}
?>