如何从资源控制器传递 id 来查看 laravel 8

Posted

技术标签:

【中文标题】如何从资源控制器传递 id 来查看 laravel 8【英文标题】:how to pass id from Resources controller to view laravel 8 【发布时间】:2022-01-10 17:57:18 【问题描述】:

你好,我想将 id 传递给我的视图 如果我尝试这样做,我会得到项目,但我无法对动态项目进行硬编码,

public function getDescription(Marketplace $id)

    $product = Marketplace::find(17);
    return view('market.description', compact('product'));

但这会返回此错误 属性 [product_img] 在此集合实例上不存在。 (查看:C:\xampp\htdocs\sellout\resources\views\market\description.blade.php

public function getDescription(Marketplace $id)

    $product = Marketplace::find($id);
    return view('market.description', compact('product'));

路线:

Route::get('market/product-description', [MarketsPlaceController::class, 'getDescription']);
Route::post('market/product-description', [MarketsPlaceController::class, 'getDescription'])->name('productDesc');
Route::resource('market', MarketsPlaceController::class);

【问题讨论】:

这是我的路线..... Route::get('market/product-description', [MarketsPlaceController::class, ('getDescription')]); Route::post('market/product-description', [MarketsPlaceController::class, ('getDescription')])->name('productDesc'); Route::resource('market', MarketsPlaceController::class); 【参考方案1】:

您没有为执行该操作的路由定义路由参数,因此$idMarketplace 模型的一个新的不存在实例。它不是标识符,因为没有路由参数。

当您将Marketplace 的不存在实例(新实例)传递给Marketplace::find($id) 时,该实例为Arrayable,因此调用toArray 以返回属性/关系。由于它是新的,它没有任何属性,最终成为一个空数组。这将导致返回一个空集合。

目前您无法将所需的记录实际传递给您的视图,因为您没有定义它的路由参数。如果您定义了路由参数,则可以使用类似 Route Model Binding 的方法自动为您查找记录:

Route::get('market/marketplace/product-description', [MarketPlacesController::class, 'getDescription']);

public function getDescription(Marketplace $marketplace)

    return view('market.description', ['product' => $marketplace]);

假设 Marketplace 是一个 Eloquent 模型

【讨论】:

谢谢@lagbox,已经尝试过您的建议,它仍然返回页面打开的空数据,我在地址栏上有ID,但没有返回产品的详细信息。谢谢 @Barnabaskoloz 显示您正在使用的路线和 URL 非常感谢,我刚刚检查了路线,发现我没有在我的帖子路线中传递 marketplace 参数。我做到了,而且工作完美,我感谢您的时间和精力 没问题,欢迎采纳

以上是关于如何从资源控制器传递 id 来查看 laravel 8的主要内容,如果未能解决你的问题,请参考以下文章

如何将可选 ID 从 Route 传递给 Laravel 控制器?

在laravel中查看路由动态数据数组

如何在laravel php中将变量从视图传递到控制器而没有表单

laravel如何将数据从表单传递到控制器

如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?

Laravel - 如何通过资源路由将变量传递给控制器​​?