【问题标题】:Laravel error after submitting form by hitting the Enter key通过按 Enter 键提交表单后 Laravel 错误
【发布时间】:2020-10-03 12:07:36
【问题描述】:

我没有经常使用 Laravel,但我最近遇到了一个小问题。我有一个带有屏幕锁定的应用程序。一旦屏幕被锁定,并且我重新登录,我必须输入我的密码。如果我通过点击提交按钮提交,它工作正常。但是,如果我按 Enter 键提交,则会显示以下错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 POST 方法。支持的方法:GET、HEAD。

下面贴的是锁屏的源代码。

我的 web.php 代码是:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/base64', function(){
    $image = public_path('installer/img/pattern.png');;
    $img = \Image::make($image);
    return response()->make($img->encode($img->mime()), 200, array('Content-Type' => $img->mime(),'Cache-Control'=>'max-age=86400, public'));
});
# Employee Login
Route::get('/',['as'=>'front.login','uses'=>'front\LoginController@index']);
Route::post('/login',['as'=>'login','uses'=>'front\LoginController@ajaxLogin']);
Route::get('logout', ['as'=>'front.logout','uses'=>'front\LoginController@logout']);

# Employee Panel After Login
Route::group(['middleware' => ['auth.employees'],'namespace' => 'front'], function()
{
    Route::get('/change_password_modal',['as'=>'front.change_password_modal','uses'=>'DashboardController@changePasswordModal']);
    Route::post('/change_password',['as'=>'front.change_password','uses'=>'DashboardController@change_password']);
    Route::get('ajaxApplications',['as'=>'front.leave_applications','uses'=> 'DashboardController@ajaxApplications']);

    Route::get('leave',['as'=>'front.leave','uses'=>'DashboardController@leave']);

    Route::post('dashboard/notice/{id}',['as'=>'front.notice_ajax','uses'=>'DashboardController@notice_ajax']);

    Route::post('leave_store',['as'=>'front.leave_store','uses'=>'DashboardController@leave_store']);


    Route::resource('dashboard','DashboardController');
});
# Admin Login
Route::group([ 'middleware' => ['auth.employees'],'prefix' => 'admin','namespace' => 'Admin'], function() {
    Route::get('notice/{id}', ['as'=>'front.show_notice','uses'=>'NoticeboardsController@show']);
    Route::get('award/{id}', ['as'=>'front.show_award_details','uses'=>'AwardsController@show']);
});

# Admin Login
Route::group([ 'prefix' => 'admin','namespace' => 'Admin'], function()
{

    Route::get('/',['as'=>'admin.getlogin','uses'=>'AdminLoginController@index']);
    Route::get('logout',['as'=>'admin.logout','uses'=> 'AdminLoginController@logout']);

    Route::post('login',['as'=>'admin.login','uses'=> 'AdminLoginController@ajaxAdminLogin']);

});


