Контроллеры в Laravel

В прошлой статье "Маршруты в Laravel" был разобран инструмент маршрутов (Route). В примерах при срабатывании маршрута вызывалась анонимная функция, которая выводила содержание страницы. Но в реальных проектах это не совсем удобно. Поэтому вместо маршрутов используются контроллеры.

Попробуем написать пример с контроллером, который назовём "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;
   }
}
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: