无法在Laravel中创建删除操作.
我一直在收到Not Found或Token mismatch错误.
我的控制器:
class TranslationController extends Controller { public function destroy($id) { //$id = 1; /*$translation = Translation::find($id); $translation->delete();*/ } .... }
Ajax调用:
/* Delete given translation */ var url = "translation"; var id = 1; $.ajax({ method: 'DELETE',url: url + '/' + id,// data: {'id': id,'_token': token},success: function() { } });
这将给出VerifyCsrftoken.PHP第53行中的TokenMismatchException:
如果我尝试:
url: url + '/' + id,data: {'_token': token},// token is equal to csrf_token
我有:Controller.PHP第269行中的NotFoundHttpException:
路线:
Route::controller('translation','TranslationController');
解决方法
NotFoundHttpException意味着没有指定具有特定HTTP谓词的特定请求的路由,或者错误地实现了映射到路由的动词的动作(即控制器方法).
既然你在帖子中提到过TranslationController定义为@L_404_0@,
Route::controller('translation','TranslationController');
从您发布的控制器代码中,很明显您没有在控制器TranslationController中为destroy方法定义动词.
如果您使用终端/命令行界面在项目根目录中执行PHP artisan route:list,您将看到已注册HTTP谓词的列表,映射到相应的URI以及操作.
要在隐式控制器中定义特定方法,动词(GET,PUT,POST,DELETE)应位于实际函数名称之前.
确保destroy方法在控制器中看起来如下所示:
public function deleteDestroy($id){ //delete logic for the resource }
注意:
Laravel默认情况下要求csrf标记与特定的RESTful请求一起传递,因此不要从AJAX调用中删除数据:{‘_ token’:token}.
更新
忘了提到你的AJAX调用中的url也应该更改为以下代码才能工作,因为这是Laravel的隐式控制器为DELETE请求定义路由的方式:
var url = "translation/destroy";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。