Laravel 5 自定义模块路由不工作
Laravel 5 custom module routes not working
我正在为我的项目创建自定义模块,以便能够根据要求向一个或另一个项目添加一些功能。
我的问题是路由,我在 ModuleServiceProvider
中加载路由 app.php:
include __DIR__.'/../../modules/canae/Http/routes.php';
我检查了这是否适用于该文件中的回显。 routes.php 文件包含以下代码:
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {
Route::controller('dogs', 'Canae\Http\Controllers\Admin\DogController');
});
我也检查了Laravel可以找到Controller,问题是无法执行里面的代码
这是我在 DogController 中的代码:
<?php namespace Canae\Http\Controllers\Admin;
class DogController extends \Origin\Http\Controllers\Controller {
public function getIndex() {
echo "Hello!";die();
}
}
错误是Controller method not found.
如果我将下面的extends
修改为Origin\Http\Controllers\Controller
(去掉第一个\
)我得到如下错误:Class 'Canae\Http\Controllers\Admin\Origin\Http\Controllers\Controller' not found
所以我的结论是里面的代码该控制器正在执行,至少从 Laravel.
读取
我也在尝试用这条路线实现索引功能http://localhost/canae/public/admin/dogs/index
。
这是执行php artisan route:list
的尾部结果:
| | GET|HEAD | admin/dogs/index/{one?}/{two?}/{three?}/{four?}/{five?} | | Canae\Http\Controllers\Admin\DogController@getIndex | auth |
| | GET|HEAD | admin/dogs | | Canae\Http\Controllers\Admin\DogController@getIndex | auth |
| | GET|HEAD|POST|PUT|PATCH|DELETE | admin/dogs/{_missing} | | Canae\Http\Controllers\Admin\DogController@missingMethod | auth |
+--------+--------------------------------+-------------------------------------------------------------------------------+--------+--------------------------------------------------------------------+------------+
如果您需要更多信息,请告诉我。感谢您的宝贵时间。
根据文档:http://laravel.com/docs/master/controllers
您是否尝试过使用 "use" 语句?您的代码将如下所示:
<?php
namespace Canae\Http\Controllers\Admin;
use Canae\Http\Controllers\Controller;
class DogController extends Controller {
public function getIndex() {
echo "Hello!";die();
}
}
我也不确定为什么您的命名空间是 "Canae\Http\Controllers\Admin",因为示例仅显示 "App\Http\Controllers"。我不熟悉您项目的具体结构,但删除“\Admin”可能也会有所帮助。
我解决了它移动 providers
内的行,将此路由加载到 providers
数组的第一项,甚至在应用程序之前。不知道为什么,但现在可以了。
我正在为我的项目创建自定义模块,以便能够根据要求向一个或另一个项目添加一些功能。
我的问题是路由,我在 ModuleServiceProvider
中加载路由 app.php:
include __DIR__.'/../../modules/canae/Http/routes.php';
我检查了这是否适用于该文件中的回显。 routes.php 文件包含以下代码:
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {
Route::controller('dogs', 'Canae\Http\Controllers\Admin\DogController');
});
我也检查了Laravel可以找到Controller,问题是无法执行里面的代码
这是我在 DogController 中的代码:
<?php namespace Canae\Http\Controllers\Admin;
class DogController extends \Origin\Http\Controllers\Controller {
public function getIndex() {
echo "Hello!";die();
}
}
错误是Controller method not found.
如果我将下面的extends
修改为Origin\Http\Controllers\Controller
(去掉第一个\
)我得到如下错误:Class 'Canae\Http\Controllers\Admin\Origin\Http\Controllers\Controller' not found
所以我的结论是里面的代码该控制器正在执行,至少从 Laravel.
我也在尝试用这条路线实现索引功能http://localhost/canae/public/admin/dogs/index
。
这是执行php artisan route:list
的尾部结果:
| | GET|HEAD | admin/dogs/index/{one?}/{two?}/{three?}/{four?}/{five?} | | Canae\Http\Controllers\Admin\DogController@getIndex | auth |
| | GET|HEAD | admin/dogs | | Canae\Http\Controllers\Admin\DogController@getIndex | auth |
| | GET|HEAD|POST|PUT|PATCH|DELETE | admin/dogs/{_missing} | | Canae\Http\Controllers\Admin\DogController@missingMethod | auth |
+--------+--------------------------------+-------------------------------------------------------------------------------+--------+--------------------------------------------------------------------+------------+
如果您需要更多信息,请告诉我。感谢您的宝贵时间。
根据文档:http://laravel.com/docs/master/controllers
您是否尝试过使用 "use" 语句?您的代码将如下所示:
<?php
namespace Canae\Http\Controllers\Admin;
use Canae\Http\Controllers\Controller;
class DogController extends Controller {
public function getIndex() {
echo "Hello!";die();
}
}
我也不确定为什么您的命名空间是 "Canae\Http\Controllers\Admin",因为示例仅显示 "App\Http\Controllers"。我不熟悉您项目的具体结构,但删除“\Admin”可能也会有所帮助。
我解决了它移动 providers
内的行,将此路由加载到 providers
数组的第一项,甚至在应用程序之前。不知道为什么,但现在可以了。