Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException on laravel 5.6

Posted

技术标签:

【中文标题】Symfony \\ Component \\ HttpKernel \\ Exception \\ MethodNotAllowedHttpException on laravel 5.6【英文标题】:Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException on laravel 5.6Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException on laravel 5.6 【发布时间】:2019-01-06 07:01:12 【问题描述】:

我尝试在 Laravel 5.6 中创建一个登录页面,它显示以下错误

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

我已使用 POST 方法进行路由,但服务器显示相同的错误 添加了相同的屏幕截图。 enter image description here

查看代码

    <body>
    <div class="data-head">
         Form::open(array('url' => 'login')) 
        <p class="col-md-12">
            <h5 class="login-head">Login</h5>
        </p>
        <p>
             $email_err 
        </p>
        <p class="col-md-10 col-md-move">
             Form::label('email', 'E-Mail Address', array('class' => 'awesome')) 
             Form::text('email','', array('placeholder' => 'yourname@example.com', 'class' => 'form-control')) 
        </p>
        <p class="col-md-10 col-md-move">
             Form::label('password', 'Password', array('class' => 'awesome')) 
             Form::password('password', array('placeholder' => 'Password', 'class' => 'form-control')) 
        </p>
        <p class="col-md-10 col-md-move">
            <a href="forget" class="link-forget">Forget Password ? </a>
             Form::submit('Login', array('class' => 'btn btn-info')) 
        </p>

    </div>
</body>

路线文件:

    Route::post('/', function () 
    return view('welcome');
    );
    Route::post('register',function()
        return view('login');
    );
    Route::post('login', 'LoginController@loginProcess');

The controller code

    namespace App\Http\Controllers;

    use Illuminate\Support\Facades\DB;
    use Illuminate\Http\Request;
    use Hash;

    class LoginController extends Controller
    
        public function loginProcess(Request $request)
        
            $email_err="";
            $password_err="";
            $pass="";
            $email = $request->input('email');
            $password = $request->input('password');
            $pass=DB::table('login')->where('email', $email)->value('password');
            if($pass=="")
            
                $email_err="Non Registred User";
                return view('login',['email_error' => $email_err]);
            
            if(Hash::check($password,$pass))
            
                echo "Login Successs";
            
            else
            
                $password_err="Invalid Password";
            

        

    

提前致谢

【问题讨论】:

您的表单中没有 CSRF 令牌。 这是强制性的吗? 是的,这是强制性的,在您的表单中使用csrf_token() 它在元标记中使用 @RaymondThomas 元标记无论如何都与表单的功能无关......旁注,可能想要关闭表单 【参考方案1】:

您需要像下面这样更改视图代码,

<body>
    <div class="data-head">
         Form::open(array('url' => 'login','method' => 'post')) 
        <p class="col-md-12">
            <h5 class="login-head">Login</h5>
        </p>
        <p>
             $email_err 
        </p>
        <p class="col-md-10 col-md-move">
             Form::label('email', 'E-Mail Address', array('class' => 'awesome')) 
             Form::text('email','', array('placeholder' => 'yourname@example.com', 'class' => 'form-control')) 
        </p>
        <p class="col-md-10 col-md-move">
             Form::label('password', 'Password', array('class' => 'awesome')) 
             Form::password('password', array('placeholder' => 'Password', 'class' => 'form-control')) 
        </p>
        <p class="col-md-10 col-md-move">
            <a href="forget" class="link-forget">Forget Password ? </a>
             Form::submit('Login', array('class' => 'btn btn-info')) 
        </p>

    </div>
</body>

你只需要在Form::open()门面中提供方法类型,比如'method'=&gt;'post',默认是GET

【讨论】:

不,它默认为post "默认情况下,将假定一个 POST 方法;但是,您可以随意指定其他方法:" 这是从 Laravel 5.6 的文档中理解的 这个包(html Form Builder)不是来自 Laravel .. 它是一个 3rd 方包,所以它不在那些文档中......我想你的意思是一个实际的 html 表单以及浏览器如何处理没有定义方法时的html? 你的意思是 Htmlcollective ? laravelcollective 维护 html 和表单包

以上是关于Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException on laravel 5.6的主要内容,如果未能解决你的问题,请参考以下文章

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException。原因是啥?

Symfony\Component\HttpKernel\Exception\NotFoundHttpException

Laravel“Symfony\Component\HttpKernel\Exception\HttpException”错误

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException,删除按钮

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException on laravel 5.6

Laravel Post 控制器不工作(Symfony \ Component ...)