Di Laravel 4, pengontrol saya menggunakan tata letak Blade:
class PagesController extends BaseController {
protected $layout = 'layouts.master';
}
Tata letak master mengeluarkan judul variabel dan kemudian menampilkan tampilan:
...
<title>{{ $title }}</title>
...
@yield('content')
....
Namun, di pengontrol saya, saya hanya tampak dapat meneruskan variabel ke subview, bukan tata letak. Misalnya, suatu tindakan bisa berupa:
public function index()
{
$this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}
Ini hanya akan meneruskan $title
variabel ke bagian konten tampilan. Bagaimana cara memberikan variabel itu ke seluruh tampilan, atau setidaknya tata letak master?
@component('alert', ['foo' => 'bar'])
......Untuk Google di masa mendatang yang menggunakan Laravel 5, Anda sekarang juga dapat menggunakannya dengan menyertakan,
@include('views.otherView', ['variable' => 1])
sumber
Saya dapat menyelesaikan masalah itu dengan menambahkan ini ke metode pengontrol saya:
$title = 'My Title Here'; View::share('title', $title);
$ this-> layout-> title = 'Beranda'; tidak berhasil.
sumber
Di Template Blade: tentukan variabel seperti ini
@extends('app',['title' => 'Your Title Goes Here']) @section('content')
Dan di app.blade.php atau pilihan Anda lainnya (Saya hanya mengikuti pengaturan Laravel 5 default)
<title>{{ $title or 'Default title Information if not set explicitly' }}</title>
Ini adalah jawaban pertama saya di sini. Semoga berhasil. Semoga berhasil!
sumber
{{ $title ?? 'Default Title' }}
Cara termudah untuk menyelesaikannya:
view()->share('title', 'My Title Here');
Atau menggunakan tampilan Fasad:
use View; ... View::share('title', 'My Title Here');
sumber
Tampaknya seolah-olah saya dapat meneruskan variabel ke seluruh tata letak menggunakan atribut pada objek tata letak, misalnya untuk menyelesaikan masalah saya, saya dapat melakukan hal berikut:
$this->layout->title = 'Home page';
sumber
class PagesController extends BaseController { protected $layout = 'layouts.master'; public function index() { $this->layout->title = "Home page"; $this->layout->content = View::make('pages/index'); } }
Pada file Template Blade, INGAT menggunakan @ di depan variabel.
... <title>{{ $title or '' }}</title> ... @yield('content') ...
sumber
Anda dapat mencoba:
public function index() { return View::make('pages/index', array('title' => 'Home page')); }
sumber
coba saja metode sederhana ini: dalam pengontrol: -
public function index() { $data = array( 'title' => 'Home', 'otherData' => 'Data Here' ); return view('front.landing')->with($data); }
Dan di tata letak Anda (app.blade.php):
<title>{{ $title }} - {{ config('app.name') }} </title>
Itu saja.
sumber
jika Anda ingin mendapatkan variabel bagian, Anda dapat membayar seperti ini:
$_view = new \View; $_sections = $_view->getFacadeRoot()->getSections(); dd($_sections); /* Out: array:1 [▼ "title" => "Painel" ] */
sumber
$data['title'] = $this->layout->title = 'The Home Page'; $this->layout->content = View::make('home', $data);
Saya telah melakukan ini sejauh ini karena saya membutuhkan file view dan master. Tampaknya jika Anda tidak menggunakan $ this-> layout-> title itu tidak akan tersedia di master layout. Perbaikan diterima!
sumber