【发布时间】:2015-02-18 20:35:53
【问题描述】:
我正在为我的项目创建自定义模块,以便能够根据需求向项目或其他项目添加一些功能。
我的问题在于路由,我将路由加载到 app.php 中加载的 ModuleServiceProvider 中:
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 |
+--------+--------------------------------+-------------------------------------------------------------------------------+--------+--------------------------------------------------------------------+------------+
如果您需要更多信息,请告诉我。感谢您的宝贵时间。
【问题讨论】:
-
尝试使用明确的测试路线:
Route::get('test', 'Canae\Http\Controllers\Admin\DogController@getIndex')并转到http://localhost/canae/public/admin/test -
@lukasgeiter 同样的错误这样做:(
-
尝试快速运行
php artisan route:clear以确保没有缓存任何内容。