"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment utiliser le moteur de modèles Laravel Blade avec un projet PHP Pure Vanilla ?

Comment utiliser le moteur de modèles Laravel Blade avec un projet PHP Pure Vanilla ?

Publié le 2024-07-31
Parcourir:296

How to Use Laravel Blade Templating Engine with a Pure Vanilla PHP Project?

Aujourd'hui, je me suis mis au défi d'implémenter une approche Laravel MVC (Model, View, Controller) en utilisant du PHP pure vanilla. Pour résoudre ce problème, j'ai utilisé le moteur de création de modèles standard Laravel Blade pour la partie affichage du projet, mais sans installer Laravel puisque mon projet est purement PHP vanille. Voici comment j’ai réalisé cette intégration ;

J'ai commencé par installer un package appelé Blade par JensSegers à l'aide de la commande Composer suivante :

composer require jenssegers/blade

Ce package permet au moteur de création de modèles Blade d'être utilisé comme un package autonome, le rendant compatible avec n'importe quel projet PHP, pas seulement Laravel.

Ensuite, j'ai exécuté la commande suivante pour mettre à jour la dépendance illumination/view du package vers la version 11.7.0, car le package ne fonctionne pas correctement avec les versions inférieures à 11.7.0 :

composer require illuminate/view:11.7.0

Ensuite, j'ai créé une base de données appelée « pdotest » avec une table appelée « post », qui comporte les colonnes « nom » et « corps ». J'ai rempli cette table avec des données (« ceci est le nom de la publication de la base de données affichée à l'aide du moteur de modèle Blade », « ceci est le corps de la publication de la base de données affichée à l'aide du moteur de modèle Blade ») respectivement et je m'y suis connecté en créant le fichier Database.php à la racine de mon projet et mettez le code suivant :

host;dbname=$this->database",$this->username,$this->password);

        // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // $conn = $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


        return $conn;

    } catch (PDOException $e) {

        echo "Connection failed: " . $e->getMessage();

    }
}

}


?>

Ensuite, j'ai créé un répertoire appelé "Modèles" pour toutes les manipulations de base de données. Dans ce répertoire, j'ai créé un fichier nommé Post.php pour gérer les opérations sur la table "post". Dans ce fichier, j'ai défini une méthode appelée post pour récupérer une publication par son identifiant, comme indiqué ci-dessous :

conn = (new Database)->connect(); // Access directly (less secure)
}


public function getPost($id){

    $stmt= "SELECT * FROM $this->table WHERE id = :id";

    $stmt =  $this->conn->prepare($stmt);

    $stmt->bindParam(':id', $id, PDO::PARAM_INT);

    $stmt->execute();

    return $result = $stmt->fetch();

}


}


?>

Ensuite, j'ai créé index.php pour agir comme un routeur, connectant mon contrôleur, ma vue et mon modèle. À l'intérieur, j'ai importé toutes mes vues et chemins de cache, que je vais créer pour placer mes vues Blade et mes fichiers de cache. Ces chemins ont ensuite été transmis à la classe Blade, fournie avec le package Blade que nous avons installé au début. J'ai ensuite transmis cette instance Blade à la classe PostController, que je vais créer, et j'ai appelé la méthode post de cette classe pour obtenir une publication par son ID à l'avenir.

post();

?>

Ensuite, j'ai créé un répertoire "controllers" à la racine de mon projet. À l'intérieur, j'ai reçu la variable Blade d'index.php (le routeur), appelée la méthode getPost du modèle Post pour obtenir une publication par son ID, et j'ai transmis cette publication à une vue Blade appelée « page d'accueil ».

blade = $blade; } poste de fonction publique(){ $post = (nouveau message) -> getPost (1); echo $this->blade->render('homepage', ['post' => $post]); } } ?>
blade = $blade;
    }

  public function post(){

    $post = (new Post)->getPost(1);

    echo $this->blade->render('homepage', ['post' => $post]);


  }

}




?>
Ensuite, j'ai créé un répertoire appelé "views" et un fichier nommé homepage.blade.php à la racine du projet. Dans ce fichier, j'ai simplement affiché le nom de la publication transmise par PostController, comme indiqué ci-dessous :


{{$post['name']}}

blade = $blade;
    }

  public function post(){

    $post = (new Post)->getPost(1);

    echo $this->blade->render('homepage', ['post' => $post]);


  }

}




?>
Enfin, j'ai créé un répertoire "cache" à la racine de mon projet pour stocker les fichiers de cache Blade, ce qui contribue à améliorer les performances de mon projet.

Maintenant, lorsque vous visitez http://localhost/laravel-blade-without-laravel/index.php dans votre navigateur, vous verrez le nom de la publication affiché sous la forme "ceci est le nom de la publication de la base de données affichée à l'aide du modèle Blade". moteur."

Merci d'avoir suivi cet article sur l'utilisation du moteur de modèles Laravel Blade dans un projet PHP purement vanille. J'espère que cela vous aidera dans votre parcours de développement. Je m'appelle Waziri Ally Amiri, un développeur Web de Moshi, en Tanzanie. Je me spécialise dans le travail avec Laravel et j'aime aider les autres à démarrer avec ce framework puissant. N'hésitez pas à nous contacter si vous avez des questions ou si vous avez besoin d'aide supplémentaire.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/waziridev/how-to-use-laravel-blade-templating-engine-with-a-pure-vanilla-php-project-5h1a?1 En cas de violation , veuillez contacter study_golang @163.comdelete
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3