Laravel 5:干预图像,图像缓存。缺少参数2错误

时间:2015-10-27 03:54:59

标签: php laravel laravel-5 intervention

尝试使用干预图像调整图像大小。得到那部分工作。现在我想将图像缓存10分钟,但是当我上传带有图像的新文章时,我得到了这个堆栈跟踪:

  

ArticlesController.php第150行中的ErrorException:缺少参数2   对于   应用\ HTTP \控制器\ ArticlesController ::应用\ HTTP \控制器{闭合}(),   呼唤   /home/vagrant/Sites/vision/vendor/intervention/image/src/Intervention/Image/ImageManager.php   在第85行并定义

这是魔术发生的地方,在ArticlesController.php中:

private function createArticle(ArticleRequest $request)
{
    $article = Auth::user()->articles()->create($request->all());

    $this->syncTags($article, $request->input('tag_list'));

    $image = $request->file('image');
    $directory = 'img/articles/';
    $path = $image->getClientOriginalName();
    $image->move($directory, $path);

    Image::create([
        'path' => $path,
        'article_id' => $article->id
    ]);

    // This one resizes the image successfully.
    ImgResizer::make($directory . $path)->fit(600, 360)->save($directory . $path);

    // This one is supposed to resize and cache the image, but spits the error above.
    ImgResizer::cache(function($image, $directory, $path) {
        $image->make($directory . $path)->fit(600, 360)->save($directory . $path);
    }, 10);
}
不用担心,我不能同时使用这两种语句。只是展示我在做什么,希望有人可以引导我朝着正确的方向前进,告诉我我做错了什么,因为我没有看到它。

1 个答案:

答案 0 :(得分:1)

问题似乎与你的闭包功能有关。根据缓存对象上的docs,它只将1个参数传递给闭包。你要求3个论点。

function($image, $directory, $path)

因此,"缺少参数2 ...用于关闭" 错误。您需要修改闭包以支持传递的一个参数。