Intereting Posts
Во время миграции база данных не настроена Как отсортировать массив по подобию по отношению к введенному слову. Нужен совет по изменению дизайна моей базы данных Отображение на складе в конце списка продуктов и странице результатов поиска Долгота по широте в формате PHP для адресации Как получить «экранированные» строки из db? Как преобразовать RTF в PDF с моей веб-страницы PHP с помощью OpenOffice? Как запустить cmd.exe для выполнения команды с помощью Task Scheduler? как я могу декодировать этот вредоносный PHP-скрипт? установить параметр плотности для imagick с php У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' '') 'в строке 2 Неопределенная ошибка переменной в моем скрипте PHP Настройка приветствия на основе времени пользователя (Доброе утро, добрый день …) PHP XML, как вывести хороший формат Отключить автозагрузчик Zend

Контроллеры пакетов в Laravel 4

Я хочу иметь контроллеры в своем пакете Laravel 4, но я не могу заставить маршрутизацию работать.

Я следил за инструкциями пакета в документации Laravel 4 и получил файл route.php, работающий с маршрутами без контроллера.

Может кто-нибудь, пожалуйста, дайте мне несколько инструкций о том, как заставить контроллеры пакетов работать в Laravel 4, это было бы очень оценено.

Заранее спасибо.

Lars

// EDIT: // routes.php Route::get('admin', 'Package::AdminController@index'); // Does not work Route::get('admin', function(){ // Works fine return 'Dashboard'; }) 

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

 Route::get('/admin', 'PackageNS\Package\Controllers\AdminController@getIndex'); 

или даже

 Route::controller('PackageNS\Package\Controllers\AdminController', 'admin'); 

Я не знаю специфики вашей ситуации и не знаю, является ли это «правильным» способом устранения этой проблемы, но поскольку я столкнулся с одной и той же проблемой, я решил поделиться с ней тем, как я ее решил.

Я поставил контроллеры пакетов в подкаталог контроллеров, так что моя структура каталогов выглядит так:

 /src /Vendor /Package PackageServiceProvider.php /config /controllers /lang /migrations /views /tests /public 

Затем я добавил папку контроллеров в карту классов компоновщика компоновщика моего пакета.

 { "name": "kevin-s-perrine/my-first-packge", "description": "", "authors": [ { "name": "Kevin S. Perrine", "email": "removed@somewhere.com" } ], "require": { "php": ">=5.3.0", "illuminate/support": "4.0.x" }, "autoload": { "classmap": [ "src/migrations", "src/controllers" ], "psr-0": { "KevinSPerrine\\MyFirstPackage": "src/" } }, "minimum-stability": "dev" } 

Наконец, я запустил composer dump-autoload в корневом каталоге пакета, а затем связал контроллер по имени в файле маршрутов.

 Route::get('myfirstpackage', 'MyFirstPackageHomeController@getIndex'); 

В поставщике услуг вашего пакета вы включили файл маршрутов? Я не считаю, что L4 загружает файл маршрута автоматически. Вы можете сделать это в любом месте, но я подозреваю, что это будет наиболее подходящее место для этого.

 public function register() { $this->package('vendor/pkgname'); require __DIR__.'/../routes.php'; } - public function register() { $this->package('vendor/pkgname'); require __DIR__.'/../routes.php'; } 

Ты сделал это:

 composer dump-autoload 

Автозагрузчик должен быть проинформирован о тех блестящих новых классах. Я также предлагаю вам проверить журналы веб-сервера на наличие ошибок.