Je suis novice dans Laravel, des recherches, mais je ne peux pas trouver une solution pour quelque chose de si simple. J'ai créé une directive personnalisée à savoir « test » pour la lame dans le fichier app/Providers/AppServiceProvider.php
:lame directive personnalisée reçoit la valeur comme une chaîne au lieu de sa valeur d'origine
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::directive('test', function($expression){
// Dumps as well: "$var1 , $var2"
dump($expression);
list($arg1, $arg2) = explode(',',str_replace(['(',')',' '], '', $expression));
// will print: $var1 , $var2
return "<?php echo '$arg1 , $arg2'; ?>";
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
Théoriquement, son utilisation doit être très simple à l'intérieur d'un modèle de lame, mais comme le montre l'exemple suivant, la directive est l'impression la valeur littérale des arguments, par exemple var1 $ est l'impression var1 $ au lieu de son contenu réel "test a":
<?php
$var1 = 'test a';
$var2 = 'test b';
?>
// Prints: $var1 , $var2
// Expected: "test a test b"
@test($var1 , $var2)
déjà essayé d'imprimer leurs valeurs en utilisant les balises multiples:
@test({{ $var1 }}, {{ $var2 }})
@test({!! $var1 !!}, {!! $var2 !!})
@test({{{ $var1 }}}, {{{ $var2 }}})
Mais ne fonctionne pas non plus, la directive reçoit toujours le nom de la variable au lieu de son contenu. Qu'est-ce que j'ignore dans ce cas? Toute aide est appréciée. J'utilise Laravel 5.4. *.
Modifier le retour à 'retour " Php echo $ arg1 '' arg2 $;?..?>";' – Sebastian