Как сделать модульную систему в laravel

Я пытаюсь создать модульную систему в Laravel 4.1.

У меня есть папки, подобные следующим:

app
app/controllers
app/controllers/BaseController.php
app/views/
app/modules/
app/modules/moduleName/
app/modules/moduleName/routes.php
app/modules/moduleName/controllers/
app/modules/moduleName/controllers/module.php

Когда я пытаюсь расширить BaseController, я использую пространства имен и получаю следующую ошибку:

 Symfony \ Component \ Debug \ Exception \ FatalErrorException
 Class 'Illuminate\Session' not found

Вот мои коды module.php:

 <?php namespace App\Modules\Twitter\Controllers;

 use Illuminate\Routing\Controllers\Controller;

 class Modulename extends Controller {

 }

У меня есть два вопроса.

  1. Как я могу вызывать сеансовые классы в модулях?
  2. У меня есть файл route.php в каждом модуле, но я все еще не могу маршрутизировать модули. Следовательно, я должен использовать файл route.php по умолчанию для laravel. Как я могу решить эту проблему?

Спасибо, в любом случае.


person Onur Göker    schedule 05.05.2014    source источник
comment
Вашего дерева недостаточно, нам нужно увидеть некоторый код, чтобы попытаться понять, как вы что-то делаете и что может происходить.   -  person Antonio Carlos Ribeiro    schedule 05.05.2014
comment
Я только что добавил вводные коды моего модуля.   -  person Onur Göker    schedule 05.05.2014


Ответы (1)


Все библиотеки Laravel существуют в глобальном пространстве имен, поэтому, если вы используете какой-либо код с пространством имен, вам необходимо указать библиотеки, которые вы вызываете.

Используя предоставленный вами код, это будет выглядеть так:

<?php namespace App\Modules\Twitter\Controllers;

 use Controller, Session;

 class Modulename extends Controller {

 }

Это избавляет вас от необходимости вводить все пространство имен.

person ollieread    schedule 05.05.2014
comment
Здорово! Это сработало для меня. Спасибо. Но как насчет маршрутизации? (2-й вопрос) - person Onur Göker; 06.05.2014
comment
Что ж, роутинг довольно прост, и Laravel в любом случае работает как модульная система, так что простого правильного пространства имен должно хватить. В чем именно проблема? - person ollieread; 06.05.2014
comment
Я хочу добавить собственные модули routing.php, например. app/modules/moduleName/routes.php Не по умолчанию laravel route.php - person Onur Göker; 06.05.2014
comment
просто включить файлы маршрутов для каждого модуля в основной файл route.php? - person Hop hop; 24.08.2016