Comment inclure une lame de modèle seulement si il existe?
Comment @inclure une lame de modèle seulement si elle existe ?
Je pourrais faire quelque chose comme ça :
@if (File::exists('great/path/to/blade/template.blade.php'))
@include('path.to.blade.template')
@endif
Mais ce n'est pas vraiment élégant et efficace.
Je pourrais l'inclure, sans s'états, catch & masquer les erreurs si le fichier n'est pas ici, mais qui est un peu sale, si ce n'est de la barbarie.
Ce qui serait génial c'est quelque chose comme ça :
@includeifexists('path.to.blade.template')
(pseudo-code, mais cette lame de commande n'existe pas)
Vous pourriez certainement étendre la Lame en ajoutant une fonction personnalisée pour masquer la
Je me demandais simplement pourquoi voudriez-vous d'inclure quelque chose qui n'existe pas ou ce qui pourrait être le scénario que vous essayez de résoudre?
J'ai des centaines de page, avec la même structure. Certains ont des partiels fichiers. - Je inclure seulement partielle pour les pages qui en ont besoin. Je pourrais utiliser deux modèles : l'un qui une directive d'inclusion pour les pages qui en ont besoin, et l'autre sans. Mais la logique est plus simple dans la première voie.
Avertissement : utilisez Uniquement l'décrit chose si vous avez absolument besoin. Deux inconvénients à ce sujet : tout d'abord, comme il n'est pas une approche standard, vos collègues vont se confondre dans la première place - ce qui n'est pas conforme avec KISS principes. Deuxièmement, je pense que ce sera un peu plus lentement pages, comme PHP, vérifier si un fichier existe pas à l'inclure (je suppose).
if
déclarations, mais je suppose que c'est seulement valable si vous avez beaucoup de ces cas à l'utiliser.Je me demandais simplement pourquoi voudriez-vous d'inclure quelque chose qui n'existe pas ou ce qui pourrait être le scénario que vous essayez de résoudre?
J'ai des centaines de page, avec la même structure. Certains ont des partiels fichiers. - Je inclure seulement partielle pour les pages qui en ont besoin. Je pourrais utiliser deux modèles : l'un qui une directive d'inclusion pour les pages qui en ont besoin, et l'autre sans. Mais la logique est plus simple dans la première voie.
Avertissement : utilisez Uniquement l'décrit chose si vous avez absolument besoin. Deux inconvénients à ce sujet : tout d'abord, comme il n'est pas une approche standard, vos collègues vont se confondre dans la première place - ce qui n'est pas conforme avec KISS principes. Deuxièmement, je pense que ce sera un peu plus lentement pages, comme PHP, vérifier si un fichier existe pas à l'inclure (je suppose).
OriginalL'auteur Cedric | 2015-08-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
View::exists()
pour vérifier si d'un point de vue existe ou pas.Ou vous pouvez étendre la lame et d'ajouter de nouveaux directive
Découvrez le document officiel ici: http://laravel.com/docs/5.1/blade#extending-blade
OriginalL'auteur yangqi
Eu un problème similaire. Il s'avère qu'il est un
@includeIf
lame directive à cet effet.Tout simplement
@includeIf('path.to.blade.template')
OriginalL'auteur BARNZ
Lorsqu'il est nécessaire à un Contrôleur (à partir de cette documentation):
Déterminer Si d'Un point de Vue Existe, Si vous avez besoin pour déterminer si une vue
il existe, vous pouvez utiliser la méthode exists après l'appel à l'aide de vue
sans arguments. Cette méthode renvoie true si le point de vue existe sur
disque:
use Illuminate\Support\Facades\View;
OriginalL'auteur user2075039