Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
Laravel 6.2-动态调用控制器操作_Laravel - Fatal编程技术网

Laravel 6.2-动态调用控制器操作

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);

我使用了来自Internet的代码来动态调用控制器操作。下面是代码,用于
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);
并运行相应的操作并传递所有参数。
希望这是有意义的