这里https://laravel.com/docs/5.7/controllers#resource-controllers我读到定义资源 我有发布/发布方法:
POST /photos store photos.store
...
PUT/PATCH /photos/{photo} update photos.update
但在routes / web.php中定义下一个资源路由:
Route::resource('site-subscriptions', 'Admin\SiteSubscriptionsController', [ 'except' => [] ] )->middleware('WorkTextString');
具有表单定义:
<form method="POST" action="http://local-votes.com/admin/site-subscriptions/store" accept-charset="UTF-8" id="form_site_subscription_edit" enctype="multipart/form-data">
<input type="hidden" name="_token" value="X7rzFjRq4o4TeA67FmkQTMI9ApjygM3ovE1C14i2">
我在POST时出错:
"message": "",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException",
"file": "/mnt/_work_sdb8/wwwroot/lar/votes/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",
"line": 255,
我的web.php定义错误吗?
谢谢!
答案 0 :(得分:0)
如果您使用的是Blade,则以这种方式获取工作链接很不好,您应该使用如下所示的laravel帮助器:
<form method="POST" action="{{route('site-subscriptions.store')}}" accept-charset="UTF-8" id="form_site_subscription_edit" enctype="multipart/form-data">
这样,即使您在部署中更改APP_URL,也可以确保链接正确无误。
实际完成的工作是调用route
帮助函数,以通过路由名称为您获取URL。
来自docs:
route():
route函数为给定的命名路由生成一个URL:
$ url = route('routeName'); 如果路由接受参数,则可以将它们作为方法的第二个参数传递给
$ url = route('routeName',['id'=> 1]); 默认情况下,路由功能会生成一个绝对URL。如果您希望生成一个相对URL,则可以将false作为第三个参数传递:
$ url = route('routeName',['id'=> 1],false);