要在制作自定义模块时将控制器调用到我的路由中。我将自定义模块放入App文件夹,将模块文件夹(如App / Modules / OEM /
)放入我的route.php(进入App / Modules / OEM / routes.php)
Route::group(['prefix' => '', 'namespace' => 'App\Modules\OEM\Controllers'], function () {
Route::get('/welcome', 'OemControllers@welcome');
});
我的控制器文件:(App / Modules / OEM / Controller / OemControllers.php)
<?php namespace App\Modules\OEM\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Modules\OEM\Models\OemModel;
class OemControllers extends Controller{
public function __construct (OemModel $OemModel)
{
$this->middleware('auth');
$this->OemModel = $OemModel;
}
public function welcome(){
return view('OEM::welcome');
}
}
我的模型文件:(App / Modules / OEM / Models / OemModel.php)
<?php
namespace App\Modules\OEM\Models;
use Illuminate\Database\Eloquent\Model;
class OemModel extends Model{
public static function get_url_list() {
return "this is model of OEM";
}
}
我的问题是,当我点击URL localhost:8000 / welcome时,它将重定向到home,因此无法从我的路线调用控制器,也无法将模型调用到控制器中。
请帮忙。 谢谢你。
答案 0 :(得分:0)
您正在尝试错误的命名空间分配,您想要在组上使用命名空间,而不是将控制器放在App \ Http \ Controllers文件夹中,因为它的默认设置是从Controllers文件夹访问它们,或者分别为每个路由提供完整的命名空间。
//for using namespace on route group
Route::namespace('Admin')->group(function () {
// Controllers Within The "App\Http\Controllers\Admin" Namespace
});
//or provide seprately complete name space for each route
Route::get('/welcome', 'App\Modules\OEM\Controllers\OemControllers@welcome');
答案 1 :(得分:0)
您必须在web.php这样的模块中调用控制器:
Route::get('/welcome', '\App\Modules\OEM\Controllers\OemControllers@welcome');