Контроллеры в 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мотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб