【问题标题】:Missing required parameters for a route in laravel在 laravel 中缺少路由所需的参数
【发布时间】:2021-07-13 20:54:33
【问题描述】:

我正在尝试在我的 URL 中传递 2 个参数,我之前尝试过,它运行良好,但现在给我这个错误:“[Route: details] [URI: {RS}/{id] 缺少必需的参数}] [缺少参数:RS]。"

这是我的 web.php 中的路线:

Route::get('/{RS}/{id}', 'App\Http\Controllers\SiteController@getDetails')->name('details');

这是视图:

<div class="card-body text-dark">
                    <div style="width:120px " class="ml-1 mt-1 vender-img">

                    <a  href="{{route('details',['id'=> $Resultas->ID , 'RS'=> $Resultas->RS] )}}">
                    @if( $Resultas->Logo != "" )
                        <img style="height:110px" src="{{URL::asset('assets/images/logos/'.$Resultas->ID . '/'.$Resultas->Logo)}}" alt="image">
                        @else
                        <img style="height:110px" src="{{URL::asset('assets/images/idea.png')}}" alt="image">
                    @endif
                    </a> 

                    </div>

                    <h6 class="card-title"><a href="{{route('details',['id'=> $Resultas->ID , 'RS'=> $Resultas->RS] )}}">{{$Resultas->RS}}</a></h6>
                    <p class="card-text">{{ Str::limit($Resultas->Descp , 150) }}</p>

                </div>

如您所见,我正在尝试在该 URL 中传递 id 和 RS。

这是控制器的功能:

public function getDetails($id , $RS)
{
    $detailsPage = entreprise::find($id);
    $detailsPage->increment('views');
    //dd($detailsPage->title);

    $review = avis::where('id_e', $id)->where('active',1)->count();

    $avg = avis::where('id_e', $id)->where('active',1)->avg('rating');

    $avgStar = avis::where('id_e', $id)->where('active',1)->avg('rating');

    if ($avgStar > 0 && $avgStar <= 0.5) {
        $avgStar = 0;
    } elseif ($avgStar > 0.5 && $avgStar <= 1) {
        $avgStar = 1;
    } elseif ($avgStar > 1 && $avgStar <= 1.5) {
        $avgStar = 1;
    } elseif ($avgStar > 1.5 && $avgStar <= 2) {
        $avgStar = 2;
    } elseif ($avgStar > 2 && $avgStar <= 2.5) {
        $avgStar = 2;
    } elseif ($avgStar > 2.5 && $avgStar <= 3) {
        $avgStar = 3;
    } elseif ($avgStar > 3 && $avgStar <= 3.5) {
        $avgStar = 3;
    } elseif ($avgStar > 3.5 && $avgStar <= 4) {
        $avgStar = 4;
    } elseif ($avgStar > 4 && $avgStar <= 4.5) {
        $avgStar = 4;
    } elseif ($avgStar > 4.5) {
        $avgStar = 5;
    }

    $data = ['LoggedUserInfo' => User::where('id', '=', session('LoggedUser'))->first()];

    $gallery = galerie::where('identre', '=', $id)
                      ->select('galeries.Img as img', 'galeries.alt as alt')
                      ->get();

    $banner = galerie::where('identre', $id)
                      ->where('banner', 1)
                      ->first();

    $service = services::where('id_ent', '=', $id)
                       ->select('service')->get();


    $relate = entreprise::where('idact', '=', $detailsPage->idact)
                        ->where('id', '!=', $id)
                        ->where('entreprises.active', '=', 1)
                        ->select('id','RS','Logo')
                        ->get();

    $comments = avis::join('users','users.id','=','avis.id_user')
                    ->where('avis.id_e',$id)
                    ->where('active','=', 1)
                    ->select('avis.comment as comment' , 'avis.rating as rating' , 'users.name as name' , 'users.last_name as last_name' , 'avis.created_at as created_at')
                    ->paginate(10);

    return view('entreprise_details', $data, ['details' => $detailsPage, 'galerie' => $gallery, 'serv' => $service, 'relate' => $relate, 'stars' => $avgStar, 'AVG' => $avg, 'rev' => $review , 'comment' => $comments ,'banners' => $banner]);
}

这一定是我找不到的愚蠢错误,也许一些额外的眼睛可以帮助我!

【问题讨论】:

  • 将参数顺序Route::get('/{RS}/{id}',改为Route::get('/{id}/{RS}'
  • 您是否测试过'RS'=&gt; $Resultas-&gt;RS 是否有效?
  • @Dren $Resultas->RS 确实有效,我刚刚检查过,更改 id 和 RS 的顺序没有帮助

标签: laravel


【解决方案1】:

您传递给 route 的值之一可能为 null,所以只需使用 ?在他们忽略错误并在控制器中检查它们的值是否为空之后

Route::get('/{id?}/{RS?}', 'App\Http\Controllers\SiteController@getDetails')->name('details');

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 2020-08-07
    • 2020-12-25
    • 1970-01-01
    • 2022-01-21
    • 2020-11-01
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多