【发布时间】:2014-01-31 11:43:24
【问题描述】:
我正在尝试重新创建一个简单的博客功能并允许管理员更新博客文章。
我的问题是其名称存储在“缩略图”下的博客表中的照片未正确更新。我的保存新帖子功能有效,但我的更新功能不起作用。
当您在不更新图像的情况下进行更新时,其余博客项目会更新,但照片名称会设置为空白,如果您尝试更新图像,照片会移动但数据库中的字段会变设置为临时位置(/Applications/MAMP/tmp/php/phpx1jwMA)。
这可能是两个不同的问题。
在更新表单中,我添加了一个带有照片名称的隐藏字段:
{{ Form::hidden('old_photo', $blog->thumbnail) }}
它以预期的形式生成:
<input name="old_photo" type="hidden" value="1391122313-2013 12 01_0567.JPG">
在我的控制器中,我有这个作为我的更新功能:
public function update($id) {
$input = Input::all();
$blog = Blog::find($id);
if(Input::hasFile('thumbnail')) {
$file = Input::file('thumbnail');
$name = time() . '-' . $file->getClientOriginalName();
$file = $file->move(public_path() . '/images/blog/', $name);
$blog->thumbnail = $name;
}
$blog->save();
return View::make('admin.blog.index', [
'blogs' => Blog::all()
]);
}
我试图在该代码中说,如果缩略图中有一个新文件,则创建一个唯一名称,移动文件并将“缩略图”设置为该名称(这就是我的创建函数的工作方式)但是如果'thumbnail' 没有上传文件,然后将'thumbnail' 设置为旧名称。
有没有更好的方法来处理这个过程?显然是因为这种方式行不通。我刚刚学习 Laravel,我有 3 本书关于它,但没有一本介绍如何做到这一点。
谢谢。
【问题讨论】: