laravel - Laravel 7 将数据传递给另一个控制器
问题描述
我目前正在考虑一个“问题”,但不知何故被卡住了。
这是我的第一个控制器中的“显示”功能。
public function show($id)
{
$model1 = Model1::find($id);
return view('models1.show',compact('model1'));
}
这是我的路线
<a href="{{ route('model2.create') }}" class="uk-button uk-button-text">Create Model2</a>
这是我的第二个控制器中的“创建”功能。
public function create()
{
return view('model2.create');
}
两种模型之间存在关系。Model1 有一个 Model2 - Model2 属于 Model1。当我在我的 Web 应用程序中显示来自 model1 的数据时,我有一个按钮,我在其中重定向到 model2 的创建视图,并且我想将 model1 中的 id 传递给这个视图。
我做了一些研究,但我有点想多了。有办法通过会话或发布请求传递它,但我不认为这是“最先进的”。
将 id 从 model1 传递到 model2 的创建视图的最佳方法是什么?
解决方案
在routes/web.php
你定义这样的路线:
Route::get('/model2/create/{model1Id}', 'Model2Controller@create')->name('model2.create')
在您使用的刀片模板中:
{{ route('model2.create', ['model1Id' => $model1->id]) }}
你的Model2Controller
样子是这样的:
public function create($model1Id) {
// use $model1Id here
}
您还可以使用Route Model Binding来节省一些代码行:
// routes/web.php
Route::get('/model2/create/{model1}', 'Model2Controller@create')->name('model2.create')
// blade template
{{ route('model2.create', ['model1' => $model1]) }}
// Model2Controller
public function create(Model1 $model1) {
// use $model1 directly, you don't have to do
// $model1 = Model1::findOrFail($model1Id) first
}
推荐阅读
- r - 如何设置 R 在 Jupyter Notebook IDE 中工作
- ruby-on-rails - 如何在 Rails 中创建地理和双精度数据库列
- javascript - JavaScript find() 方法搜索对象数组以查找元素,结果不可访问
- python - 列中的百分比值
- firebase - Unity 从我在 Mac OS 上的资产文件夹中删除文件本身
- c++ - 您如何将结构作为类中的私有成员并为其创建参数化的构造函数/设置器函数?
- yaml - 第 10 行的 yaml 语法有错误
- javascript - 未处理的拒绝 (TypeError):state.cartItems 未定义
- mysql - 在 SQL 中使用 AND 和括号分组不起作用
- python - 在这种情况下如何滚动带有背景的元素?