【问题标题】:Laravel 7 Pass Data To Another ControllerLaravel 7 将数据传递给另一个控制器
【发布时间】:2020-11-07 14:07:27
【问题描述】:

我目前正在考虑一个“问题”,但不知何故被卡住了。

这是我的第一个控制器中的“显示”功能。

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。 当我在我的网络应用程序中显示来自 model1 的数据时,我有一个按钮,我可以在其中重定向到 model2 的创建视图,并且我想将 model1 中的 id 传递给这个视图。

我做了一些研究,但我有点想多了。有办法通过会话或发布请求传递它,但我认为这不是“最先进的”。

将 id 从 model1 传递到 model2 的创建视图的最佳方法是什么?

【问题讨论】:

    标签: laravel eloquent view controller


    【解决方案1】:

    在您的 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
    }
    

    【讨论】:

    • 如果您在示例中包含Route Model Binding,您可以使其更完整;)
    • 感谢您的回答!我看了一下路由模型绑定并解决了它:)
    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2016-11-26
    相关资源
    最近更新 更多