Ken*_*Yap 5 php laravel laravel-routing laravel-5
我一直在为这个问题苦苦挣扎,我不知道我做错了什么.所以情况就是这样.我想创建一个控制器文件夹,将不同的控制器组合到他们的组中.默认情况下,laravel项目创建了一个这样的控制器文件夹结构
Http
--Controller
----Auth
Run Code Online (Sandbox Code Playgroud)
所以我想做的就是制作这样的东西
Http
--Controller
----Auth
----Folder_a
----Folder_b
----Folder_c
Run Code Online (Sandbox Code Playgroud)
制作文件夹后,我文件夹中的控制器也正确地命名空间
<?php namespace App\Http\Controllers\Folder_a;
/*
|--------------------------------------------------------------------------
| Use the main controller to allow extend to the main controller
|--------------------------------------------------------------------------
*/
use App\Http\Controllers\Controller;
class SomethingController extends Controller {
/* Do something here*/
}
Run Code Online (Sandbox Code Playgroud)
最后在我的routes.php中,我称之为这样的行为
Route::get('/action1/', array('as' => 'action1', 'uses' => 'SomethingController@action1'));
Run Code Online (Sandbox Code Playgroud)
但有些如何当我尝试导航到该网站时它会给我这个错误
ReflectionException in compiled.php line 1029:
Class App\Http\Controllers\SomethingController does not exist
Run Code Online (Sandbox Code Playgroud)
注意到它仍然进入默认文件夹App\Http\Controllers \找到控制器,但如果我喜欢这样
Route::get('/action1/', array('as' => 'action1', 'uses' => 'Folder_a\SomethingController@action1'));
Run Code Online (Sandbox Code Playgroud)
一切都会好的......在这种情况下我做错了什么?我也尝试过composer dump-autoload,没有任何改变.
你没有做错任何事.这是预期的行为!Laravel将App\Http\Controllers默认搜索相对于指定的控制器.所以你必须从那里指定命名空间.如果您有许多通向控制器的路由,则Folder_a可以使用路由组进行清理:
Route::group(['namespace' => 'Folder_a'], function(){
Route::get('/action1/', array('as' => 'action1', 'uses' => 'SomethingController@action1'));
// more routes
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1132 次 |
| 最近记录: |