Laravel PHP 4:试图删除';null';照片生成';正在尝试获取非对象的属性';错误


Laravel PHP 4: Trying to delete 'null' photo generates 'Trying to get property of non-object' error

我之前尝试过一个实验,允许管理员用户替换已经上传到数据库的图像。作为测试,我允许上传一张"空白"或"空白"的照片。上传"空白"照片后,我试图删除它,但我一直收到"试图获取非对象的属性"错误。

控制器:

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包含此功能,但您可以用更少的代码来实现。

下一个问题是您没有在链接上指定albumidphotoid参数

{{ 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}

修复路由参数可能会解决你的问题,但现在你有太多错误,还没有提供详细的错误来给你更多的细节。