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.
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
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
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.
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.
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?
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)