// Admin Panel After Login
Route::group(['middleware' => ['auth.admin'], 'prefix' => 'admin','namespace' => 'Admin'], function()
{

    //	Dashboard Routing
    //Route::resource('dashboard', 'AdminDashboardController');
    Route::resource('dashboard', 'AdminDashboardController',['as' => 'admin']);

    //    Employees Routing
    Route::get('employees/export',['as'=>'admin.employees.export','uses'=>'EmployeesController@export']);
    Route::get('employees/employeeLogin/{id}',['as'=>'admin.employees.employeeLogin','uses'=>'EmployeesController@employeesLogin']);
    Route::get('employees/employeelist',['as'=>'admin.employees.ajaxlist','uses'=>'EmployeesController@ajaxEmployees']);
    Route::resource('employees', 'EmployeesController',['except' => ['show'],'as' => 'admin']);


    //  Awards Routing
    Route::get('ajax_awards/',['as'=>'admin.ajax_awards','uses'=> 'AwardsController@ajax_awards']);
    Route::resource('awards', 'AwardsController',['except'=>['show'],'as' => 'admin']);

    //  Department Routing
    Route::get('departments/ajax_designation/',['as'=>'admin.departments.ajax_designation','uses'=> 'DepartmentsController@ajax_designation']);
    Route::get('departments/ajax_department/',['as'=>'admin.departments.ajax_department','uses'=> 'DepartmentsController@ajaxDepartments']);
    Route::resource('departments', 'DepartmentsController',['as' => 'admin']);

    //    Expense Routing
    Route::get('ajax_expenses/',['as'=>'admin.ajax_expenses','uses'=> 'ExpensesController@ajax_expenses']);
    Route::resource('expenses', 'ExpensesController',['except' => ['show'],'as' => 'admin']);

    //    Holiday Routing
    Route::get('holidays/mark_sunday', 'HolidaysController@Sunday');
    Route::resource('holidays', 'HolidaysController',['as' => 'admin']);

    //  Routing for the attendance
    Route::get('attendances/report/{attendances}', ['as'=>'admin.attendance.report','uses'=>'AttendancesController@report']);
    Route::get('attendances/ajax-attendance-list', ['as'=>'admin.attendance.ajax-attendance-list','uses'=>'AttendancesController@ajaxAttendanceList']);
    Route::post('attendances/export', ['as'=>'admin.attendance.export','uses'=>'AttendancesController@export']);
    Route::resource('attendances', 'AttendancesController',['as' => 'admin']);

    //    Routing or the leavetypes
    Route::get('leavetypes/ajax_list',['as'=>'admin.leavetypes.ajax_list','uses'=> 'LeavetypesController@ajaxLeaveType']);
    Route::resource('leavetypes', 'LeavetypesController',['except'=>['show'],'as' => 'admin']);

    //    Leave Applications routing
    Route::get('leave_applications/ajaxApplications',['as'=>'admin.leave_applications','uses'=> 'LeaveApplicationsController@ajaxApplications']);
    Route::resource('leave_applications', 'LeaveApplicationsController',['except'=>['create','store','edit'],'as' => 'admin']);

    //   Routing for setting
    Route::resource('settings', 'SettingsController',['only'=>['edit','update'],'as' => 'admin']);

    //    Salary Routing
    Route::get('add-salary-modal/{employeeID}',['as'=>'admin.add-salary-modal','uses'=>  'SalaryController@addSalaryModal']);

    Route::resource('salary','SalaryController',['only'=>['destroy','show','update','store'],'as' => 'admin']);

    //    Profile Setting
    Route::resource('profile_settings', 'ProfileSettingsController',['only'=>['edit','update'],'as' => 'admin']);

    //   Notification Setting

    Route::post('ajax_update_notification',['as'=>'admin.ajax_update_notification','uses'=> 'NotificationSettingsController@ajax_update_notification']);
    Route::resource('notificationSettings', 'NotificationSettingsController',['only'=>['edit','update'],'as' => 'admin']);

    Route::post('ajax_update_email_setting',['as'=>'admin.ajax_update_email_setting','uses'=> 'EmailSettingsController@ajax_email_setting']);
    Route::resource('email_settings', 'EmailSettingsController',['only'=>['edit','update'],'as' => 'admin']);

    //  Notice Board
    Route::get('ajax_notices/',['as'=>'admin.ajax_notices','uses'=> 'NoticeboardsController@ajax_notices']);
    Route::resource('noticeboards', 'NoticeboardsController',['except'=>['show'],'as' => 'admin']);


    Route::get('update-new-version', ['as' => 'admin.updateVersion.index', 'uses' => 'AdminUpdateVersionController@index']);

});
Event::listen('auth.login', function($user)
{
    $user->last_login = new DateTime;
    $user->save();
});
// Lock Screen Routing
Route::get('screenlock', 'Admin\AdminDashboardController@screenlock');

<!DOCTYPE html>

<!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]-->
<!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]-->
<!--[if !IE]><!-->
<html lang="en">
<!--<![endif]-->
<!-- BEGIN HEAD -->
<head>
<meta charset="utf-8"/>
<title>Screen Lock</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">

<!-- BEGIN GLOBAL MANDATORY STYLES -->
{!! HTML::style('https://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all') !!}
{!! HTML::style('assets/global/plugins/font-awesome/css/font-awesome.min.css') !!}
{!! HTML::style('assets/global/plugins/simple-line-icons/simple-line-icons.min.css') !!}
{!! HTML::style('assets/global/plugins/bootstrap/css/bootstrap.min.css') !!}
{!! HTML::style('assets/global/plugins/uniform/css/uniform.default.css') !!}
{!! HTML::style('assets/admin/pages/css/lock2.css') !!}
{!! HTML::style('assets/global/css/components.css') !!}
{!! HTML::style('assets/global/css/plugins.css') !!}
{!! HTML::style('assets/admin/layout/css/layout.css') !!}
{!! HTML::style('assets/admin/layout/css/themes/darkblue.css') !!}
{!! HTML::style('assets/admin/layout/css/custom.css') !!}
{!! HTML::style('assets/global/plugins/froiden-helper/helper.css')  !!}


                <!-- END THEME STYLES -->
