首页 > 解决方案 > Laravel - 如何将变量传递给控制器​​和路由的 url 名称

问题描述

我需要将变量传递给 Boat 详细信息的控制器并将其显示在 url 中。

这是我下载可用船只列表的刀片视图:

 @foreach($Boats as $boat)
                            <article class="box">
                                <figure class="col-sm-4">
                                    <a title="" href="{{asset('frontend')}}/ajax/cruise-slideshow-popup.html" class="hover-effect popup-gallery"><img width="270" height="160" alt="" src="{{ json_decode($boat->images, true)['url']}}"></a>
                                </figure>
                                <div class="details col-sm-8">
                                    <div class="clearfix">
                                        <h4 class="box-title pull-left">{{$boat->name}}<small>{{$boat->id}}</small></h4>
                                        <span class="price pull-right"><small>from</small>$239</span>
                                    </div>
                                    <div class="character clearfix">
                                        <div class="col-xs-3 cruise-logo">
                                            <img src="http://placehold.it/110x25" alt="" />
                                        </div>
                                        <div class="col-xs-4 date">
                                            <i class="soap-icon-clock yellow-color"></i>
                                            <div>
                                                <span class="skin-color">Date</span><br>{{$boat->year}}
                                            </div>
                                        </div>
                                        <div class="col-xs-5 departure">
                                            <i class="soap-icon-departure yellow-color"></i>
                                            <div>
                                                <span class="skin-color">Departure</span><br>{{$boat->homeBase}}
                                            </div>
                                        </div>
                                    </div>
                                    <div class="clearfix">
                                        <div class="review pull-left">
                                            <div class="five-stars-container">
                                                <span class="five-stars" style="width: 60%;"></span>
                                            </div>
                                            <span>270 reviews</span>
                                        </div>
                                       <a href="{{ LaravelLocalization::getLocalizedURL(null, trans('routes.detailedBoat'),['id' => $boat->id]) }}" class="button btn-small pull-right">select cruise</a>
                                    </div>
                                </div>
                            </article>
                            @endforeach

这是用来翻译 url 的 route route.php 文件:

return [
"login"    =>  "login",
"register"  =>  "register",
"listBoats" => "boats",
"contact" => "contact",
"detailedBoat" => "DetailBoat/{id}",

];

网页.php:

Route::get(LaravelLocalization::transRoute('routes.detailedBoat'),('DetailedBoat'), function (\App\Boat $id) {
return $id;

});

详细信息船控制器:

public function __invoke($id)
{
    echo $id;

    return view('frontendViews.detailedBoat');
}

结果应该是

http://localhost:8000/en/boats/{id}

奇怪的是,路由完美地基于 app.php 'locale' 设置,如果我有 'en' 我得到http://localhost:8000/en/DetailBoat/1 ` 和http://booking:8888/it /DettaglioBarca/%7Bid%7D切换语言;反之亦然,如果在 app.php 上有 ['it'] 我会得到http://booking:8888/it/DettaglioBarca/1http://booking:8888/en/DetailBoat/%7Bid%7D英文版。

谢谢

标签: laravelmodel-view-controllertranslationlaravel-bladelaravel-routing

解决方案


推荐阅读