Laravel 6.2-动态调用控制器操作
我使用了来自Internet的代码来动态调用控制器操作。下面是代码,用于Laravel 6.2-动态调用控制器操作,laravel,Laravel,我使用了来自Internet的代码来动态调用控制器操作。下面是代码,用于web.php。但我不完全理解它的作用 Route::match(['get', 'post'], '{controller}/{action?}/{params1?}/{params2?}', function ($controller, $action = 'index', $params1 = '',$params2 = '') { $params = explode('/', $params1);
web.php
。但我不完全理解它的作用
Route::match(['get', 'post'], '{controller}/{action?}/{params1?}/{params2?}', function ($controller, $action = 'index', $params1 = '',$params2 = '') {
$params = explode('/', $params1);
$params[1] = $params2;
$app = app();
$controller = $app->make("\App\Http\Controllers\\" . ucwords($controller) . 'Controller');
return $controller->callAction($action, $params);
})->middleware('supadminauth');
有人能解释一下吗?这是一个使用它的例子: 如果您有如下控制器:
class AdminController extends Controller {
public function index(){ //sample 0, sample 1
...
}
public function view($param1){ //sample2 , sample3
...
}
}
这里有一些调用它们的示例路线
sample0: yoursite.com/admin
sample1: yoursite.com/admin/index
sample2: yoursite.com/admin/view
sample3: yoursite.com/admin/view/5
请注意,
{action?}
中的问题?
表示它可以有值,也可以没有值。其他事情简单明了。你需要更多解释吗?这是使用它的示例:
Route::match(['get', 'post'], '{controller}/{action?}/{params1?}/{params2?}', function ($controller, $action = 'index', $params1 = '',$params2 = '') {
如果您有如下控制器:
class AdminController extends Controller {
public function index(){ //sample 0, sample 1
...
}
public function view($param1){ //sample2 , sample3
...
}
}
这里有一些调用它们的示例路线
sample0: yoursite.com/admin
sample1: yoursite.com/admin/index
sample2: yoursite.com/admin/view
sample3: yoursite.com/admin/view/5
请注意,{action?}
中的问题?
表示它可以有值,也可以没有值。其他事情简单明了。你需要更多的解释吗
Route::match(['get', 'post'], '{controller}/{action?}/{params1?}/{params2?}', function ($controller, $action = 'index', $params1 = '',$params2 = '') {
第一行查看请求,看看它是get请求还是post请求,如果它是其他类型的请求,这意味着它不匹配并且不会继续。然后,url被分为4个部分,按名称对应,并被传递到具有相同名称的变量中,即$controller、$action、$param1和$params2,其中最后3个变量不需要存在(名称末尾带有?)
我认为这是一种创建参数数组的粗糙方法,如$params
,其中以下内容更合适
$params = [$params1, $params2];
然后加载相关的控制器
return $controller->callAction($action, $params);
并运行相应的操作并传递所有参数。希望这是有意义的 第一行查看请求,看看它是get请求还是post请求,如果它是其他类型的请求,这意味着它不匹配并且不会继续。然后,url被分为4个部分,按名称对应,并被传递到具有相同名称的变量中,即$controller、$action、$param1和$params2,其中最后3个变量不需要存在(名称末尾带有?) 我认为这是一种创建参数数组的粗糙方法,如
$params
,其中以下内容更合适
$params = [$params1, $params2];
然后加载相关的控制器
return $controller->callAction($action, $params);
并运行相应的操作并传递所有参数。希望这是有意义的