【问题标题】:Laravel use database variable within routeLaravel 在路由中使用数据库变量
【发布时间】:2020-06-06 12:32:37
【问题描述】:

我在 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,这就是为什么我为每个电影预览创建了不同的路线和视图(如果这不是最佳的,请告诉我)因此它将无助于执行以下操作:

&lt;a href="{{ route('movies.preview',$movie-&gt;name)}}" class="btn btn-primary"&gt;Preview&lt;/a&gt;

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

【问题讨论】:

    标签: laravel laravel-7


    【解决方案1】:

    你得到的错误来自这一行。

    <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-&gt;name 名称应该在 web.php 文件中作为名称。

    【讨论】:

    • 确保最后一行......你应该在 web.php 文件中有名称。否则,你会得到路由未定义的错误。
    • 是的,你是对的。我最终创建了一个新的 slug 字段来代替 name 字段,因为名称有空格和大写字母。再次感谢。
    猜你喜欢
    • 2019-02-03
    • 2017-06-08
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多