【问题标题】:Laravel method not allowed不允许使用 Laravel 方法
【发布时间】:2017-03-18 07:31:42
【问题描述】:

我在尝试提交表单时收到MethodNotAllowedException。这是我的路线

Route::group(['middleware' => 'auth', 'prefix' => 'admin'], function () {

    Route::resource('user', 'UserController');
    Route::get('user/destroyMe/{destroyMe}', ['as' => 'user.destroyMe', 'uses' => 'UserController@destroyMe']);
    Route::get('user/changeState/{id}', ['as' => 'user.changeState', 'uses' => 'UserController@changeState']);
});

这是存储新用户的表单部分:

<div class="position-center">
    <form role="form" id="tryitForm" class="form-horizontal" enctype="multipart/form-data"
          method="POST" action="{{route('user.store')}}">
        {!! Form::token() !!}

我在route:list 中检查过,我显然有user.store 命名的路线,路线上的方法是POST。我不知道为什么会出现异常?

编辑

我确实为 Laravel 安装了 AdminLTE Link,但我已经覆盖了它的路由。不用说,其他所有路线都有效。

编辑 2

我尝试制作手动路线:

Route::post('admin/user', 'UserController@store');

并将其发布到url('admin/user'),但结果仍然相同?

编辑 3

清除缓存也没有帮助。

编辑 4

经过进一步检查,当遇到一个不存在的随机路由时,我会收到一个错误标头 Sorry, the page you are looking for could not be found.,但如果我执行任何 POST 路由,我会收到 Whoops, looks like something went wrong.(两个错误都会触发但同样的例外)。

Laravel 日志为空

【问题讨论】:

  • 哪条路线是user.store路线我看不到?
  • 而且我在你的路线中看不到 Route::post?
  • Route:resource 正在制作所有默认路由
  • 那么 Route::post 在哪里?
  • 什么版本的 Laravel?

标签: php laravel routes adminlte


【解决方案1】:

我发现了一个导致所有麻烦的错误。在我的表格里面有一行

<input name="_method" value="PUT" type="hidden">

它通过复制/粘贴我的edit 代码潜入那里

【讨论】:

    【解决方案2】:

    试试这样:

     {!! Form::open( [ 'route' => 'user.store', 'method' => 'POST',  'files' => 'true' ] ) !!}
    

    然后关闭它。

          //
    {{ Form::close() }}
    

    编辑: 这样做怎么样:

    routes.php

     Route::any('admin/user', 'UserController@form');
    

    而在controller

     public function form(){
        print_r(Input::get()); die; #Hope that you are using Input.
     }
    

    【讨论】:

    • 这只是另一种使用包编写它的方式。不幸的是同样的结果
    • @Norgul 用新方法编辑了这个。
    • 这是Array ( [_token] =&gt; GS8E6Jx9Xrs2B97qa8VmRquuCdTc259aecdrJdrd [name] =&gt; Tyler Clay [email] =&gt; tagi@yahoo.com [role_id] =&gt; 7 [equipment] =&gt; Array ( [0] =&gt; 2 [1] =&gt; 3 [2] =&gt; 4 ) [supervisor] =&gt; Array ( [0] =&gt; 2 [1] =&gt; 4 ) [_method] =&gt; PUT [save] =&gt; Save ) 的输出,所以我猜它正在上路
    • 但是我的配置中一定有一些令人困惑的东西......因为即使我注释掉所有路由,并使用默认的 AdminLTE 路由,点击/logout 也会让我回到同样的异常,所以我结束了为注销创建 GET 路由
    • 你的方法说[_method] =&gt; PUT而不是POST。这很奇怪。
    猜你喜欢
    • 2020-07-25
    • 2018-07-16
    • 2018-12-15
    • 2017-11-28
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多