我的登录表单有两个文本字段email,密码。当我尝试使用凭证登录时,它工作正常但是当清除缓存然后尝试登录时会出现'MethodNotAllowedHttp'异常。我没有得到问题为什么它是显示此错误。我的代码如下:
Route::post('users/login/5', 'administrator\usersController@login')->name('sl');
usersController.php
namespace App\Http\Controllers\administrator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Validator;
use Session;
class FreeusersController extends Controller {
function login(Request $request) {
$type = $request->segment(3);
//print_r($request);
echo "type=".$type;
echo $request->input('email');
echo $request->input('password');
die("sss");
if ($request->isMethod('post') && !empty($type)) {
$this->validate($request, [
'email' => 'required|min:5,max:50',
'password' => 'required|min:5,max:50'
]);
switch ($type) {
case 5:
$condArr = ['email' => $request->input('email'), 'password' => $request->input('password'), 'type' => '5', 'role' => 'father'];
break;
case 4:
$condArr = ['email' => $request->input('email'), 'password' => $request->input('password'), 'type' => '4', 'status' => true];
break;
}
if (Auth::attempt($condArr)) {
return redirect('administrator/dashboard');
} else {
return redirect(url()->previous())->withErrors(['password' => 'Invalid credentials'])->withInput();
}
} else {
return redirect("/");
}
}
}
<form action="/users/login/5" id="login-form" method="post" class="smart-form client-form">
{{ csrf_field() }}
<fieldset>
<section>
<label class="label">Email</label>
<label class="input"> <i class="icon-append fa fa-user"></i>
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}">
</section>
<section>
<label class="label">Password</label>
<label class="input"> <i class="icon-append fa fa-lock"></i>
<input id="password" type="password" class="form-control" name="password">
</section>
</fieldset>
<footer>
<button type="submit" class="btn btn-primary">
LogIn
</button>
</footer>
</form>
答案 0 :(得分:0)
你必须清除路线:
php artisan route:cache
然后它会记住登录操作已发布。
答案 1 :(得分:0)
我认为您收到此错误的原因是,当您调用此网址时,会有另一个网址,例如users/{id}
,这意味着users/
之后的任何内容。可能是你正在使用资源路线。因此,当您调用网址users/login/5
时,login/5
将$id
作为users/{id}
网址的GET
。
但该网址适用于action="{{route('sl', ['id'=>5])}}"
方法。您使用post方法调用此方法,因此您收到此错误。
<强>解决方案强>
您可以尝试使用以下路线方法调用您的网址:
Route::post('user/login/5', 'administrator\usersController@login')->name('sl');
如果它不起作用,那么您可以将路线更改为其他内容。例如:
user
在这里,您可以使用users
代替users
,因为您已经有一个related-publication
的网址。不要忘记改变你的行动。
答案 2 :(得分:0)
首先使用php artisan route查看你的路线:list。
那么你确定你的请求动词吗?查看导航器控制台以查看您的请求。