Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel命名空间路由_Php_Laravel_Routing - Fatal编程技术网

Php Laravel命名空间路由

Php 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文件

与Laravel native
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工作,但我不知道我做错了什么…可能是一些错误的斜杠或其他东西。有趣的是,它给了我一个类不存在的错误,即使它抛出的路径是正确的…还有一件事你命名了着陆控制器,像这样