2017-07-16 99 views
1

我与LaravelMethodNotAllowedHttpException Laravel 5.4

现在开始我得到一个MethodNotAllowedHttpException尝试从一个认证的一个添加新用户。

这是输入形式(add.blade.php)

<form method="POST" action="{{ action('Backend\[email protected]') }}"> 

    {{csrf_field()}} 


    <div class="form-group"> 
    <label for="first_name">First Name:</label> 
    <input id="first_name" type="text" class="form-control" name="first_name" value="{{ old('first_name') }}" placeholder="Your Name" required> 
    <!--<input type="text" class="form-control" id="name" name="name"> --> 
    </div> 

    <div class="form-group"> 
    <label for="last_name">Last Name:</label> 
    <input id="last_name" type="text" class="form-control" name="last_name" value="{{ old('first_name') }}" placeholder="Your Surname" required> 
    <!--<input type="text" class="form-control" id="name" name="name"> --> 
    </div> 

    <div class="form-group"> 
    <label for="email">E-Mail:</label> 
    <input id="email" type="text" class="form-control" name="email" value="{{ old('email') }}" placeholder="Your Email" required> 
    <!--<input type="email" class="form-control" id="email" name="email">--> 
    </div> 

    <div class="form-group"> 
    <label for="password">Password:</label> 
    <input id="password" type="password" class="form-control" name="password" placeholder="Your Password" required> 
    <!--<input type="password" class="form-control" id="password" name="password">--> 
    </div> 


    <div class="form-group"> 
    <button type="submit" class="btn btn-primary">Register</button> 
    </div> 

    @include ('layouts.errors') 

</form> 

这是用户控制器(UserController.php),请检查存储方法

<?php 

namespace App\Http\Controllers\Backend; 

use App\Http\Controllers\Controller; 
use App\User; 
use Illuminate\Http\Request; 
use Illuminate\Support\Str; 

class UserController extends Controller { 
    public function __construct() { 
     $this->middleware('auth'); 

    } 

    public function getIndex() { 
     $users = User::orderBy('created_at', 'DESC')->paginate(10); 
     return view('backend.user.list', compact('users')); 
    } 

    public function getAdd() { 
     // schermata di aggiunta del nuovo autore 
     return view('backend.user.add'); 
    } 

    public function store(Request $request) { 
     // elaborazione dei dati ed effettiva aggiunta dell'autore 

     $this->validate(request(), [ 

      'first_name' => 'required', 
      'last_name' => 'required', 
      'email' => 'required|email|unique:users', 
      'password' => 'required|confirmed', 

     ]); 

     //Create and Save the Users 
     $first_name = $request->first_name; 
     $last_name = $request->last_name; 
     $email = $request->email; 
     $password = $request->password; 
     $slug = Str::slug($first_name . $last_name); 

     $user = User::create([ 
      'first_name' => $first_name, 
      'last_name' => $last_name, 
      'email' => $email, 
      'slug' => $slug, 
      'password' => bcrypt($password), 

     ]); 

     return redirect('backend/indexuser'); 

    } 

    public function getDelete($userId, Request $request) { 
     $userToDelete = User::find($userId); 
     $userToDelete->delete(); 
     //$userId->delete(); 

     $request->session()->flash('success_message', 'User Deleted'); 
     return redirect('backend/indexuser'); 
    } 
} 

这是路由(web.php)

Route::get('backend/indexuser', 'Backend\[email protected]'); 
Route::get('backend/adduser', 'Backend\[email protected]'); 
Route::post('backend/adduser', 'Backend\[email protected]'); 
Route::get('backend/indexuser/delete/{id}', 'Backend\[email protected]'); 

用户登记即时重定向到http://192.168.33.10/myBlog/public/logout与MethodN后otAllowedHttpException屏幕

这是PHP工匠路线:列表

