2015-02-19 5 views
0

Это мой способ хранения, чтобы сохранить сообщение.Упростите метод контроллера хранилища на laravel 5

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()); 

мне нужно сделать дополнительные вещи, как зашифровать, но я я загромождать метод? может ли быть чище?

+0

Это может быть лучше на [Codereview.stackexchange] (http://codereview.stackexchange.com/) –

ответ

3

Сделайте это в модели. Я использую метод set/get * Attribute() для изменения информации «на лету».

Таким образом, вы можете использовать Article::create($request->all());, тогда в модели используйте заполняемый массив, чтобы только автозаполнение, что разрешено (например, название, содержание и опубликованный_at).

затем использовать что-то вроде (в модели)

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

На самом деле вы можете также адаптировать этот подход так, что атрибут published_at установлен на сегодняшний день, или даже лучше использовать базу данных для обеспечения now() сек времени.

Смежные вопросы