J'ai une question "organisation de code" SVP. Ce qui fait le mieux organisé d'après vous (MVC, SOLID…).
Avec un CMS que je suis en train de développer avec Laravel 5, j'ai un système d'édition d'articles, et un système d'édition de catégories (relation Many to Many).
Les éditions d'articles se font avec le Controller "ArticleController".
Les éditions de catégories se font avec le Controller "CategoryController".
Et avec mon CMS, on peut aussi ajouter des catégories depuis le formulaire d'édition d'articles en Ajax. J'ai donc créé une méthode spécifique à ceci.
Vous pensez que c'est quoi le mieux SVP ? d'où mettre cette méthode spécifique ?
-Dans le Controller "ArticleController" ? (car on est à la base dans une édition d'article).
-Dans le Controller "CategoryController" ? (car malgré qu'on est à la base dans une édition d'article, c'est une catégorie qu'on ajoute).
-Ou dans le Model "Category", et appeller cette méthode spécifique via une méthode intermédiaire que je metterai dans le Controller "ArticleController" ? (Ce que je trouve le + logique, mais ça fait une function en + que les 2 premières solutions).
Voici ma méthode spécifique que je ne sais pas trop où mettre :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php /** * AVEC AJAX - Ajouter une catégorie depuis editions d'articles * * @param Request $request */ public function addCategoryWithAjax(Request $request) { if ($request->ajax()) { $name = preg_replace('/\s+/', ' ', $request->get('new_category_post')); // si plusieurs espaces cosécutifs -> 1 espace à la place if (mb_strlen($name) > 1 && mb_strlen($name) < 31) { $verif = Categoryarticle::where('name', $name)->first(); if ($verif) { echo 'Erreur : Le nom de cette catégorie existe déjà, et doit être unique.'; } else { $slug = Str::slug($name); $verif2 = Categoryarticle::where('slug', $slug)->first(); if ($verif2) { echo 'Erreur : Ce Slug est déjà pris par une autre catégorie.'; } else { $category_article = new Categoryarticle(); $category_article->name = $name; $category_article->slug = $slug; $category_article->save(); $id = $category_article->id; echo '<input type="checkbox" name="category[]" checked value="'.$id.'" id="cat-'.$id.'"><label for="cat-'.$id.'">'.$name.'</label><br>'; } } } else { echo 'Erreur : Le nom de la catégorie doit être compris entre 2 et 30 caractères.'; } } } |