Laravel 在路由中使用数据库变量

Laravel use database variable within route

我在 Laravel 7 上使用 Blade 模板引擎。我正在尝试使用一个项目的名称作为它的路线。到目前为止我有:

web.php

Route::get('/bad-boys-preview', function () {return view('movies.bad-boys-preview');})->name('bad-boys');

movies.blade.php

        <div class="row">
            @foreach($movies as $item)
            <div class="list-item-grid">
                <div class="card">
                    <div class="card-content">
                        <div class="card-body">
                            <a class="list-item-heading" href="#">{{ $item->name }}</a>
                            <a href="{{ route('{{ $item->name }}') }}" class="btn btn-primary">@lang('Preview')</a>
                        </div>
                    </div>
                </div>
            </div>
            @endforeach
        </div>

这不起作用并给出语法错误,意外的“{”。

请注意,每个电影预览页面都使用完全不同的布局和 css,这就是为什么我为每个电影预览创建了不同的路径和视图(如果这也请告诉我不是最佳的)因此执行以下操作无济于事:

<a href="{{ route('movies.preview',$movie->name)}}" class="btn btn-primary">Preview</a>

因为这假定所有预览使用相同的 blade 模板。

您收到的错误来自这一行。

<a href="{{ route('{{ $item->name }}') }}" class="btn btn-primary">@lang('Preview')</a>

修改如下。您已经开始 {{ }} 路线。

 <a href="{{ route($item->name) }}" class="btn btn-primary">@lang('Preview')</a>

只需确定路线名称即可。因为 $item->name 名称应该作为名称出现在 web.php 文件中。