Laravel |获取当前页面的指定数据

时间:2019-10-28 08:08:48

标签: laravel eloquent laravel-blade

我正在尝试获取每个页面的元数据 每个页面都有一个独特的子弹

appServiceProvider中,我有:

$view->with('seopage', Page::all());

在刀片视图中(剖面头),我有:

<title>
  @foreach($seopage as $sm)
    {{ $sm->main_title }}
  @endforeach
</title>
<meta name="description" content="
  @if(Request::is('/*'))                             
  @foreach($seopage as $sp)
  {{ $sp->site_description }}
  @endforeach
  @endif
">

但是现在我正在获得all titlesdescriptions。如何获取指定页面的数据?

页面模型具有unique SLUG variable。谢谢

2 个答案:

答案 0 :(得分:2)

appServiceProvider中,您可以共享属于指定页面的页面:

$page = Page::where('slug', Request::path())->first();
View::share('seopage', $page);

在视图中,您可以检索共享变量:

<meta name="description" content="
  @if(Request::is('/*') && isset($seopage))
  {{ $seopage->site_description }}
  @endif
">

答案 1 :(得分:0)

在页数表中必须具有唯一的uri列

您必须使用

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select multiple>
  <option value="Category 1">Category 1</option>
  <option value="Category 2">Category 2</option>
  <option value="Category 3">Category 3</option>
  <option value="Category 4">Category 4</option>
</select>

<div id="showSubcategory"></div>

在Blade中使用

use Illuminate\Support\Facades\Route;

.....

$uri = \Route::current()->uri;
$seopage =  Page::where('uri', $uri)->first();

if ($seopage) {
    $seo = sprintf(
        '<title>%s</title>'  . PHP_EOL
        . '<meta name="description" content="%s>',
        $seopage->main_title ,
        $seopage->site_description
    );
} else {
    $seo = '';
}
$view->with('seo', $seo);