小编Kev*_*vin的帖子

Laravel 5 - 清洁代码,保存业务逻辑(控制器示例)

下面是我的控制器Admin/MoviesController的'store'方法示例.它看起来已经很大了,"更新"方法会更大.

算法是:

  1. 在CreateMovieRequest中验证请求数据并使用所有可填写字段创建新影片.
  2. 上传海报
  3. 填写并保存所有重要但非必填字段(元标题,元描述..)
  4. 然后是4段代码,解析并附加到流派,演员,导演,国家的电影.
  5. 使用第三方API请求IMDB评级

我的问题:

  • 我应该将所有这些代码移动到Model并将其划分为更小的方法,例如:removeGenres($ id),addGenres(Request $ request),...
  • 有一些最佳做法吗?我说的不是MVC,而是Laravel的功能.目前为了保持一些逻辑,我只使用Request for validation.

    public function store(CreateMovieRequest $request) {
    
    $movie = Movies::create($request->except('poster'));
    
    /* Uploading poster */
    if ($request->hasFile('poster')) {
        $poster = \Image::make($request->file('poster'));
    
        $poster->fit(250, 360, function ($constraint) {
            $constraint->upsize();
        });
    
        $path = storage_path() . '/images/movies/'.$movie->id.'/';
    
        if(! \File::exists($path)) {
            \File::makeDirectory($path);
        }
    
        $filename = time() . '.' . $request->file('poster')->getClientOriginalExtension();
        $poster->save($path . $filename);
        $movie->poster = $filename;
    }
    
    /* If 'Meta Title' is empty, then fill it with the name of the movie */ …
    Run Code Online (Sandbox Code Playgroud)

php model-view-controller coding-style laravel laravel-5

5
推荐指数
1
解决办法
6940
查看次数

Laravel - 如何添加$ fillable中未列出的值

在我的用户模型中,我有这样的规则:

protected $fillable = ['name', 'email', 'password'];
Run Code Online (Sandbox Code Playgroud)

我想在我的模型中添加一个字段"role_id",它只能在控制器或模型中分配,但在其他情况下应该被忽略.

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'role_id' => $this->role_id
    ]);
}
Run Code Online (Sandbox Code Playgroud)

laravel

1
推荐指数
1
解决办法
178
查看次数