【问题标题】:Checking and adding data to url检查并将数据添加到 url
【发布时间】:2021-12-07 05:08:44
【问题描述】:

我有一个HeaderData 模型,它有两个字段:

$table->string('url');
$table->text('data');

通过BaseController,我为所有控制器添加了一种方法,以免重复代码:

protected $header_data;

public function __construct() 
{
    $this->header_data = HeaderData::all();
    
    View::share('header_data', $this->header_data);
}

我在页面上显示这个,head 中的 data 字段:

@foreach ($header_data as $data)
    {!! $data->data !!}
@endforeach

但对我来说,它显示了所有的data,但我只需要当前页面,所以有一个url 字段。我需要进行类型检查,如果我们位于 url 字段中指定的页面上,那么我们将显示同一页面的 data 字段。这是一个例子:

添加

"url": "/contacts"
"data": "<title>Contacts TEST</title>
<meta name="description"  content="test CONTACTS" />"

假设我们检查如果我们现在在联系人页面上,那么我们只为联系人显示data 字段。如果页面是博客,那么我们会显示该博客的 data

但我还不知道该怎么做,谁能告诉我?我可以在这个控制器中做吗?

【问题讨论】:

    标签: php laravel laravel-blade


    【解决方案1】:

    在你的控制器中

    $header_data = HeaderData::where(['url'=>Route::currentRouteName()])->first();
    

    在刀片中

    {!! $header_data->data !!}
    

    或者你可以试试

    @foreach($header_data as $data)
        @if(Route::currentRouteName() === $data->url)
            {!! $header_data->data !!}
        @endif
    @endforeach
    

    【讨论】:

    • 好的,太好了,我还有一个问题,这都是针对非动态页面的。但我想我在blog/{slug} 路由中有一个名字,我创建了blog/article_1 url。我如何在这里进行检查?
    • 公共函数 show($slug) { $header_data = HeaderData::where(['url'=>$slug])->first(); // 其他代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2019-05-30
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多