Дисциплины - Серверные технологии разработки

Разработка web-приложения с серверной маршрутизацией - Контроллеры

Контроллеры хранятся в папке app/controllers/. Этот путь, в свою очередь определен в файле composer.json в настройке classmap.

Все контроллеры должны наследовать класс BaseController. Этот класс также может хранится в папке app/controllers, и в него можно поместить общую логику для других контроллеров.BaseController расширяет базовый класс Controller.

Создаем контроллер

Создание контроллера с помощью artisan-команды.

php artisan make:controller StaticController

Есть несколько способов определения маршрута для контроллера.

В файле app/routes.php.

Определение маршрута для контроллера с помощью методаget.

Route::get('static', 'StaticController@index');

Вот так будет выглядеть сам контроллер:

Простейший контроллер StaticController.

namespace App\Http\Controllers;

class StaticController extends BaseController {

     public function getIndex()

     {

            echo 'Ok';

     }

}

Обратите внимание на namespace (пространство имен) в начале файла.

Теперь, если в адресной строке браузера набираем cabinet, получаем ответсервера Ok

Создание RESTfull-контроллера через artisan

Сперва в консоли перейдем в папку с файлом artisan. Находясь в этой папке, выполним следующую консольную команду.

Можно также создавать RESTfull-контроллеры:

Создание RESTfull-контроллеров.

php artisan make:controller NewsController --resource

Получим такой контроллер:

RESTfull-контроллер.

class NewsController extends \BaseController {

     public function index()

     {

          //

     }

     public function create()

     {

          //

     }

     public function store()

     {

          //

     }

     public function show($id)

     {

          //

     }

     public function edit($id)

     {

          //

     }

     public function update($id)

     {

          //

     }

     public function destroy($id)

     {

          //

     }

}

Также необходимо зарегистрировать роут к этому контроллеру.

Регистрация роута в файле app/routes.php.

Route::resource('news', 'NewsController');

Такая регитрация дает множество маршрутов для обработки RESTfull экшнов контроллера News. Сам сгенерированный контроллер уже имеет методы-заглушки для каждого из этих маршрутов с комментариями, которые напоминают вам о том, какие типы запросов они обрабатывают.

Тип

Путь

Действие

Имя маршрута

GET

/resource

index

resource.index

GET

/resource/create

create

resource.create

POST

/resource

store

resource.store

GET

/resource/{id}

show

resource.show

GET

/resource/{id}/edit

edit

resource.edit

PUT/PATCH

/resource/{id}

update

resource.update

DELETE

/resource/{id}

destroy

resource.destroy

Где resource – имя контроллера.

Чтобы создать только часть из возможных экшнов, можно воспользоваться настройками –only или --except :

Ключевые слова only и except можно указать при регистрации маршрута:

Создание маршрутов для группы экшнов.

Route::resource('news', 'PhotoController',

                array('only' => array('index', 'show')));

// либо:

Route::resource('news', 'PhotoController',

                array('except' => array('create', 'store', 'update', 'delete')));

 Вложенная папка для контроллеров

Нужно ли создавать вложенную папку для контроллеров - каждый программист решает для себя сам. Здесь мы рассмотрим как это сделать. Сперва просто создаем папки, где будут находиться контроллеры.

app/controllers

app/controllers/auth

app/controllers/adminka

...

В самих контроллерах ничего не меняем. Из корневой папки проекта открываем консоль и выполняем следующую команду composer:

Перестройка автозагрузки контроллеров.

composer dump-autoload

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
80422 БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР
Вопросы