我为我的项目创建自定义模块,以便能够根据需要为项目或其他项目添加一些功能。
我的问题是路由,我在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 |
+--------+--------------------------------+-------------------------------------------------------------------------------+--------+--------------------------------------------------------------------+------------+
告诉我您是否需要更多信息。谢谢你的时间。
答案 0 :(得分:2)
我解决了它将providers
内部的行移动到providers
数组的第一项,甚至在应用程序之前。不知道为什么,但现在它正在发挥作用。
答案 1 :(得分:0)
根据http://laravel.com/docs/master/controllers
中的文档您是否尝试过使用“使用”声明?您的代码将如下所示:
<?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”也可能有所帮助。