我需要在这两个方法中使用验证:
public function store(ResourceRequest $request)
{
$page = new Page();
$page->create([
'content' => request('content'),
'title' => request('title'),
'slug' => $this->metadataHandler->generateSlug(request('slug')),
// etc.
]);
return redirect()->route('pages');
}
public function update(ResourceRequest $request, Page $page)
{
$page->update([
'content' => request('content'),
'title' => request('title'),
'slug' => $this->metadataHandler->generateSlug(request('slug')),
// etc.
]);
return redirect()->route('pages');
}
但是我没有看到地方,我可以调用变量$request
。该变量在方法参数中声明,并且保持不使用。我不能只写$request->all()
,因为我需要对一些输入字段应用不同的处理程序方法。
而且,我在这个字段列表中重复自己。两种方法都是一样的。有什么建议吗,如何避免重复?
您正在使用辅助函数,即request()
,您可以使用以下命令:
# Helper function # $request object
request('content') = $request->content
request('title') = $request->title
你可以把它改短一些,比如:
public function store(ResourceRequest $request)
{
$page = new Page();
$page->create($request->except('_token'));
return redirect()->route('pages');
}
您可以通过定义一个Accessor来在Page模型中使用generateSlug()。
class Pageextends Model
{
public function getSlugAttribute($value)
{
// Use meta data handler here $this->metadataHandler->generateSlug
}
}