首页 > 解决方案 > 在 Laravel 中的控制器之间传递数据

问题描述

我在我的 Laravel 网站上有一个视图,其中显示了一些产品。当用户点击一个产品时,他们会被带到那个特定的产品页面。在每个特定的产品页面上,都有一个“订购”按钮。当用户单击“订购”按钮时,他们将被带到仅针对他们单击“订购”按钮的特定产品的结帐页面。下面的控制器处理显示所有产品和单个产品。

产品控制器:

public function index()
    {
        $products = Product::get();

        return view('products.products')->with('products', $products);
    }

    public function show($slug)
    {
        $product = Product::where('slug', $slug)->firstOrFail();

        return view('products.product')->with('product', $product);
    }

路线:

Route::get('products', 'ProductController@index')->name('products');
Route::get('products/{product}', 'ProductController@show')->name('product');

Route::get('order', 'OrderController@create')->name('order')->middleware('verified');
Route::post('order', 'OrderController@order')->name('order');

我有一个单独的控制器来处理订单页面。如何将特定产品的数据传递到订单控制器/视图中?

标签: phplaravelmodel-view-controllercontrollerglobal-variables

解决方案


产品控制器:

public function show($slug)
    {
        $product= Product::where('slug', $slug)->firstOrFail();
        Session::put('product', $product);

        return view('products.product')->with('product', $product);
    }

订单控制器:

public function create()
    {
        $product = Session::get('product');
        
        return view('user.order')->with('product', $product);
    }

推荐阅读