+--------+----------+-------------------------------+------+------------------------------------------------------------+--------------+ 
| Domain | Method | URI       | Name | Action              | Middleware | 
+--------+----------+-------------------------------+------+------------------------------------------------------------+--------------+ 
|  | GET|HEAD |/       |  | App\Http\Controllers\[email protected]   | web   | 
|  | GET|HEAD | api/user      |  | Closure             | api,auth:api | 
|  | GET|HEAD | articolo/{slug}    |  | App\Http\Controllers\[email protected]  | web   | 
|  | GET|HEAD | autore/{slug}     |  | App\Http\Controllers\[email protected]   | web   | 
|  | GET|HEAD | backend/adduser    |  | App\Http\Controllers\Backend\[email protected]   | web,auth  | 
|  | POST  | backend/adduser    |  | App\Http\Controllers\Backend\[email protected]   | web,auth  | 
|  | GET|HEAD | backend/indexuser    |  | App\Http\Controllers\Backend\[email protected]  | web,auth  | 
|  | GET|HEAD | backend/indexuser/delete/{id} |  | App\Http\Controllers\Backend\[email protected]  | web,auth  | 
|  | GET|HEAD | categoria/{slug}    |  | App\Http\Controllers\[email protected]  | web   | 
|  | GET|HEAD | dashboard      |  | App\Http\Controllers\Backend\[email protected] | web,auth  | 
|  | GET|HEAD | login       | home | App\Http\Controllers\Backend\[email protected]  | web,guest | 
|  | POST  | login       |  | App\Http\Controllers\Backend\[email protected]  | web,guest | 
|  | GET|HEAD | logout      |  | App\Http\Controllers\Backend\[email protected] | web,auth  | 
|  | GET|HEAD | register      |  | App\Http\Controllers\Backend\[email protected] | web   | 
|  | POST  | register      |  | App\Http\Controllers\Backend\[email protected] | web 

有什么不对? 谢谢

\\\\\\\\\\\\\\\\\ UPDATE 1 //////////////////////////

检查了我提交的HTML。

<form method="POST" action="http://192.168.33.10/myBlog/public/backend/adduser"> 

      <input type="hidden" name="_token" value="cWbRF1A7UWEzPWqtmVhVocbzQdkwKgc8dABne28v"> 


      <div class="form-group"> 
      <label for="first_name">First Name:</label> 
      <input id="first_name" type="text" class="form-control" name="first_name" value="" placeholder="Your Name" required> 
      <!--<input type="text" class="form-control" id="name" name="name"> --> 
      </div> 

这是我在中间件夹RedirectIfAuthenticated.php

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class RedirectIfAuthenticated { 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string|null $guard 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $guard = null) { 
    if (Auth::guard($guard)->check()) { 

     return redirect('dashboard'); 

    } 

    return $next($request); 
    } 
} 

这是Handler.php

 protected function unauthenticated($request, AuthenticationException $exception) { 
      if ($request->expectsJson()) { 
       return response()->json(['error' => 'Unauthenticated.'], 401); 
      } 

      //return redirect()->guest(route('login')); 
      //redirect se l'utente prova ad accedere da guest, reindirizzo a login 
      return redirect()->home(); 
     } 
    } 

未经验证的方法在/storage/logs/laravel.log我可以最后没有发现任何有趣的东西, 这些是最后一行

#47 /var/www/public/myBlog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) 
#48 /var/www/public/myBlog/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
#49 /var/www/public/myBlog/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
#50 /var/www/public/myBlog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
#51 /var/www/public/myBlog/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) 
#52 /var/www/public/myBlog/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) 
#53 {main} 

\\\\\\\\更新2 //////////////////////////

Log From storage/logs/laravel.log

+0

数据录入在表中完成? –

+0

你确定要发布到'/ backend/adduser'吗?我想你'行动(“后端\ UserController的@ store'段没有返回预期的URI – piotr

+0

有你在用户模型中添加废料场$可填写阵列 –

回答

0

交换从获取到后注销RUOTE,然后我搬到从导航栏(主布局页)表单动作的仪表盘页面,

<p>Benvenuto {{ Auth::user()->first_name }} ! Scegli cosa vuoi fare usando il menu qui in alto.</p> 

    <form action="{{ action('Backend\[email protected]') }}" method="POST" accept-charset="utf-8"> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
      <div class="form-group"> 
       <button type="submit" class="btn btn-danger">Log Out</button> 
      </div> 
    </form> 

@endsection 

出了错现在的问题得到解决在主布局刀片中。当我尝试使用'Backend \ UserController @ store'操作创建新用户时,注销操作也被调用。 我无法弄清楚,但现在我解决了它,用仪表板页面中的按钮替换“navbar注销”。

Regards

0

为什么不只是使用url()函数?

<form method="POST" action="{{ url('backend/adduser') }}"> 
0

第一: 检查您呈现的HTML。我认为您的表单中有action部分内容会让人感到奇怪。

如果问题仍然存在 检查您是否已经触及auth中间件

如果问题仍然存在 检查日志(/storage/logs/laravel.log),并与我们分享。

+0

你好@piotr在此先感谢。请检查主帖子中的更新1。 – romeoenrico

相关问题