Php Laravel命名空间路由
与Laravel nativePhp Laravel命名空间路由,php,laravel,routing,Php,Laravel,Routing,与Laravel nativeApp\Http\controllers不同的文件夹中有控制器。我正在使用一个自定义的Lib\MyApp文件夹,其中包含模块。每个模块都有自己的控制器、模型等。我添加到composer.json自动加载到app\lib 我所做的是更改RouteServiceProvider名称空间: protected $namespace = 'App\Lib\MyApp'; 我做了一个composer转储自动加载 在MyApp内部是一个Landing\Controller文件
App\Http\controllers
不同的文件夹中有控制器。我正在使用一个自定义的Lib\MyApp
文件夹,其中包含模块。每个模块都有自己的控制器、模型等。我添加到composer.json
自动加载到app\lib
我所做的是更改RouteServiceProvider
名称空间:
protected $namespace = 'App\Lib\MyApp';
我做了一个composer转储自动加载
在MyApp
内部是一个Landing\Controller
文件夹,其中包含实际的Controller类
尝试1(理想):
Route::get('/', '\Landing\Controller\LandingController@index');
Route::get('/', 'MyApp\Landing\Controller\LandingController@index');
我想这样称呼我的路线:
Route::get('/', 'Landing\Controller\LandingController@index');
但通过这种方式,我得到了一个ReflectionException
,即使
尝试2:
Route::get('/', '\Landing\Controller\LandingController@index');
Route::get('/', 'MyApp\Landing\Controller\LandingController@index');
当我刷新页面时,尾部的斜杠去掉了名称空间部分,类仍然不存在
尝试3:
Route::get('/', '\Landing\Controller\LandingController@index');
Route::get('/', 'MyApp\Landing\Controller\LandingController@index');
这只是复制了MyApp
文件夹,未按预期找到类
试试4(工作,但不要这样)
虽然我想去掉\MyApp\
部分,但这很好
这样做可能吗?您可以在路由中使用名称空间来实现此目的:
Route::namespace('Landing\Controller')->group(function () {
Route::get('/', 'LandingController@index');
// + other routes in the same namespace
});
不要忘记将名称空间添加到控制器:
<?php namespace App\Lib\MyApp\Landing\Controller;
在Laravel中添加名称空间的方法有很多
Route::group(['prefix' => 'prefix','namespace'=>'Admin'], function () {
// your routes with"App\Http\Controllers\Admin" Namespace
});
Route::namespace('Admin')->group(function () {
// your routes with"App\Http\Controllers\Admin" Namespace
});
//single route
Route::namespace('Admin')->get('/todo', 'TaskController@index');
//single route
Route::get('/todo', 'Admin/TaskController@index');
// by ->namespace
Route::prefix('admin')->namespace('Admin')->group(function () {
// route code
});
像这样的名称空间怎么样:Route::namespace('Landing\Controller')->group(function(){Route::get('/'),'LandingController@index“);//+同一命名空间中的其他路由})代码>??虽然我喜欢这种方法,但这种方法不适用于任何组合我认为它必须根据:pYeah工作,但我不知道我做错了什么…可能是一些错误的斜杠或其他东西。有趣的是,它给了我一个类不存在的错误,即使它抛出的路径是正确的…还有一件事你命名了着陆控制器,像这样