gpt4 book ai didi

php - Laravel:使用路由/模型绑定(bind)时在表单请求中访问模型实例

转载 作者:IT王子 更新时间:2023-10-28 23:57:31 26 4
gpt4 key购买 nike

我在项目中为我的一个模型设置了一些路由/模型绑定(bind),效果很好。我能够在我的路由路径中使用我的绑定(bind),并接受我的模型实例作为我 Controller 中相关方法的参数。

现在我正在尝试使用这个模型做一些工作,所以我在我的 Controller 中创建了一个方法来接受表单请求,这样我就可以进行一些验证。

public function edit(EditBrandRequest $request, Brand $brand)
{
// ...

我的模型的每个不同实例都可以进行不同的验证,因此我需要能够使用该模型的一个实例来构建一组自定义的验证规则。

有没有办法获取从表单请求注入(inject) Controller 的模型实例?

我已经尝试在表单请求的构造函数中对模型实例进行类型提示

class EditBrandRequest extends Request
{
public function __construct(Brand $brand)
{
dd($brand);
}

我还尝试在表单请求的 rules() 方法中对模型实例进行类型提示。

class EditBrandRequest extends Request
{
// ...

public function rules(Brand $brand)
{
dd($brand);

在这两种情况下,我都获得了模型的空/新实例,而不是我期望的实例。

当然,我总是可以通过不打扰表单请求而只是在 Controller 中生成规则并手动验证来解决这个问题 - 但如果可能的话,我宁愿使用 Laravel 方式

谢谢

最佳答案

您可以使用绑定(bind)键简单地访问它,例如,如果您绑定(bind) Brand 模型: $router->model('brand', '\App\Brand') 您可以使用 $this->brand 获取模型的实例。以下是验证规则示例:

'slug' => 'required|unique:brand,slug,' . $this->brand->id,

编辑

有时您的输入名称可能与绑定(bind)键使用相同的名称,例如,如果您将 Address 模型绑定(bind)为 address,那么您有一个输入字段address 会让 Laravel 感到困惑。对于这种情况,您可以使用 route() 方法。

'address' => 'required|unique:addresses,address,' . $this->route('address')->id,

关于php - Laravel:使用路由/模型绑定(bind)时在表单请求中访问模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37347415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com