【问题标题】:URL with two parameters带有两个参数的 URL
【发布时间】:2020-04-26 20:34:03
【问题描述】:

我想生成带有两个参数的 URL。在我的web.php 中,我创建了一条路线:

Route::get('/pojedinacni-turnir/{godina}/kolo/{kolo}', [
  'uses' => 'Frontend\PojedinacniTurnirController@show',
  'as' => 'pojedinacni.turnir',
]);

我的两个参数是godinakolo

在我的控制器中,我创建了带有两个参数的 show 函数:来自 godina 的 id 和来自 kolo 的 id。 这是来自我的控制器的代码:

<?php

  namespace App\Http\Controllers\Frontend;

  use App\Http\Controllers\Controller;
  use Illuminate\Http\Request;
  use App\Sezona;
  use App\TurnirPojedinacni;

  class PojedinacniTurnirController extends Controller
  {
   public function show($id_sezona, $id_kolo)
   {
    $sezone = Sezona::orderBy('godina', 'desc')->get();

    $sezona = Sezona::findOrFail($id_sezona);

    $kola = TurnirPojedinacni::where('sezona_id', $id_sezona)->orderBy('id', 'asc')->get();

    $kolo = TurnirPojedinacni::findOrFail($id_kolo);

    return view('frontend.pojedinacni_turnir', compact('sezone', 'sezona', 'kola', 'kolo'))->render();
   }
  }

当我尝试检查我的 URL 时,我收到以下消息:

缺少 [Route: pojedinacni.turnir] [URI: pojedinacni-turnir/{godina}/kolo/{kolo}] 的必需参数。 (查看:C:\WebSites\TkPazin\TK_Pazin\resources\views\frontend\pojedinacni_turnir.blade.php)

我不明白错误,因为我尝试使用两个参数的 URL。我用这样的 id 创建了 URL:

{{ route('pojedinacni.turnir', ['godina' => 1, 'kolo' => 1]) }}

即使这样我也会收到相同的错误消息。

更新:添加刀片文件

@extends('layouts.frontend')
@section('title', 'TK Pazin | Pojedinačni turnir')
@section('css')
 <link href="/css/style_pojedinacni_turniri.css" rel="stylesheet"/>
@endsection
@section('content')
 <!-- Page Content -->
 <div class="container">
 <!-- Page Heading -->
  <h1 class="my-4" style="text-align:center; color: #ba3631;">Pojedinačni turniri {{ $sezona->godina }}</h1>
  <nav aria-label="breadcrumb">
    <ol class="breadcrumb">
        @foreach($sezone as $sezona)
            <li class="breadcrumb-item"><a href="{{ route('pojedinacni.turnir', $sezona->id) }}">{{ $sezona->godina }}</a></li>
        @endforeach
    </ol>    
</nav>
<div class="row mb-5">
    <div class="col-12 col-md-2 mb-5">
        <div class="list-group">
            @foreach($kola as $kolo)
                <button type="button" class="list-group-item list-group-item-action">{{ $kolo->naziv }}</button>
            @endforeach    
        </div>
    </div>

 </div>
 </div>
 <!-- /.container -->
@endsection

【问题讨论】:

  • 什么是 {godina},你从哪里得到的?
  • {godina} 是 Sezona 模型的 ID。
  • 就这样吧。 Godina 是我表年代的 ID。 Kolo 是我桌上锦标赛的 ID。在这两张桌子之间,我们有一对多的关系(一年可以有很多比赛)。我想创建一个视图,我可以在其中查看特定年份的锦标赛。这就是为什么我需要获取两个参数的原因。一份用于年度,一份用于锦标赛。
  • 如消息所述,问题出在您的 Blade 模板中,而不是您的控制器。如果您的数据库中存在或不存在 ID 无关紧要 - 如果它们不存在,您会看到不同的错误,而不是这个错误。在那个 Blade 文件的某个地方,你正在生成这个没有参数的路由。仔细检查那个代码,然后给我们看。
  • 在我的帖子末尾是我如何生成 url 的示例。出于测试的目的,我将其设为静态,稍后将设为动态

标签: laravel url


【解决方案1】:

你的刀片文件显示你只添加了1个参数

@foreach($sezone as $sezona)
     <li class="breadcrumb-item"><a href="{{ route('pojedinacni.turnir', $sezona->id) }}">{{ $sezona->godina }}</a></li>
@endforeach

添加附加参数

<a href="{{ route('pojedinacni.turnir', ['godina' => 1, 'kolo' => 1]) }}">{{ $sezona->godina }}</a>

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 2012-12-05
    • 2014-09-11
    • 2020-08-14
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2019-03-11
    相关资源
    最近更新 更多