【发布时间】:2017-12-21 00:25:18
【问题描述】:
我现在开始使用 Laravel
我在尝试从经过身份验证的用户添加新用户时收到 MethodNotAllowedHttpException。
这是输入表单(add.blade.php)
<form method="POST" action="{{ action('Backend\UserController@store') }}">
{{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\UserController@getIndex');
Route::get('backend/adduser', 'Backend\UserController@getAdd');
Route::post('backend/adduser', 'Backend\UserController@store');
Route::get('backend/indexuser/delete/{id}', 'Backend\UserController@getDelete');
在用户注册后,我被重定向到 http://192.168.33.10/myBlog/public/logout 并出现 MethodNotAllowedHttpException 屏幕
这是 php 工匠路线:列表
+--------+----------+-------------------------------+------+------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------------+------+------------------------------------------------------------+--------------+
| | GET|HEAD | / | | App\Http\Controllers\FrontendController@getIndex | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | articolo/{slug} | | App\Http\Controllers\FrontendController@getArticolo | web |
| | GET|HEAD | autore/{slug} | | App\Http\Controllers\FrontendController@getAutore | web |
| | GET|HEAD | backend/adduser | | App\Http\Controllers\Backend\UserController@getAdd | web,auth |
| | POST | backend/adduser | | App\Http\Controllers\Backend\UserController@store | web,auth |
| | GET|HEAD | backend/indexuser | | App\Http\Controllers\Backend\UserController@getIndex | web,auth |
| | GET|HEAD | backend/indexuser/delete/{id} | | App\Http\Controllers\Backend\UserController@getDelete | web,auth |
| | GET|HEAD | categoria/{slug} | | App\Http\Controllers\FrontendController@getCategoria | web |
| | GET|HEAD | dashboard | | App\Http\Controllers\Backend\SessionsController@getIndex | web,auth |
| | GET|HEAD | login | home | App\Http\Controllers\Backend\SessionsController@create | web,guest |
| | POST | login | | App\Http\Controllers\Backend\SessionsController@store | web,guest |
| | GET|HEAD | logout | | App\Http\Controllers\Backend\SessionsController@destroy | web,auth |
| | GET|HEAD | register | | App\Http\Controllers\Backend\RegistrationController@create | web |
| | POST | register | | App\Http\Controllers\Backend\RegistrationController@store | web
怎么了? 谢谢
\\\\\\\\\\\\\\\\ 更新 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 ///////////////////////////
【问题讨论】:
-
表格中的数据输入完成了吗?
-
您确定要发帖到
/backend/adduseruri 吗?我认为您的action('Backend\UserController@storesn-p 没有返回预期的 uri。 -
你在 User 模型的 $fillable 数组中添加了 slug 字段吗?
-
@KooroshPasokhi 是的,我有:protected $fillable = [ 'first_name', 'last_name', 'slug', 'email', 'password', ];
-
@piotr 在用名字、姓氏、电子邮件和密码填写表格后,没有创建用户,我被重定向到公共/注销,我不知道为什么。
标签: php laravel exception routing