2013-04-03 3 views
3

моего взгляд Laravel структура таково:Laravel вида, расположение и переменные передачи

/views/layouts/default.blade.php 

содержащего

<html> 
@yield('header') 
<body> 
    @yield('navigation') 
    @yield('content') 
    @yield('footer') 
</body> 

последующий

/views/partials/footer.blade.php 
/views/partials/header.blade.php 
/views/partials/navigation.blade.php 

С моей точки зрения заголовка У меня есть var $ title Я пытаюсь установить его динамически, вызвав контроллер на главной странице.

так, на мой взгляд, расположенный в /pages/index.blade.php Я получил это

@layout('layouts.default') 
@section('header') 
    @render('partials.header') 
@endsection 

@section('navigation') 
    @render('partials.menu') 
@endsection 

@section('footer') 
    footer 
@endsection 

@section('content') 
@endsection 

Я где-то читал, что название вар должен быть передан Повсеместно контроллера, но я не могу это сделать: (

я попытался это без какого-либо успеха. $ название не определено в представлениях заголовка Partials ..

class Home_Controller extends Base_Controller { 
    public $layout = 'layouts.default'; 
    public function action_index() 
    { 
     $this->layout->nest('header', 'home.index')->with('title', 'James'); 
     $posts = Post::with('author')->all(); 
     return View::make('home.index'); 

    } 

ответ

1

в шаблонизатор лезвию Laravel в вы можете использовать либо @render или @include для визуализации видов.

Однако, если вы используете @render, визуализированное представление не будет наследовать данные текущего вида. Итак, если вам нужны переменные и т. Д., Которые нужно унаследовать, вам необходимо использовать @include. См. docs on templating для получения дополнительной информации.