Dans le répertoire racine de mon Laravel 4 application, j'ai un dossierthemes
. Dans le dossierthemes
, j'aidefault
etAzure
. Comment puis-je accéder à la vue à partir de ce dossierthemes/default
sur un itinéraire spécifique
Route::get('{slug}', function($slug) {
// make view from themes/default here
});
-app
--themes
---défaut
---Azur
Je dois charger les vues depuis le dossier localhost/laravel/app/themes/default
. S'il vous plaît expliquer cela.
Ici, je n’accède pas à mon projet à partir du dossier public
. Au lieu de cela, j'accède à partir de la racine du projet lui-même.
J'ai vu une discussion de forum sur Using alternative path for views
here . Mais je suis un peu confus à ce sujet. La solution discutée était,
Vous ajouteriez un location
comme,
View::addLocation('/path/to/your/views');
Ajoutez ensuite namespace
pour le thème,
View::addNamespace('theme', '/path/to/themes/views');
Puis le rendre,
return View::make('theme::view.name');
Quelle sera la valeur pour /path/to/
?
Puis-je utiliser le même projet dans différents systèmes d'exploitation sans changer de chemin?
Oui, nous pouvons le faire en utilisant ce qui suit,
Mettez ce qui suit dans app/start/global.php
View::addLocation(app('path').'/themes/default');
View::addNamespace('theme', app('path').'/themes/default');
Puis appelez vue comme la manière par défaut,
return View::make('page');
Cela rendra le fichier page.php
ou page.blade.php
à partir du dossier project_directory/app/themes/defualt
.
Ceci est tout à fait possible avec Laravel 4. Ce que vous voulez, c'est en fait l'environnement de visualisation. Vous pouvez enregistrer des astuces d’espace de nommage ou simplement des emplacements supplémentaires que le Finder utilisera également en cascade. Jetez un coup d'oeil ici
Vous ajouteriez un emplacement comme ceci:
View::addLocation('/path/to/your/views');
Cela pourrait être plus facile si vous les gérez en espace de noms, juste au cas où vous auriez des noms de fichiers en conflit car votre chemin est ajouté au tableau de sorte qu'il ne sera mis en cascade que jusqu'à ce qu'il trouve une correspondance appropriée. Les vues namespaced sont chargées avec la syntaxe double-colon.
View::addNamespace('theme', '/path/to/themes/views');
return View::make('theme::view.name');
Vous pouvez également donner à addNamespace un tableau de chemins de vue au lieu d'un seul chemin.
J'ai développé un package de thèmes pour laravel 5 avec des fonctionnalités telles que:
Essayez-le ici: igaster/laravel-theme
\View::addLocation($directory);
fonctionne bien, mais la nouvelle façon de le faire consiste à utiliser loadViewsFrom($path, $namespace)
(disponible chez tout fournisseur de service).