<link rel="shortcut icon" href="favicon.ico"/>
</head>
<!-- END HEAD -->
<!-- BEGIN BODY -->
<body>
<div class="page-lock">
        <div class="page-logo" align="center">
                <a class="brand" href="javascript:;">
                        <img src="{{$setting->getLogoImageAttribute()}}" height="30px" width="117px" />
                </a>
        </div>
        <div class="page-body">
                <div class="page-lock-info">
                        <h1>{{ $loggedAdmin->name}}</h1>
                        <span class="email">
                        {{ $loggedAdmin->email}} </span>
                        <span class="locked">
                        Locked </span>
                        <div id='alert'></div>
                        {!!  Form::open(array('url' => '','class' =>'form-inline', 'id' => 'adminLogin'))  !!}


                                <div class="input-group input-medium form-group">
                                        <input type="password" class="form-control" name="password" placeholder="Password">
                                        <input type="hidden" class="form-control" name="email" value="{{ $loggedAdmin->email}}">
                                        <span class="input-group-btn">
                                        <button type="button" class="btn blue icn-only" onclick="login();return false;" id="submitbutton"><i class="m-icon-swapright m-icon-white"></i></button>
                                        </span>

                                </div>
                                <span id="errorDiv" style="color: red;" class="help-block help-block-error"></span>
                                <!-- /input-group -->
                                <div class="relogin">
                                        <a href="{{ URL::to('admin/logout')}}">
                                        Not {{ $loggedAdmin->name}} ? </a>
                                </div>
                                
                        {!!  Form::close() !!}
                </div>
        </div>
        <div class="page-footer-custom" style="text-align:center !important;">
                  {{\Illuminate\Support\Carbon::now()->format('Y')}} &copy; {{$setting->website}}
        </div>
</div>
<!-- BEGIN JAVASCRIPTS(Load javascripts at bottom, this will reduce page load time) -->
<!-- BEGIN CORE PLUGINS -->
<!--[if lt IE 9]>
{!! HTML::script('assets/global/plugins/respond.min.js') !!}
{!! HTML::script('assets/global/plugins/excanvas.min.js') !!}
<![endif]-->
{!! HTML::script('assets/global/plugins/jquery.min.js') !!}
{!! HTML::script('assets/global/plugins/jquery-migrate.min.js') !!}
{!! HTML::script('assets/global/plugins/bootstrap/js/bootstrap.min.js') !!}
{!! HTML::script('assets/global/plugins/jquery.blockui.min.js') !!}
{!! HTML::script('assets/global/plugins/uniform/jquery.uniform.min.js') !!}
{!! HTML::script('assets/global/plugins/jquery.cokie.min.js') !!}
{!! HTML::script('assets/global/plugins/backstretch/jquery.backstretch.min.js') !!}
{!! HTML::script('assets/global/scripts/metronic.js') !!}
{!! HTML::script('assets/admin/layout/scripts/layout.js') !!}
{!! HTML::script('assets/admin/layout/scripts/demo.js') !!}
{!! HTML::script('assets/admin/pages/scripts/lock.js') !!}
{!! HTML::script('assets/global/plugins/froiden-helper/helper.js') !!}

<script>
jQuery(document).ready(function() {
    Metronic.init(); // init metronic core components
        Layout.init(); // init current layout
    Lock.init();
    Demo.init();
});
 var Lock = function () {

        return {
            //main function to initiate the module
            init: function () {

                 $.backstretch([
                     "{{ URL::asset('assets/admin/pages/media/bg/1.jpg') }}",
                     "{{ URL::asset('assets/admin/pages/media/bg/2.jpg') }}",
                     "{{ URL::asset('assets/admin/pages/media/bg/3.jpg') }}",
                     "{{ URL::asset('assets/admin/pages/media/bg/4.jpg') }}",
                        ], {
                          fade: 1000,
                          duration: 8000
                      });
            }

        };

    }();
