117 votes

Comment passer une variable au layout en utilisant le templating Blade de Laravel ?

Dans Laravel 4, mon contrôleur utilise une mise en page Blade :

class PagesController extends BaseController {
    protected $layout = 'layouts.master';
}

La mise en page principale édite le titre de la variable et affiche ensuite une vue :

...
<title>{{ $title }}</title>
...
@yield('content')
....

Toutefois, dans mon contrôleur, il semble que je ne puisse transmettre des variables qu'à la vue secondaire, et non à la mise en page. Par exemple, une action pourrait être :

public function index()
{
    $this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}

Cela ne transmettra que le $title à la section du contenu de la vue. Comment puis-je fournir cette variable à l'ensemble de la vue, ou au moins à la disposition principale ?

-1voto

Melvin Points 660

Vous pouvez essayer :

public function index()
{
    return View::make('pages/index', array('title' => 'Home page'));
}

-2voto

Anthony Vipond Points 1663
$data['title'] = $this->layout->title = 'The Home Page';
$this->layout->content = View::make('home', $data);

Je l'ai fait jusqu'à présent parce que j'en avais besoin à la fois dans la vue et dans le fichier maître. Il semble que si vous n'utilisez pas $this->layout->title, il ne sera pas disponible dans le fichier maître. Les améliorations sont les bienvenues !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X