web-dev-qa-db-fra.com

Comment inclure une sous-vue dans les modèles de lames?

J'essaie de créer un site en utilisant laravel, mais j'ai vraiment du mal à résoudre les problèmes de base que la documentation ne couvre pas.

Dans ce cas, je vois qu'il est dit que je peux inclure une vue dans une autre en utilisant @include('view.name'). Qu'est ce que view.name? Où est-il sauvé? J'ai essayé de créer un fichier app/views/view.name.blade.php, mais il n'a pas été lu. Comment le nom de fichier correspond-il au nom de la lame?

40
Benubird

EDIT: La solution recommandée ci-dessous était celle de 2014. Vous devez maintenant utiliser @include, comme indiqué dans autre réponse .


Dans les vues Laravel, le point est utilisé comme séparateur de dossiers . Ainsi, par exemple, j'ai ce code

return View::make('auth.details', array('id' => $id));

qui pointe vers app/views/auth/details.blade.php

Et pour inclure une vue dans une vue, faites comme ceci:

fichier: layout.blade.php

<html>
  <html stuff>
  @yield('content')
</html>

fichier: hello.blade.php

@extends('layout')

@section('content')
  <html stuff>
@stop
22
winkbrace

Vous pouvez utiliser le moteur de modèle de lame: 

@include('view.name') 

'view.name' vivra dans votre dossier principal: 

// for laravel 4.X
app/views/view/name.blade.php  

// for laravel 5.X
resources/views/view/name.blade.php

Un autre exemple

@include('hello.world');

afficherait la vue suivante

// for laravel 4.X
app/views/hello/world.blade.php

// for laravel 5.X
resources/views/hello/world.blade.php

Un autre exemple

@include('some.directory.structure.foo');

afficherait la vue suivante

// for Laravel 4.X
app/views/some/directory/structure/foo.blade.php

// for Laravel 5.X
resources/views/some/directory/structure/foo.blade.php

En résumé, la notation par points définit la hiérarchie de répertoires dans laquelle se trouve votre vue, suivie du nom de la vue, par rapport au dossier app/views pour laravel 4.x ou à votre dossier resources/views dans laravel 5.x

ADDITIONNEL

Si vous voulez passer des paramètres: @include('view.name', array('paramName' => 'value'))

Vous pouvez ensuite utiliser la valeur dans vos vues comme suit: <p>{{$paramName}}</p>

157
Gaz_Edge

A partir de Laravel 5.6, si vous avez ce type de structure et que vous souhaitez inclure un autre fichier de lame dans un sous-dossier,

| --- vues

| ------- parentFolder (Dossier)

| ---------- name.blade.php (fichier de lame)

| ---------- childFolder (Dossier)

| -------------- mypage.blade.php (fichier de lame)

name.blade.php

  <html>
      @include('parentFolder.childFolder.mypage')
  </html>
0
Kent Allen Sison