如何在表单请求上创建唯一验证(UPDATE / PATCH)的条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在表单请求上创建唯一验证(UPDATE / PATCH)的条件相关的知识,希望对你有一定的参考价值。
我试图通过将“验证请求”移动到名为“BookRequest”的表单请求来使控制器更清洁。
问题是在更新过程中,我尝试创建一个条件来检查,如果它是PATCH或POST与以下代码
MyRequest.php
public function rules()
{
// Check Create or Update
if ($this->method() == 'PATCH')
{
$a_rules = 'required|string|size:6|unique:books,column2,' .$this->get('id');
$b_rules = 'sometimes|string|size:10|unique:books,column3,' .$this->get('id');
}
else
{
$a_rules = 'required|string|size:6|unique:books,column2';
$b_rules = 'sometimes|string|size:10|unique:books,column3';
}
return [
'column1' => 'required|string|max:100',
'column2' => $a_rules,
'column3' => $b_rules,
'column4' => 'required|date',
'column5' => 'required|in:foo,bar',
'column6' => 'required',
'column7' => 'required',
'column8' => 'required',
];
}
.$this->get('id')
它失败了,表格仍然在更新上对待唯一。
Controller@update
public function update($id, BookRequest $request)
{
$book = Book::findOrFail($id);
$input = $request->all();
$book->update($request->all());
return view('dashboards.book');
}
Controller@edit
public function edit($id)
{
$book = Book::findOrFail($id);
return view('dashboards.edit', compact('book'));
}
Controller@create
public function create()
{
return view('dashboards.create');
}
Controller@store
public function store(BookRequest $request)
{
$input = $request->all();
$book = Book::create($input);
return redirect('dashboards/book/index');
}
我尝试替代.$book->id
,它给我一个ErrorException Undefined变量:book
有什么建议吗?顺便说一句,我正在使用Laravel 5.2
答案
您正在使用book作为路由参数,但尝试使用id。试试这个-
if ($this->method() == 'PATCH')
{
$a_rules = 'required|string|size:6|unique:books,column2,' .$this->route()->parameter('book');
$b_rules = 'sometimes|string|size:10|unique:books,column3,' .$this->route()->parameter('book');
}
希望能帮助到你 :)
以上是关于如何在表单请求上创建唯一验证(UPDATE / PATCH)的条件的主要内容,如果未能解决你的问题,请参考以下文章