在laravel 5上简化商店控制器方法

时间:2015-02-19 16:01:41

标签: laravel controller

这是我保存帖子的商店方法。

public function store(CreatePostRequest $request)
{
    $post = new Post([
        'title' => $request['title'],
        'content' => Crypt::encrypt($request['content']),
        'published_at' => Carbon::now()
    ]);
    $post->user()->associate(Auth::user());
    $newPost=Post::create($post->toArray());
    $this->syncTags($newPost, $request['tag_list']);
    return redirect('posts')->withMessage('Post Saved Successfully !!!');
}

在laracasts教程中,他正在做一个

Article::create($request->all());

我需要做一些额外的事情,比如加密,但是我混淆了这个方法吗?它会更干净吗?

1 个答案:

答案 0 :(得分:3)

在模型中执行此操作。我使用set / get * Attribute()方法来动态更改内容。

所以你可以使用Article::create($request->all());然后在模型中使用可填充数组来仅自动填充允许的内容(例如title,content和published_at)。

然后使用(在模型中)

之类的东西
function setContentAttribute( $value ){
    $this->attributes['content'] = Crypt::encrypt($value);
}

事实上,您也可以调整此方法,以便将published_at属性设置为今天,甚至更好地使用您的数据库提供now()时间。