laravel blade - Quelles sont les meilleures pratiques et les meilleurs endroits pour aider 4 larvar ou les fonctions de base?





variable template (5)


La méthode helpers.php de Laravel consiste à l'ajouter à vos "fichiers" dans composer.json ( https://github.com/laravel/framework/blob/master/composer.json ):

"autoload": {
    "classmap": [
        ...
    ],
    "files": [
        "app/libraries/helpers.php"
    ],
},

Ce que je fais est de créer de petites classes (quelques méthodes par classe, une ligne par méthode, tout à partir de quelque chose et DRY, c'est mon but),

class ExtendedCarbon extends Carbon\Carbon {

    public function formatDDMMAAAA($date)
    {
        /// format and return
    }

}

enregistrez-les dans l'application / les bibliothèques et ajoutez-les à composer.json:

"autoload": {
    "classmap": [
        ...
        "app/libraries",
        ...
    ],
},

Exécuter

composer dump

Et puis utilisez-les partout où vous en avez besoin

$formatted = (new ExtendedCarbon)->formatDDMMAAAA($date);

Regardez cette vidéo sur le refactoring: http://www.youtube.com/watch?v=DC-pQPq0acs

Au fait, je suis sûr que ce n'était qu'un exemple, mais vous n'avez pas besoin d'aide pour formater les dates, car toutes les dates dans Laravel sont des instances de Carbon ( https://github.com/briannesbitt/Carbon ) et il a beaucoup de méthodes pour formater la date et l'heure.

Donc, j'essaie de comprendre le meilleur endroit pour mettre une fonction globale dans laravel 4. Par exemple: mise en forme de la date. Je ne pense pas que faire une façade en vaut la peine, les façades sont trop modulaires. J'ai lu des articles sur la création d'un dossier de bibliothèque et le stockage des classes, mais cela semble aussi beaucoup pour une fonction simple. De même, un outil comme celui-ci ne devrait-il pas être disponible dans les modèles de lames?

Quelles sont les meilleures pratiques pour quelque chose comme ça? Et comment puis-je le rendre disponible pour les modèles de lame?




Ma façon de faire est de créer un nouveau dossier dans le répertoire /app à la racine de votre projet Laravel 4. Ensuite, ajoutez ce dossier au premier tableau du fichier /app/start/global.php comme /app/start/global.php :

<?php

ClassLoader::addDirectories(array(

app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/classes', // This line is the one I've added.

));

Tant que la structure du dossier dans le nouveau dossier /app/classes suit votre convention d'espaces de noms. Laravel 4 va automatiquement charger toutes les classes / fichiers dans ce dossier. De cette façon, il n'est pas nécessaire de creuser dans des fichiers compositeurs ou d'exécuter une commande composer.

Je ne sais pas si c'est la meilleure pratique, mais cela fonctionne certainement.

Si vous avez créé un fichier simple appelé /app/classes/Helpers/Helper.php comme ceci:

<?php namespace Helpers;

class Helper {

    public static function helloWorld()
    {
        return 'Hello World';
    }
}

Tout ce que vous devez faire est d'appeler Helpers\Helper::helloWorld();

Vous pouvez également alias cette classe d'assistance dans votre fichier /app/config/app.php . Ajoutez juste quelque chose comme ceci à la fin du tableau d' aliases :

'Helper'          => 'Helpers\Helper'






La façon laide, paresseuse et terrible: À la fin de bootstrap/start.php , ajoutez un include('tools.php') et placez votre fonction dans ce nouveau fichier.

La manière propre: Créer une bibliothèque. De cette façon, il ne sera chargé automatiquement que lorsque vous l'utiliserez réellement.

  • Créer un dossier de libraries dossier de votre app
  • Créez votre fichier de bibliothèque, créez une classe et ajoutez des fonctions statiques
  • Option 1 : Editez start/global.php pour ajouter app_path().'/libraries' ClassLoader::addDirectories( app_path().'/libraries' à ClassLoader::addDirectories( array.
  • Option 2 : Éditez composer.json pour ajouter "app/libraries" au tableau de autoload . Exécuter le composer dump-autoload
  • Appelez votre classe et les fonctions statiques de vos vues.

À propos de vos options, cité du fichier global.php

En plus d'utiliser Composer, vous pouvez utiliser le chargeur de classe Laravel pour charger vos contrôleurs et modèles. C'est utile pour garder toutes vos classes dans l'espace de noms "global" sans mise à jour de Composer.

Vous pouvez combiner les deux options, où le chargeur de classe Laravel recherchera automatiquement les classes dans les répertoires enregistrés ( Option 1 , plus facile) et Composer conservera l'enregistrement de toutes les classes mais seulement après la mise à jour ( Option 2 , peut améliorer les performances).




La réponse est simple.

Taylor Otwell a décidé de supprimer Form et Html des composants de base car c'est quelque chose qui devrait être maintenu par la communauté via des packages tels que https://github.com/LaravelCollective/html . Peu d'autres composants ont été retirés pour garder le cadre mince. Tout le monde n'utilise pas Form et HTML, je préfère personnellement le HTML pur.

Mon avis

Une de mes opinions à ce sujet est la question de la performance. Si vous vérifiez les classes Form et HTML, vous verrez comment les formulaires sont réellement générés, ce qui implique de créer des formes simples qui ne se produisent pas lorsque vous utilisez votre HTML simple dans votre lame.

Les composants Laravel Form & HTML ont également des limitations en termes de personnalisation complète, mais lorsque vous utilisez du HTML simple dans votre lame, vous pouvez personnaliser librement le formulaire de la manière que vous voulez et tout développeur frontal peut le comprendre sans apprendre Laravel ou Blade.

Je pense effectivement que Laravel Form & HTML sont pour les développeurs paresseux, mon avis :)

Vous pouvez vous passer complètement des générateurs Form & Html ou utiliser les packages disponibles







laravel laravel-4 blade