【问题标题】:Laravel post from modal tries to GET instead of POSt来自模态的 Laravel 帖子尝试使用 GET 而不是 POST
【发布时间】:2020-09-03 10:15:36
【问题描述】:

模态从@foreach 获取数据并显示它们。并从表单将输入的数据发布到下一个 POST 路由 {{ route('user.give') }}。但是,它不断尝试对不同的路由(恰好是它上面的路由)执行 GET 请求。请帮忙,谢谢您的帮助

@section('content')
    @if (session('status'))
        <div class="alert alert-success" role="alert">
            {{ session('status') }}
        </div>
    @endif

    @if(count($orgs) > 0)
        @foreach($orgs as $org)
        <div class="card m-1 col-md-3 p-0">
            <img class="card-img-top" src="{{ asset('storage/'.$org->logo) }}" alt="{{ $org->name }} logo" />

            <div class="card-body">
                <span class="card-title"><strong><i class="fa fa-church"></i> {{ $org->name }}</strong></span>
                <div class="small"><i class="fa fa-exchange-alt"></i> {{ $org->alias }}</div>

                <p class="card-text"></p>
                <button class="btn btn-outline-primary rounded-0" data-toggle="modal" data-target="#exampleModalCenter">
                    <i class="fa fa-credit-card"></i>
                    Give
                </button>
                <a href="{{ route('user.oneclick.create', ['id' => $org->id]) }}" class="btn  btn-outline border-dark text-dark rounded-0"><i class="fa fa-cogs"></i></a>
            </div>
        </div>
        @endforeach
    @else
        <p>Sorry, there's no match for your search.</p>
    @endif

下面是模态。它实际上是上面代码的延续。模态实际上出现了,问题只发生在发布时

<!-- form modal -->
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalCenterTitle">Details</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <cite>You are about to give to {{ $org->name }}</cite>
      <!-- form -->
        <form method="POST" action="{{ route('user.give') }}">
            @csrf
            <input type="hidden" name="organisation_name" value="{{ $org->name }}">
            <input type="hidden" name="organisation_id" value="{{ $org->id }}">
            <input type="hidden" name="organisation_email" value="{{ $org->email }}">
            <input type="hidden" name="organisation_logo" value="{{ $org->logo }}">
            <div class="form-group">
                <label for="amount">Amount</label>
                <input type="number" class="form-control rounded-0" name="amount" aria-describedby="amount" placeholder="e.g 5000" required>
            </div>
            <div class="form-group">
                <label for="purpose">Purpose</label>
                <input type="text" class="form-control rounded-0" name="purpose" placeholder="e.g tithe">
            </div>
            <button type="submit" class="btn  btn-outline border-dark text-dark rounded-0" id="proceed">
                Proceed
            </button>
        </form>
      <!-- //form -->
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-outline border-dark text-dark rounded-0" data-dismiss="modal">Close</button>
        <!-- <button type="button" class="btn btn-primary">Save changes</button> -->
      </div>
    </div>
  </div>
</div>
<!-- //form modal -->
@endsection

这是我的路线

Route::middleware('auth')->group(function (){
    Route::post('/user/search', 'HomeController@search')->name('user.search');
    Route::post('/user/give/', 'HomeController@give')->name('user.give');
    Route::get('/user/verify/{reference}', 'HomeController@verify')->name('user.verify');

它访问 user.search 而不是 user.give,它使用 GET 来完成

【问题讨论】:

  • 嗯,也许我没有正确理解这个问题 - 当您提交表单时(通过单击继续)触发了哪个路由?包括论据?
  • 您的模态是否按照准确的记录打开?
  • 是的@Akhtar Munir
  • 不,它没有,它的目标是刚好在我想要到达的路线上方的路线。它试图获取而不是发布
  • @AkhtarMunir 我真的很感激这个快捷方式

标签: laravel post get routes modal-dialog


【解决方案1】:

$org 不是您想要的模式:它是循环中的最后一个 $org $orgs 数组,因为它不在 @foreach 循环内。

当您单击显示模态的按钮时,您需要动态生成模态(通过 javaScript 或其他)。

【讨论】:

  • 感谢@Christophe Hubert。虽然不太明白你的答案,但它在 localhost 上运行良好。一旦我将它投入生产,问题就开始了。如果方便,我将不胜感激代码 sn-p 或更多解释。我也尝试将它放在 foreach 中,但仍然没有好处。谢谢
【解决方案2】:

找到了。显然,我添加了一个在提交表单时失败的验证规则。由于无法将验证错误发送到它正在执行 GET 的模式。

现在呼吸新鲜空气。谢谢大家的支持

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2011-08-04
    • 2010-09-07
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多