{"id":48616,"date":"2021-09-24T11:51:23","date_gmt":"2021-09-24T09:51:23","guid":{"rendered":"https:\/\/kinsta.com\/?p=100639"},"modified":"2023-08-22T12:03:00","modified_gmt":"2023-08-22T11:03:00","slug":"laravel-commentaires","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/","title":{"rendered":"Construire un syst\u00e8me de commentaires en direct Laravel"},"content":{"rendered":"<p>Pour instaurer la confiance dans votre communaut\u00e9 en ligne ou votre blog, un \u00e9l\u00e9ment crucial dont vous aurez besoin est un syst\u00e8me de commentaires en direct Laravel bien con\u00e7u.<\/p>\n<p>Cependant, il n&rsquo;est pas facile d&rsquo;y arriver du premier coup, \u00e0 moins que vous ne vous fiez \u00e0 des syst\u00e8mes de commentaires auto-h\u00e9berg\u00e9s comme <a href=\"https:\/\/kinsta.com\/fr\/blog\/plugins-commentaires-wordpress\/#disqus\">Disqus<\/a> ou Commento, qui pr\u00e9sentent chacun leur lot d&rsquo;inconv\u00e9nients. Ils poss\u00e8dent vos donn\u00e9es, offrent des conceptions et des personnalisations limit\u00e9es, et surtout, ils ne sont pas gratuits.<\/p>\n<p>Avec ces limitations, si l&rsquo;id\u00e9e de cr\u00e9er votre syst\u00e8me de commentaires en temps r\u00e9el &#8211; avec les avantages de contr\u00f4ler vos donn\u00e9es, de concevoir et de personnaliser l&rsquo;apparence pour l&rsquo;int\u00e9grer \u00e0 votre blog &#8211; vous s\u00e9duit, continuez de lire.<\/p>\n<p>Cet article vous apprendra \u00e0 d\u00e9velopper un syst\u00e8me de commentaires en temps r\u00e9el bien con\u00e7u et dot\u00e9 de diff\u00e9rentes fonctionnalit\u00e9s de commentaires. En suivant les principes de la construction d&rsquo;une <a href=\"https:\/\/masteringbackend.com\/posts\/build-a-real-time-chat-app-with-vue-3-socket-io-and-nodejs\" target=\"_blank\" rel=\"noopener noreferrer\">application de discussion en temps r\u00e9el avec Vue.js et Socket.io<\/a>, nous utiliserons Laravel, Pusher et React pour d\u00e9velopper le syst\u00e8me de commentaires en temps r\u00e9el.<\/p>\n<p>Plongeons dans l&rsquo;aventure !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Ce que nous allons construire<\/h2>\n<p>Nous allons construire un <a href=\"https:\/\/www.youtube.com\/watch?v=zrKgjbSn9F0\" target=\"_blank\" rel=\"noopener noreferrer\">syst\u00e8me de commentaires en temps r\u00e9el<\/a> qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n&rsquo;importe quel site web ou blog pour renforcer la confiance dans la communaut\u00e9.<\/p>\n\n<h2>Aper\u00e7u des blocs de construction : Laravel, Pusher et Vue<\/h2>\n<p>Avant de nous plonger dans le d\u00e9veloppement, parlons des technologies que nous utiliserons pour d\u00e9velopper notre syst\u00e8me de commentaires en temps r\u00e9el.<\/p>\n<h3>Laravel<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-laravel\/\">Laravel<\/a> est un framework PHP open-source orient\u00e9 MVC. Il est utilis\u00e9 pour construire des applications web PHP simples \u00e0 complexes, connues pour leur syntaxe \u00e9l\u00e9gante. <a href=\"https:\/\/kinsta.com\/fr\/blog\/tutoriels-laravel\/\">Apprendre ce qu&rsquo;est Laravel<\/a> est essentiel pour construire ce syst\u00e8me de commentaires.<\/p>\n<h3>Pusher<\/h3>\n<p><a href=\"https:\/\/pusher.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pusher<\/a> permet aux d\u00e9veloppeurs de cr\u00e9er des fonctionnalit\u00e9s \u00e9volutives en temps r\u00e9el. Cet article combinera <a href=\"https:\/\/laravel.com\/docs\/5.4\/broadcasting\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Echo<\/a> pour cr\u00e9er un \u00e9v\u00e9nement de diffusion en temps r\u00e9el vers le serveur Pusher et afficher le contenu sur l&rsquo;interface publique avec Vue.js.<\/p>\n<h3>Vue.js<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/vue-js\/\">Vue.js<\/a> est notre framework frontend de pr\u00e9dilection. Vue.js est un framework frontend JavaScript progressif connu pour son approche simple et facile \u00e0 apprendre du d\u00e9veloppement frontend. Nous allons utiliser Vue.js pour d\u00e9velopper notre syst\u00e8me de commentaires en temps r\u00e9el.<\/p>\n<h2>Construire le syst\u00e8me de commentaires<\/h2>\n<p>Si le syst\u00e8me de commentaires que nous avons d\u00e9crit ci-dessus correspond \u00e0 ce que vous voulez, passons \u00e0 sa construction.<\/p>\n<h3>1. Installer et configurer Laravel, Pusher et Echo<\/h3>\n<p>L&rsquo;installation et la configuration de Laravel, Echo et Pusher sont simples car Laravel a fait toutes les t\u00e2ches en arri\u00e8re-plan en installant et en configurant Laravel Echo pour qu&rsquo;il fonctionne parfaitement avec Pusher.<\/p>\n<p>Tout d&rsquo;abord, nous allons commencer par installer et configurer Laravel, notre <a href=\"https:\/\/kinsta.com\/fr\/blog\/frameworks-php\/\">framework PHP<\/a> backend. Vous pouvez r\u00e9cup\u00e9rer une nouvelle instance de Laravel avec cette commande, \u00e0 condition que vous ayez install\u00e9 le <a href=\"https:\/\/laravel.com\/docs\/8.x#the-laravel-installer\" target=\"_blank\" rel=\"noopener noreferrer\">CLI de Laravel<\/a> de mani\u00e8re globale :<\/p>\n<pre><code class=\"language-bash\">laravel new commenter<\/code><\/pre>\n<p>Votre nouvelle instance de Laravel sera install\u00e9e dans un r\u00e9pertoire appel\u00e9 commenter. Ouvrez le r\u00e9pertoire dans notre <a href=\"https:\/\/kinsta.com\/fr\/blog\/php-editeurs\/#1-visual-studio-code\" target=\"_blank\" rel=\"noopener noreferrer\">VSCode<\/a> et rendez-vous \u00e0 l&rsquo;int\u00e9rieur dans notre terminal :<\/p>\n<pre><code class=\"language-bash\">cd commenter\n\ncode .<\/code><\/pre>\n<p>Avant de d\u00e9marrer notre serveur de d\u00e9veloppement, installons et configurons certains paquets n\u00e9cessaires qui seront utilis\u00e9s pour le projet.<\/p>\n<p>Ex\u00e9cutez cette commande pour installer le SDK PHP de Pusher :<\/p>\n<pre><code class=\"language-bash\">composer require pusher\/pusher-php-server<\/code><\/pre>\n<p>Ex\u00e9cutez cette commande pour installer les paquets NPM n\u00e9cessaires pour le frontend Vue.js :<\/p>\n<pre><code class=\"language-bash\">npm install --save laravel-echo pusher-js<\/code><\/pre>\n<p>Ensuite, nous allons configurer l&rsquo;\u00e9cho Laravel et Pusher. Ouvrez votre fichier <strong>resources\/js\/bootstrap.js<\/strong> et collez les scripts suivants :<\/p>\n<pre><code class=\"language-javascript\">window._ = require(\"lodash\");\nwindow.axios = require(\"axios\");\nwindow.moment = require(\"moment\");\nwindow.axios.defaults.headers.common[\"X-Requested-With\"] = \"XMLHttpRequest\";\nwindow.axios.defaults.headers.post[\"Content-Type\"] =\n    \"application\/x-www-form-urlencoded\";\nwindow.axios.defaults.headers.common.crossDomain = true;\nwindow.axios.defaults.baseURL = \"\/api\";\nlet token = document.head.querySelector('meta[name=\"csrf-token\"]');\nif (token) {\n    window.axios.defaults.headers.common[\"X-CSRF-TOKEN\"] = token.content;\n} else {\n    console.error(\"CSRF token not found\");\n}\n\n\n\/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that Laravel broadcasts. Echo and event broadcasting\n * allows your team to build robust real-time web applications quickly.\n *\/\nimport Echo from \"laravel-echo\";\nwindow.Pusher = require(\"pusher-js\");\nwindow.Echo = new Echo({\n    broadcaster: \"pusher\",\n    key: process.env.MIX_PUSHER_APP_KEY,\n    cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n    forceTLS: true\n});<\/code><\/pre>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">Vous remarquerez dans le script ci-dessus que nous ne faisons que configurer l&rsquo;instance Axios avec nos configurations par d\u00e9faut. Ensuite, nous allons configurer Laravel Echo pour utiliser Pusher et ses configurations.<\/span><\/p>\n<h3>2. Configuration et migration de la base de donn\u00e9es<\/h3>\n<p>Ensuite, nous allons cr\u00e9er et configurer notre base de donn\u00e9es pour stocker les commentaires pour la persistance. Nous utiliserons SQLite, mais vous pouvez utiliser le client de base de donn\u00e9es de ton choix.<\/p>\n<p>Cr\u00e9ez un fichier <strong>database.sqlite<\/strong> dans le r\u00e9pertoire de la base de donn\u00e9es et mettez \u00e0 jour votre fichier <strong>.env<\/strong> comme suit :<\/p>\n<pre><code class=\"language-markdown\">DB_CONNECTION=sqlite\nDB_DATABASE=\/Users\/all\/paths\/to\/project\/commenter_be\/database\/database.sqlite\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_USERNAME=root\nDB_PASSWORD=<\/code><\/pre>\n<p>Ensuite, ex\u00e9cutez cette commande pour cr\u00e9er la migration Comment et la mettre \u00e0 jour avec les scripts suivants :<\/p>\n<pre><code class=\"language-bash\">php artisan make:migration create_comments_table<\/code><\/pre>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">Ouvrez le fichier <\/span><strong style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">database\/migrations\/xxxx_create_comments_table_xxxx.php<\/strong><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> et collez ce code :<\/span><\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\nclass CreateCommentsTable extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n        Schema::create('comments', function (Blueprint $table) {\n            $table-&gt;id();\n            $table-&gt;string('content');\n            $table-&gt;string('author');\n            $table-&gt;timestamps();\n        });\n    }\n    \/**\n     * Reverse the migrations.\n     *\n     * @return void\n     *\/\n    public function down()\n    {\n        Schema::dropIfExists('comments');\n    }\n}<\/code><\/pre>\n<p>Cela cr\u00e9era une nouvelle table de base de donn\u00e9es de commentaires et ajoutera des colonnes de contenu et d&rsquo;auteur.<\/p>\n<p>Enfin, pour cr\u00e9er la migration, ex\u00e9cutez cette commande :<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<h3>3. Cr\u00e9er des mod\u00e8les<\/h3>\n<p>Dans Laravel, les mod\u00e8les sont importants &#8211; ils sont le moyen le plus s\u00fbr de communiquer avec notre base de donn\u00e9es et de g\u00e9rer les donn\u00e9es.<\/p>\n<p>Pour cr\u00e9er un mod\u00e8le dans Laravel, nous allons ex\u00e9cuter la commande suivante :<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Comment<\/code><\/pre>\n<p>Ensuite, ouvrez le fichier <strong>app\/models\/Comment.php<\/strong> et collez le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Models;\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Model;\nclass Comment extends Model\n{\n    use HasFactory;\n    protected $fillable = ['content', 'author'];\n}<\/code><code class=\"language-php\">\n<\/code><\/pre>\n<pre class=\" language-php\">The $fillable array allows us to create and update the model in mass.<\/pre>\n<h3>4. Cr\u00e9ation de contr\u00f4leurs<\/h3>\n<p>Les contr\u00f4leurs sont cruciaux car ils abritent toute la logique, commerciale ou autre, de nos applications. Cr\u00e9ons-en un pour g\u00e9rer la logique des commentaires :<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller CommentController<\/code><\/pre>\n<p>Ensuite, ouvrez le fichier <strong>app\/Http\/Controllers\/CommentController.php<\/strong> et collez le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Http\\Controllers;\nuse App\\Models\\Comment;\nuse App\\Events\\CommentEvent;\nuse Illuminate\\Http\\Request;\n\nclass CommentController extends Controller\n{\n    \/\/\n    public function index()\n    {\n        return view('comments');\n    }\n    public function fetchComments()\n    {\n        $comments = Comment::all();\n        return response()-&gt;json($comments);\n    }\n    public function store(Request $request)\n    {\n        $comment = Comment::create($request-&gt;all());\n        event(new CommentEvent($comment));\n        return $comment;\n    }\n}<\/code><\/pre>\n<p>Le contr\u00f4leur poss\u00e8de trois m\u00e9thodes diff\u00e9rentes : renvoyer une vue des commentaires, r\u00e9cup\u00e9rer tous les commentaires et stocker un nouveau commentaire, respectivement. Plus important encore, nous d\u00e9clenchons un \u00e9v\u00e9nement chaque fois que nous stockons un nouveau commentaire, que le frontend \u00e9coutera pour mettre \u00e0 jour la page concern\u00e9e avec le nouveau commentaire en temps r\u00e9el \u00e0 l&rsquo;aide de Pusher et de Laravel Echo.<\/p>\n<h3>5. Cr\u00e9er des routes<\/h3>\n<p>Pour configurer correctement nos routes, nous devrons mettre \u00e0 jour de nombreux <a href=\"https:\/\/kinsta.com\/fr\/blog\/fichiers-wordpress\/\">fichiers<\/a>, alors commen\u00e7ons.<\/p>\n<p>Tout d&rsquo;abord, nous allons mettre \u00e0 jour le fichier <strong>api.php<\/strong> dans le r\u00e9pertoire routes. Ouvrez le fichier et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-php\">use App\\Http\\Controllers\\CommentController;\n\/\/...\n\nRoute::get('\/', [CommentController::class, 'index']);\nRoute::get('\/comments', [CommentController::class, 'fetchComments']);\nRoute::post('\/comments', [CommentController::class, 'store']);<\/code><\/pre>\n<p>Ensuite, ouvrez le fichier <strong>channels.php<\/strong> dans le m\u00eame r\u00e9pertoire et ajoutez le code suivant pour autoriser l&rsquo;\u00e9v\u00e9nement que nous avons d\u00e9clench\u00e9 plus t\u00f4t :<\/p>\n<pre><code class=\"language-php\">Broadcast::channel('comment', function ($user) {\n    return true;\n});<\/code><\/pre>\n<p>Ensuite, ouvrez le fichier <strong>web.php<\/strong> dans le m\u00eame r\u00e9pertoire et ajoutez le code suivant pour rediriger notre demande vers la page d&rsquo;accueil, o\u00f9 Vue.js la r\u00e9cup\u00e9rera :<\/p>\n<pre><code class=\"language-php\">use App\\Http\\Controllers\\CommentController;\n\/\/...\n\nRoute::get('\/', [CommentController::class, 'index']);<\/code><\/pre>\n<p>Enfin, nous allons cr\u00e9er un nouveau fichier blade dans le r\u00e9pertoire <strong>resources\/views<\/strong> appel\u00e9 <strong>comments.blade.php<\/strong> et ajouter le code suivant :<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\" \/&gt;\n    &lt;title&gt;Commenter&lt;\/title&gt;\n    &lt;meta name=\"csrf-token\" content=\"{{ csrf_token() }}\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\"&gt;\n\n    &lt;link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bulma\/0.7.1\/css\/bulma.min.css\" \/&gt;\n    &lt;style&gt;\n        .container {\n            margin: 0 auto;\n            position: relative;\n            width: unset;\n        }\n        #app {\n            width: 60%;\n            margin: 4rem auto;\n        }\n        .question-wrapper {\n            text-align: center;\n        }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\n\n    &lt;div id=\"app\"&gt;\n        &lt;div class=\"container\"&gt;\n            &lt;div class=\"question-wrapper\"&gt;\n                &lt;h5 class=\"is-size-2\" style=\"color: #220052;\"&gt;\n                    What do you think about &lt;span style=\"color: #47b784;\"&gt;Dogs&lt;\/span&gt;?&lt;\/h5&gt;\n                &lt;br&gt;\n                &lt;a href=\"#Form\" class=\"button is-medium has-shadow has-text-white\" style=\"background-color: #47b784\"&gt;Comment&lt;\/a&gt;\n            &lt;\/div&gt;\n            &lt;br&gt;&lt;br&gt;\n            &lt;comments&gt;&lt;\/comments&gt;\n            &lt;new-comment&gt;&lt;\/new-comment&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n    &lt;script async src=\"{{mix('js\/app.js')}}\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Le script ajoute un titre d&rsquo;article et un composant Vue pour afficher et ajouter de nouveaux commentaires au titre d&rsquo;article cr\u00e9\u00e9 ci-dessus.<\/p>\n<p>Ex\u00e9cutez les commandes suivantes pour tester si vous obtenez tout correctement :<\/p>\n<pre><code class=\"language-bash\">npm run watch\n\nphp artisan serve<\/code><\/pre>\n<p>Si cette page vous est pr\u00e9sent\u00e9e, vous \u00eates pr\u00eat \u00e0 passer \u00e0 l&rsquo;\u00e9tape suivante de cet article.<\/p>\n<figure id=\"attachment_101484\" aria-describedby=\"caption-attachment-101484\" style=\"width: 1200px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-101484\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/Commenting-System-Laravel.png\" alt=\"Live commenting system in Laravel\" width=\"1200\" height=\"463\"><figcaption id=\"caption-attachment-101484\" class=\"wp-caption-text\">Syst\u00e8me de commentaires en direct dans Laravel<\/figcaption><\/figure>\n<h3>6. Configuration de Vue (Frontend)<\/h3>\n<p>Nous allons cr\u00e9er et configurer notre instance Vue pour cr\u00e9er et afficher tous les commentaires faits sur cet <a href=\"https:\/\/kinsta.com\/fr\/blog\/obtenir-id-article-wordpress\/\">article<\/a>.<\/p>\n<p>Nous allons commencer par configurer notre stockage Vuex. Cr\u00e9ez les fichiers suivants dans le r\u00e9pertoire resource\/js\/store.<\/p>\n<h4>Cr\u00e9er l&rsquo;\u00e9tat des commentaires<\/h4>\n<p>Cr\u00e9ez actions.js et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-javascript\">let actions = {\n    ADD_COMMENT({ commit }, comment) {\n        return new Promise((resolve, reject) =&gt; {\n            axios\n                .post(`\/comments`, comment)\n                .then(response =&gt; {\n                    resolve(response);\n                })\n                .catch(err =&gt; {\n                    reject(err);\n                });\n        });\n    },\n    GET_COMMENTS({ commit }) {\n        axios\n            .get(\"\/comments\")\n            .then(res =&gt; {\n                {\n                    commit(\"GET_COMMENTS\", res.data);\n                }\n            })\n            .catch(err =&gt; {\n                console.log(err);\n            });\n    }\n};\nexport default actions;<\/code><\/pre>\n<p>Le fichier Action fait un appel au point de terminaison des commentaires dans le backend.<\/p>\n<p>Ensuite, cr\u00e9ez un fichier getters.js et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-javascript\">let getters = {\n    comments: state =&gt; {\n        return state.comments;\n    }\n};\nexport default getters;<\/code><\/pre>\n<p>Le fichier Getter est utilis\u00e9 pour r\u00e9cup\u00e9rer tous les commentaires dans l&rsquo;\u00e9tat.<\/p>\n<p>Cr\u00e9ez le fichier mutations.js et collez-le dans le code suivant :<\/p>\n<pre><code class=\"language-javascript\">let mutations = {\n    GET_COMMENTS(state, comments) {\n        state.comments = comments;\n    },\n    ADD_COMMENT(state, comment) {\n        state.comments = [...state.comments, comment];\n    }\n};\nexport default mutations;<\/code><\/pre>\n<p>Ensuite, cr\u00e9ez un fichier state.js et collez-le dans le code suivant :<\/p>\n<pre><code class=\"language-javascript\">let state = {\n    comments: []\n};\nexport default state;<\/code><\/pre>\n<p>Enfin, nous ajouterons tout au fichier index.js export\u00e9 vers l&rsquo;instance Vue, cr\u00e9ez un fichier index.js et ajoutez ce qui suit :<\/p>\n<pre><code class=\"language-javascript\">import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport actions from \".\/actions\";\nimport mutations from \".\/mutations\";\nimport getters from \".\/getters\";\nimport state from \".\/state\";\nVue.use(Vuex);\nexport default new Vuex.Store({\n    state,\n    mutations,\n    getters,\n    actions\n});<\/code><\/pre>\n<p><span style=\"color: #0c022f;font-family: 'Brandon Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem;font-weight: 900\">Cr\u00e9er des composants<\/span><\/p>\n<p>Enfin, nous allons cr\u00e9er nos composants de commentaires pour afficher et ajouter de nouveaux commentaires. Commen\u00e7ons par cr\u00e9er le composant de commentaire unique.<\/p>\n<p>Cr\u00e9ez un r\u00e9pertoire dans le r\u00e9pertoire <strong>resource\/js<\/strong> appel\u00e9 components, ajoutez le fichier <strong>comment.vue<\/strong> et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-javascript\">&lt;template&gt;\n  &lt;li class=\"comment-wrapper animate slideInLeft\"&gt;\n    &lt;div class=\"profile\"&gt;\n    &lt;\/div&gt;\n    &lt;div class=\"msg has-shadow\"&gt;\n      &lt;div class=\"msg-body\"&gt;\n        &lt;p class=\"name\"&gt;\n          {{ comment.author }} &lt;span class=\"date\"&gt;{{ posted_at }}&lt;\/span&gt;\n        &lt;\/p&gt;\n        &lt;p class=\"content\"&gt;{{ comment.content }}&lt;\/p&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/li&gt;\n&lt;\/template&gt;\n    \n    &lt;script&gt;\nexport default {\n  name: \"Comment\",\n  props: [\"comment\"],\n  computed: {\n    posted_at() {\n      return moment(this.comment.created_at).format(\"MMMM Do YYYY\");\n    },\n\n  },\n};\n&lt;\/script&gt;\n    \n    &lt;style lang=\"scss\" scoped&gt;\n.comment-wrapper {\n  list-style: none;\n  text-align: left;\n  overflow: hidden;\n  margin-bottom: 2em;\n  padding: 0.4em;\n  .profile {\n    width: 80px;\n    float: left;\n  }\n  .msg-body {\n    padding: 0.8em;\n    color: #666;\n    line-height: 1.5;\n  }\n  .msg {\n    width: 86%;\n    float: left;\n    background-color: #fff;\n    border-radius: 0 5px 5px 5px;\n    position: relative;\n    &::after {\n      content: \" \";\n      position: absolute;\n      left: -13px;\n      top: 0;\n      border: 14px solid transparent;\n      border-top-color: #fff;\n    }\n  }\n  .date {\n    float: right;\n  }\n  .name {\n    margin: 0;\n    color: #999;\n    font-weight: 700;\n    font-size: 0.8em;\n  }\n  p:last-child {\n    margin-top: 0.6em;\n    margin-bottom: 0;\n  }\n}\n&lt;\/style&gt;<\/code><\/pre>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">Enfin, cr\u00e9ez un fichier appel\u00e9 <\/span><strong style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">NewComment.vue<\/strong><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> et ajoutez le code suivant :<\/span><\/p>\n<pre><code class=\"language-javscript\">&lt;template&gt;\n  &lt;div class=\"container\"&gt;\n    &lt;ul class=\"comment-list\"&gt;\n      &lt;Comment\n        :key=\"comment.id\"\n        v-for=\"comment in comments\"\n        :comment=\"comment\"\n      &gt;&lt;\/Comment&gt;\n    &lt;\/ul&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n    \n    &lt;script&gt;\nimport { mapGetters } from \"vuex\";\nimport Comment from \".\/Comment\";\nexport default {\n  name: \"Comments\",\n  components: { Comment },\n  mounted() {\n    this.$store.dispatch(\"GET_COMMENTS\");\n    this.listen();\n  },\n  methods: {\n    listen() {\n      Echo.channel(\"comment\").listen(\"comment\", (e) =&gt; {\n        console.log(e);\n        this.$store.commit(\"ADD_COMMENT\", e);\n      });\n    },\n  },\n  computed: {\n    ...mapGetters([\"comments\"]),\n  },\n};\n&lt;\/script&gt;\n    \n    &lt;style scoped&gt;\n.comment-list {\n  padding: 1em 0;\n  margin-bottom: 15px;\n}\n&lt;\/style&gt;<\/code><\/pre>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">Maintenant, ouvrez le fichier <\/span><strong style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\">app.js<\/strong><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"> et ajoutez le code suivant pour enregistrer les composants Vue que vous avez cr\u00e9\u00e9s plus t\u00f4t :<\/span><\/p>\n<pre><code class=\"language-javascript\">\/\/ resource\/js\/app.js\n\nrequire(\".\/bootstrap\");\nwindow.Vue = require(\"vue\");\nimport store from \".\/store\/index\";\n\nVue.component(\"comment\", require(\".\/components\/Comment\"));\nVue.component(\"comments\", require(\".\/components\/Comments\"));\nVue.component(\"new-comment\", require(\".\/components\/NewComment\"));\n\nconst app = new Vue({\n    el: \"#app\",\n    store\n});<\/code><\/pre>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"><\/span><\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Et c&rsquo;est tout ! Vous venez d&rsquo;apprendre comment construire un syst\u00e8me de commentaires en direct pour votre site \u00e0 l&rsquo;aide de Laravel.<\/p>\n<p>Nous avons discut\u00e9 des avantages de la cr\u00e9ation et de la gestion d&rsquo;un syst\u00e8me de commentaires dans votre qu\u00eate pour instaurer la confiance dans votre communaut\u00e9 ou votre blog. Nous avons \u00e9galement explor\u00e9 comment d\u00e9velopper un syst\u00e8me de commentaires en temps r\u00e9el bien con\u00e7u \u00e0 partir de z\u00e9ro, en utilisant diff\u00e9rentes fonctionnalit\u00e9s de commentaires.<\/p>\n<p>Vous pouvez cloner le code source de ce projet dans <a href=\"https:\/\/github.com\/Kaperskyguru\/commenta\" target=\"_blank\" rel=\"noopener noreferrer\">ce repo Github<\/a>.<\/p>\n<p>Que pensez-vous du syst\u00e8me de commentaires en direct Laravel que nous avons construit ensemble ? D\u00eetes-le-nous dans les commentaires !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour instaurer la confiance dans votre communaut\u00e9 en ligne ou votre blog, un \u00e9l\u00e9ment crucial dont vous aurez besoin est un syst\u00e8me de commentaires en direct &#8230;<\/p>\n","protected":false},"author":193,"featured_media":48625,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[433,341],"topic":[998,986],"class_list":["post-48616","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-web-development","topic-frameworks-php","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Construire un syst\u00e8me de commentaires en ligne Laravel<\/title>\n<meta name=\"description\" content=\"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n&#039;importe quel site web ou blog pour renforcer la confiance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Construire un syst\u00e8me de commentaires en direct Laravel\" \/>\n<meta property=\"og:description\" content=\"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n&#039;importe quel site web ou blog pour renforcer la confiance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-24T09:51:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-22T11:03:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Solomon Eseme\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n&#039;importe quel site web ou blog pour renforcer la confiance.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Construire un syst\u00e8me de commentaires en direct Laravel\",\"datePublished\":\"2021-09-24T09:51:23+00:00\",\"dateModified\":\"2023-08-22T11:03:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\"},\"wordCount\":1631,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg\",\"keywords\":[\"laravel\",\"web development\"],\"articleSection\":[\"D\u00e9veloppement WordPress\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\",\"name\":\"Construire un syst\u00e8me de commentaires en ligne Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg\",\"datePublished\":\"2021-09-24T09:51:23+00:00\",\"dateModified\":\"2023-08-22T11:03:00+00:00\",\"description\":\"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n'importe quel site web ou blog pour renforcer la confiance.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg\",\"width\":1460,\"height\":730,\"caption\":\"Construire un syst\u00e8me de commentaires en ligne Laravel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Construire un syst\u00e8me de commentaires en direct Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"caption\":\"Solomon Eseme\"},\"description\":\"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me\",\"sameAs\":[\"https:\/\/masteringbackend.com\",\"https:\/\/linkedin.com\/in\/solomoneseme\",\"https:\/\/x.com\/kaperskyguru\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Construire un syst\u00e8me de commentaires en ligne Laravel","description":"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n'importe quel site web ou blog pour renforcer la confiance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/","og_locale":"fr_FR","og_type":"article","og_title":"Construire un syst\u00e8me de commentaires en direct Laravel","og_description":"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n'importe quel site web ou blog pour renforcer la confiance.","og_url":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2021-09-24T09:51:23+00:00","article_modified_time":"2023-08-22T11:03:00+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg","type":"image\/jpeg"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n'importe quel site web ou blog pour renforcer la confiance.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg","twitter_creator":"@kaperskyguru","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Solomon Eseme","Dur\u00e9e de lecture estim\u00e9e":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Construire un syst\u00e8me de commentaires en direct Laravel","datePublished":"2021-09-24T09:51:23+00:00","dateModified":"2023-08-22T11:03:00+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/"},"wordCount":1631,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg","keywords":["laravel","web development"],"articleSection":["D\u00e9veloppement WordPress"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/","url":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/","name":"Construire un syst\u00e8me de commentaires en ligne Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg","datePublished":"2021-09-24T09:51:23+00:00","dateModified":"2023-08-22T11:03:00+00:00","description":"Apprenez \u00e0 utiliser Laravel pour cr\u00e9er un syst\u00e8me de commentaires en temps r\u00e9el qui peut \u00eatre int\u00e9gr\u00e9 \u00e0 n'importe quel site web ou blog pour renforcer la confiance.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/09\/laravel-comments.jpg","width":1460,"height":730,"caption":"Construire un syst\u00e8me de commentaires en ligne Laravel"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-commentaires\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Construire un syst\u00e8me de commentaires en direct Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","caption":"Solomon Eseme"},"description":"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me","sameAs":["https:\/\/masteringbackend.com","https:\/\/linkedin.com\/in\/solomoneseme","https:\/\/x.com\/kaperskyguru"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=48616"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48616\/revisions"}],"predecessor-version":[{"id":48707,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48616\/revisions\/48707"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/translations\/it"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/translations\/de"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/translations\/pt"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48616\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/48625"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=48616"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=48616"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=48616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}