</script>

<script>
function login(){
        $.easyAjax({
                type: 'POST',
                url: "{{route('admin.login')}}",
                data: $('#adminLogin').serialize(),
                container: "#adminLogin",
                messagePosition: 'inline',
                success: function (response) {
                        if (response.status == "success") {
                                $('#login-form')[0].reset();
                        }
                },
                error: function (response) {
                        //console.log();
                        $('#errorDiv').html(response.responseJSON.errors.password[0]);


                }
        });
        return false;
}
    
</script>
<!-- END JAVASCRIPTS -->
</body>
<!-- END BODY -->
</html>

如果有人能看到错误,我将不胜感激

我的 AdminLoginController 代码:

  GNU nano 2.9.3                                                                                                                                                                                                                                                                                                                    AdminLoginController.php                                                                                                                                                                                                                                                                                                                              

<?php

namespace App\Http\Controllers\Admin;

use App\Classes\Reply;
use App\Http\Controllers\AdminBaseController;
use App\Http\Requests\Admin\LoginRequest;
use Carbon\Carbon;
use Froiden\Envato\Traits\AppBoot;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;

class AdminLoginController extends AdminBaseController
{

    use AppBoot;

    public function __construct()
    {
        parent::__construct();
    }

    /**
     * @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
     * Redirect to dashboard if logged in
     */
    public function index()
    {

        if (!$this->isLegal()) {
            return redirect('verify-purchase')->with('redirectUrl', request()->route()->getName());
        }

        if (Auth::guard('admin')->check()) {
            return Redirect::route('admin.dashboard.index');
        }

        return View::make('admin/login', $this->data);

    }

    /**
     * @param LoginRequest $request
     * @return array
     */
    public function ajaxAdminLogin(LoginRequest $request)
    {
        $data = [
            'email' => $request->email,
            'password' => $request->password
        ];

        if (Auth::guard('admin')->attempt($data, true)) {

            $user = admin();
            $user->last_login = Carbon::now();
            $user->save();
            Session::put('lock', '0'); // Reset the lock screen session;

            return Reply::redirect(route('admin.dashboard.index'), 'messages.loginSuccess');
        }


        return Reply::error('messages.incorrectLogin');

    }

    /**
     * @return \Illuminate\Http\RedirectResponse
     * When logout button of admin panel is clicked.This method is called.This method destroys all the
     * the session stored and redirect to the Login Page
     */
    public function logout()
    {
        Auth::guard('admin')->logout();

        return Redirect::route('admin.getlogin');
    }
}

【问题讨论】:

  • 当您按下回车键时,您将导致表单实际提交,并且您已定义该表单以提交回它出现的任何页面 ('url' =&gt; '')。另一方面,您的按钮与表单的提交控件完全无关,而是运行一些 JavaScript 来发布到您设计用于处理已发布凭据的 url (url: "{{route('admin.login')}}")。

标签: php laravel


【解决方案1】:

转到 routes/web.php 中的 admin.login 命名路由定义(或声明路由的路由文件)。该路线应为Route::get(...)。您需要将其替换为 Route::post(...) 的 post 路由。

在您的代码中,您正在使用GET 方法路由通过 post 方法发布表单数据。这是不匹配的,你必须修复它。您的 Form::open 缺少 url,请将其添加为

Form::open(array('url' => route('admin.logn'),'class' =>'form-inline', 'id' => 'adminLogin'))` 

【讨论】:

  • 这个我试过了,但是没用,所以我把它放回原来的样子。我现在添加了 web.php 代码。可以看看吗?
  • 你是用ajax还是普通方式登录?你的路由文件真的很乱,你真的需要清理一下。
  • 我登录正常。
  • 检查答案,进行更改。它现在应该可以工作了。
  • 是的,我改变了那条线,它工作得很好。唯一的问题是在成功尝试或登录失败后它不会重定向。它返回一个包含 Json、原始数据、标题的空白页面,在其下方显示:状态“成功”消息“登录成功”。 action "redirect" url "localhost/admin/dashboard" 登录成功后如何重定向。
猜你喜欢
  • 2023-03-30
  • 2016-10-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 2011-12-13
  • 2011-03-13
  • 1970-01-01
相关资源
最近更新 更多