要将数据传递给你的 vue 组件,你可以使用props。
IndexController.php
...
$events = [
['id' => 111, 'foo' => 'bar'],
['id' => 123, 'foo' => 'bar']
];
return view('index')->with(compact('events')); // send events to blade
}
index.blade.php
@extends('layouts.master')
@section('content')
<page-index events="{{ json_encode($events) }}"></page-index> // send events to vue
@endsection
PageIndexComponent.vue
<script>
export default {
props: ['events'], // get events from here
mounted() {
parsedEvents = JSON.parse(this.events);
}
}
</script>
在这里,您可以使用parsedEvents 执行您的v-for 循环。
对于 SEO,您可以编辑您的 resources/views/layouts/master.blade.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="title" content="@hasSection('title')@yield('title')@else{{ config('app.name') }}@endif">
<meta name="description" content="@hasSection('description')@yield('description')@else{{ config('app.name') }}@endif">
<meta property="og:title" content="@hasSection('title')@yield('title')@else{{ config('app.name') }}@endif">
<meta property="og:description" content="@hasSection('description')@yield('description')@else{{ config('app.name') }}@endif">
<meta property="og:image" content="@hasSection('image')@yield('image')@else{{ asset('/images/avatar.jpg') }}@endif">
<meta property="og:type" content="@yield('type')">
<meta property="og:url" content="{{ url()->current() }}">
<meta property="og:locale" content="en_US">
...
在每个视图中,您可以硬编码您的标题、描述等,也可以从您的控制器发送:
@extends('layouts.master')
@section('title', 'Events') // or something like $page_title received from controller
@section('description', 'All Events') // or $page_desc sent from controller
@section('image', 'http://imgurl.com/123.png') // etc, etc
@section('type', 'article')
@section('content')
<page-index events="{{ json_encode($events) }}"></page-index)
@endsection