laravel请求验证规则传递参数

时间:2018-04-10 04:46:08

标签: laravel laravel-5.5

我在这里直截了当,我想知道是否可以在Laravel中的:- initialization(main). :- set_prolog_flag(double_quotes, chars). main :- replace_substring("this is a string","string","replaced string",Result), writeln(Result). replace_substring(String,To_Replace,Replace_With,Result) :- append(First,To_Replace,String), append(First,Replace_With,Result). 传递参数。

这是我的代码:

我需要将validation rule传递给$product->id类。

我已经阅读了一些文章而无济于事,无法将参数传递给它。我的另一个解决方案是不使用验证规则类,并使用ProductUpdateRequest直接在控制器上进行验证。由于我可以访问控制器上的$request->validate[()],因此我可以轻松地进行验证。但出于好奇,我有办法通过$product->id上的$product->id吗?

CONTROLLER

validation class

确认规则

public function update(ProductUpdateRequest $request, Product $product)
    {
        $request['detail'] = $request->description;
        unset($request['description']);
        $product->update($request->all());

        return response([
            'data' => new ProductResource($product)
        ], Response::HTTP_CREATED);
    }

任何建议/答案/帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:4)

您可以从请求中获取已解析的绑定

$product = $request->route('product');

rules方法中,您可以使用上述方法获取产品实例。

public function rules()
{
    $product = $this->route('product');
    return [
        'name' => 'required|max:255|unique:products,name'.$product->id,
        'description' => 'required',
        'price' => 'required|numeric|max:500',
        'stock' => 'required|max:6',
        'discount' => 'required:max:2'
    ];
}

答案 1 :(得分:0)

这是我在更新时验证唯一产品名称的方式。我将产品ID作为路径参数传递,使用unique验证规则验证产品名称是否存在于数据库中除 >对于此产品(id)。

class ProductController extends Controller {

    public function update(Request $request, $id) {
        $this->validate($request, [
            'name' => 'required|max:255|unique:products,name'.$id,
        ]);

        // ...
    }

}

答案 2 :(得分:0)

对于验证规则中的自定义请求,您可以将 查看:

<input type="hidden" value="product_id">

在验证请求中:

public function rules()
{
    $product_id = $this->request->get('product_id');

    return [
      //
    ];
}