【问题标题】:How to fix error with resource routes definition如何修复资源路由定义的错误
【发布时间】:2019-01-10 06:03:43
【问题描述】:

这里https://laravel.com/docs/5.7/controllers#resource-controllers 我读到定义资源 我有 post/put 方法:

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 定义错误有错吗?

谢谢!

【问题讨论】:

    标签: laravel-5 routes


    【解决方案1】:

    如果你正在使用刀片,以这种方式获取工作链接是不好的,你应该使用如下的 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

    路线()

    路由函数为给定的命名路由生成一个 URL:

    $url = route('routeName'); 如果路由接受参数,您可以将它们作为第二个参数传递给方法:

    $url = route('routeName', ['id' => 1]); 默认情况下,路由函数会生成一个绝对 URL。如果你想生成一个相对 URL,你可以传递 false 作为第三个参数:

    $url = route('routeName', ['id' => 1], false);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多