Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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 5.7如何将一个控制器的变量id传递给另一个控制器_Php_Laravel - Fatal编程技术网

Php laravel 5.7如何将一个控制器的变量id传递给另一个控制器

Php laravel 5.7如何将一个控制器的变量id传递给另一个控制器,php,laravel,Php,Laravel,我有两个控制器,我尝试将变量形式的方法id从一个控制器传递到另一个控制器,我得到了一个类似于>MethodNotAllowedHttpException的错误。我将在操作后添加我的url,如下>。解决此问题的最佳方法是什么?您很可能获得MethodNotAllowedException,因为您正在通过GET或其他方式打开一个定义为POST路由的路由 为了避免这种情况,您可以使用php artisan route:list并获得所有已定义路由的列表,然后查看如何访问它们: +--------+--

我有两个控制器,我尝试将变量形式的方法id从一个控制器传递到另一个控制器,我得到了一个类似于>MethodNotAllowedHttpException的错误。我将在操作后添加我的url,如下>。解决此问题的最佳方法是什么?

您很可能获得MethodNotAllowedException,因为您正在通过GET或其他方式打开一个定义为POST路由的路由

为了避免这种情况,您可以使用php artisan route:list并获得所有已定义路由的列表,然后查看如何访问它们:

+--------+-----------+----------------------------------------------------+------------------------+------------------------------------------------------------------------+--------------+
| Domain | Method    | URI                                                | Name                   | Action                                                                 | Middleware   |
+--------+-----------+----------------------------------------------------+------------------------+------------------------------------------------------------------------+--------------+
|        | GET|HEAD  | /a/show/{id}                                       |                        | App\Http\Controllers\AController@show                                  | web          |
|        | GET|HEAD  | /b/show/{id}                                       |                        | App\Http\Controllers\BController@show                                  | web          |
假设你有两个控制器:A控制器和B控制器。每个控制器中都声明了一个show方法

类AController扩展控制器{ //…其他与AController相关的代码 公共函数show$id{ dd$id; } } 类BController扩展控制器{ //…其他B控制器相关代码 公共函数show$id{ dd$id; } } 然后您可以这样定义您的路线:

像example.com/a/show/10这样的链接将加载控制器的show方法。我们在AController::show方法主体中的所有内容都在$id上,如果访问该链接,我们将得到10个打印内容

我们可以替换dd$id;与:

并定义另一条路线:

Route::get('/b/show/{id}', 'BController@show');
这样,如果我们打开前面的链接:example.com/a/show/10,我们将被重定向到:example.com/b/show/10,并且将执行BController::show方法,并使用打印变量

要点:


请添加控制器的代码
redirect()->action('BController@show', ['id' => $id]);
Route::get('/b/show/{id}', 'BController@show');