在Laravel 5中保存之前修改请求字段值

Som*_*lse 2 php laravel laravel-5

我正在使用laravel 5构建应用程序.我有这样的代码:

public function store(ArticlesRequest $request, Pages $page)
{

    $parentSlug = Pages::getParentSlug($request->parent_id);
    $slug = ($request->slug)? $request->slug:$request->generic_title; 
    $validSlug = $request->makeSlug($slug);
    $request->slug = $validSlug;

    $page->create($request->all());
}
Run Code Online (Sandbox Code Playgroud)

我想在保存之前更新一些数据,比如slug,在这种情况下,如果我直接不从表单字段输入,它就不会保存一个slug字段.如何更新包含元素值的$ request?例如$ request-> slug = $ validSlug; 它将我编辑的slug保存在DB中.非常感谢你!

jsz*_*ody 9

您可以像这样管理请求值:

$request->offsetSet('slug', $validSlug);
Run Code Online (Sandbox Code Playgroud)

但是我同意上面的评论,在Pages模型中管理默认值会好得多.

更新:我之前有两种方法,其中一种不再适用于Laravel 5.1(感谢@omarjebary).更新的答案.

  • 或者只使用`$ request-> offsetSet('slug',$ validSlug)` (2认同)