我之前尝试过一个实验,允许管理员用户替换已经上传到数据库的图像。作为测试,我允许上传一张"空白"或"空白"的照片。上传"空白"照片后,我试图删除它,但我一直收到"试图获取非对象的属性"错误。
控制器:
public function destroy($albumId, $photoId)
{
$this->photo->delete($photoId);
return 'Redirect::route("gallery.album.show", array('id' => $albumId));
}
编辑:
routes.php:
Route::delete('gallery/album/{albumid}/photo/{photoid}/edit', array('as'=>'delete_photo', 'uses'=>'EditPhotosController@destroy'));
视图:
/*
Form code in here
*/
{{ link_to_route('delete_photo', 'Delete Photo') }}
最初的问题是,我的应用程序正在寻找原始的"文件路径"名称来删除原始照片,但现在"文件路径"名称当前为空,它无法与该名称匹配,因此不会删除它。
编辑:我想这实际上可能是一个路由问题。
这个问题有简单的解决办法吗?
这有一些问题。
首先,您使用HTTPDELETE
方法创建一个路由。链接本身会发出GET
请求,而不是DELETE
请求。
通常,您将使用一点javascript将_method
参数设置为DELETE
的隐藏表单提交到单击链接的href
中的URLjquery ujs包含此功能,但您可以用更少的代码来实现。
下一个问题是您没有在链接上指定albumid
或photoid
参数
{{ link_to_route('delete_photo', 'Delete Photo', [ 'albumid' => $album->id, 'photoid' => $photo->id ]) }}
最后,像这样的路线
DELETE /gallery/album/{albumid}/photo/{photoid}/edit
不是最RESTful的。DELETE
应针对资源
DELETE /gallery/album/{albumid}/photo/{photoid}
修复路由参数可能会解决你的问题,但现在你有太多错误,还没有提供详细的错误来给你更多的细节。