此路由不支持 GET 方法。支持的方法:Laravel livewire 中的 POST

问题描述 投票:0回答:2

抱歉,我在 laravel livewire 中遇到路由问题。我想通过连续单击提交按钮(当然是在给出响应之后)来测试我的网站上的登录表单验证,然后在第五 (5) 次单击我遇到问题“此路由不支持 GET 方法。支持”方法:POST”。有人知道这个问题吗?因为我也在本地主机上以简单的形式尝试过,没有错误。

我使用 laravel livewire 2.2

这是我网站上的代码,

刀片

<form wire:submit.prevent="check">
   <div class="form-group">
      <label class="label">Email</label>
      <div class="input-group">
         <input wire:model.defer="email" type="email" class="form-control" placeholder="[email protected]">
         <div class="input-group-append">
            <span class="input-group-text">
            <i class="mdi mdi-check-circle-outline"></i>
            </span>
         </div>
      </div>
      @error('email')<label class="text-danger">{{ $message }}</label> @enderror
   </div>
   <div class="form-group">
      <label class="label">Password</label>
      <div class="input-group">
         <input wire:model.defer="password" type="password" class="form-control" placeholder="**********">
         <div class="input-group-append">
            <span class="input-group-text">
            <i class="mdi mdi-check-circle-outline"></i>
            </span>
         </div>
      </div>
      @error('password')<label class="text-danger">{{ $message }}</label> @enderror
   </div>
   <div class="form-group">
      <button class="btn btn-success submit-btn btn-block" wire:loading.attr="disabled" >
         <div wire:loading.remove>Login</div>
         <div wire:loading>
            <div class="loading-bar bg-white"></div>
            <div class="loading-bar bg-white"></div>
            <div class="loading-bar bg-white"></div>
            <div class="loading-bar bg-white"></div>
         </div>
      </button>
   </div>
</form>

控制器

class Login extends Component
{
    
    public $password;
    public $email;

    protected $rules = [
            'password' => 'required',
            'email' => 'required|email',
        ];
        
    public function check()
    {
    
        $this->validate($this->rules);

        if (Auth::attempt(['email' => $this->email, 'password' => $this->password]))
        {
            
            redirect()->to('livewire/add');
            
        }else
        {   
            
            $this->dispatchBrowserEvent('alert', ['type' => 'error', 'title' => 'Error','message' => 'Credential not valid']);

        }
        
    }
    
    public function render()
    {
        return view('livewire.login')->extends('backend.v2.master');
    }
    
}

路线

Route::group(['prefix' => 'livewire'], function() {
       Route::get('/login',Login::class);
       Route::get('/add',Add::class);
});

首次提交

image

第五次点击后出现错误结果

image

感谢您的帮助。

html laravel laravel-livewire
2个回答
0
投票

您是否尝试过将整个表单包装在 div 元素中?

<div> 
{{-- Anything you want to do --}}
</div>

0
投票

我有一个使用 nwidart/laravel-modules 包进行模块化的 Laravel 项目,并且我在其上安装了 Livewire。然而,在执行组件时,我遇到了错误:“该路由不支持 GET 方法。支持的方法:POST。”我意识到我还需要安装 mhmiton/laravel-modules-livewire 包,这样我就可以使用特殊的 artisan 命令在模块路径中创建组件。之后,Livewire 组件工作正常,但我无法使用 Livewire 事件。使用 $this->emit('event', $data);再次触发错误:“此路由不支持 GET 方法。支持的方法:POST。”当我使用 $this->emitTo(\Modules\Products\Http\Livewire\ProductPriceHtml::class, 'event', $data); 直接引用侦听器组件的路径时,没有错误,但是虽然发出了事件,侦听器没有响应该事件。有谁遇到过这个问题或者知道如何解决它?请帮忙。

© www.soinside.com 2019 - 2024. All rights reserved.