web-dev-qa-db-fra.com

Laravel 4 Blade @include variable

J'essayais de faire include avec Laravel blade, mais le problème est qu'il ne peut pas passer la variable. Voici mon exemple de code:

file_include.blade.php

<?php
  $myvar = "some text";

main.blade.php

@include('file_include')
{{$myvar}}

Lorsque j'exécute le fichier, il renvoie l'erreur "Variable non définie: myvar". Alors, comment puis-je passer la variable du fichier include au fichier principal?

Je vous remercie.

27
user1995781

Pourquoi voudriez-vous le passer de l'inclusion au modèle d'appel? Si vous en avez besoin dans le modèle d'appel, créez-le là, puis passez-le dans le modèle inclus comme ceci:

@include('view.name', array('some'=>'data'))

Extrait de code ci-dessus de http://laravel.com/docs/templates

53
Kenny

Malheureusement Laravel Le moteur de lame ne prend pas en charge ce que vous attendiez! .Mais un peu de manière traditionnelle, vous pouvez y parvenir!

SOLUTION 1 - sans Laravel Blade Engine

Étape a:

de

file_include.blade.php

à

file_include.php

Étape b:

main.blade.php

<?php 
     include('app/views/file_include.php')
?>
{{$myvar}}

SOLUTION 2 avec Laravel Blade Engine

routes.php

$data = array(
'data1'         => "one",
'data2'         => "two",
);

View::share('data', $data); 

Accéder au tableau de données $ à partir de Any View comme ça

{{ $data['data1'] }}

Production

one
8
ErcanE

Blade est un moteur de modèle pour Laravel. Essayez donc de transmettre la valeur du contrôleur ou vous pouvez la définir dans le fichier routes.php à des fins de test.

@include est utilisé pour inclure des sous-vues.

2
Shubhamoy

Je pense que vous devez comprendre la portée des variables dans Laravel Blade template. Inclure un modèle utilisant @include Héritera toutes les variables de sa vue parent (la vue où il a été défini). Mais Je suppose que vous ne pouvez pas utiliser vos variables définies dans votre vue enfant sur la portée parent. Si vous voulez que votre variable soit disponible pour le parent, essayez d'utiliser View::share($variableName, $variableValue) elle sera disponible pour toutes les vues comme prévu.

1
lukaserat

Dans ce scénario $myvar ne serait disponible que sur la portée locale de l'appel include.

Pourquoi n'envoyez-vous pas la variable directement depuis le contrôleur?

0
cecilozaur

Je vous suggère de faire un classique PHP nécessite si vous voulez vraiment changer votre variable (alors c'est automatiquement par référence)

0
Sven P