Je suis nouveau à Laravel 4 et je suis totalement confus à propos de ses modèles. J'essaie de créer un menu de navigation axé sur la base de données pour mon projet et tout ce que je sais, c'est que je dois créer un modèle pour interagir avec la base de données (basée sur mes connaissances à partir de CodeDigniter). J'ai étudié beaucoup et je suis fatigué de ne pas pouvoir aller de l'avant, c'est le code que je suis arrivé jusqu'à présent:
et ceci est ma table de base de données de navigation que je utiliserai pour ce modèle: p>
p> p>
3 Réponses :
Laravel ne créera pas de menus pour vous, mais cela vous aidera à écrire un code de nettoyage pour le faire.
Utilisez votre modèle pour interroger votre table et créer les éléments de menu: P>
<ul>
{{ $items }}
</ul>
C'est un bon départ, je reçois maintenant tous les titres comme une sortie, comment puis-je organiser mes principales catégories et sous-menus (sous-menus, ceux qui ont un parent_id) à l'intérieur de la production, peut-être et multidimensionnelles ou Quelque chose de mieux que ce que Laravel soutient de la boîte?
Et à propos de l'utilisation de colis, j'essaie maintenant de comprendre et d'écrire mon propre code avec Laravel et sortez de l'obscurité avant d'utiliser des packages.
Édité pour répondre un peu plus.
Ainsi, après avoir fait beaucoup plus de recherche et de lire de différentes sources, c'est ce que je suis venu avec et ça marche bien:
/app/models/navigation.php strong> p> <ul>
@foreach($items as $item)
<li>{{ $item->title }}
@foreach($item['children'] as $child)
<li>{{ $child->title }}</li>
@endforeach
</li>
@endforeach
</ul>
Cela m'a sauvé des heures d'heures de construction, de tester, de retirer, de réécrire le code. Merci :)
Cela a l'air très soigné. Question, qu'est-ce que cette pièce fait: implore ('.', Array_fill (0, 100, «enfants») code>?
Non, vous pouvez continuer à aller pour des niveaux illimités
Cela pourrait fonctionner pour N-Niveaux, mais c'est une affaire très coûteuse .. Surtout quand vous allez récupérer de temps en temps ... Veuillez vérifier le modèle Modèle imbriqué B> pour SQL. Checkout Le lien suivant: Modèle de jeu imbriqué pour SQL et les suivants Forfait Laravel ... Parfait pour toute structure de type multiniveau ou d'arborescence Mise en œuvre de Laravel Lazychaser imbriquée
Je suis nouveau à Laravel et je construis une sorte de la même structure que vous le faisiez, uniquement avec quelques classes supplémentaires pour permettre de contrôler les autorisations de l'utilisateur (l'utilisateur dispose de nombreuses autorisations, qui ont de nombreux itinéraires, qui sont liés aux mentionnements de menu. ). Ce que je trouve étrange, c'est que la documentation Laravel dit que l'inverse d'une relation hasone est une appartenance. Dans ce cas, une appartenance ne fonctionne pas. Vous devez utiliser HASMANY pour trouver les enfants d'une option de menu. Bon de trouver quelqu'un confirmant cela. ;)
Pouvons-nous stocker la route dans la base de données sans écrire de code?
Cela ne fonctionne pas dans L5. Il affichant un enfant deux fois. Comme un enfant et aussi bien que séparé.
Parfait, je viens de le combiner avec mon code existant et de travailler parfaitement. Merci mon pote. Je cherche exactement ce genre de solution.
Génial, c'est éloquent basé sur le menu. array_fill () comme niveau de nidification. Pour la raison de la performance, j'ai recommandé de définir le niveau de nidification 3 au lieu de 100. Arbre de fonction statique public ($ niveau = 3) {retour statique :: avec (implorez (". ', $ de niveau," enfants' " ))) -> où («parent_id ',' = ', null) -> obtenir (); } code>
@antoniputra a changé à 4 au cas où quelqu'un avait besoin un peu plus.
@HosseinjabBari 4 son ok au lieu de 100
Cette réponse m'a beaucoup aidé le problème, c'est que je souhaite créer une hiérarchie de dossiers comme dans Windows, est-il possible d'obtenir tous les enfants dans un arbre sans avoir à faire une boucle de Foreach pour tous les niveaux?.
Pour ceux qui ressemblent à cet article sur cet article près de 4 ans plus tard, je dirais que la nouvelle meilleure solution est tout dans cette vidéo: P>
https://laracasts.com/series/laravel-5-Fundamentals / épisodes / 25 p>
Composer compositeurs strong> p>
https://laravel.com/docs/5.4/views#view-composeurs p>
Voir les compositeurs sont des rappels ou des méthodes de classe appelées quand un
la vue est rendue. Si vous avez des données que vous souhaitez être liées à une vue
Chaque fois que la vue est rendue, un compositeur de vue peut vous aider à organiser
cette logique dans un seul endroit. p>
blockQuote>
Qu'a tu fais d'autre? Ceci est juste un modèle et cela fonctionnera bien pour interroger et ajouter des enregistrements à votre table, mais votre menu ne fonctionnera pas avec seulement ce code.
Devrais-je simplement aller de l'avant et créer une fonction appelée exemple "MainMenu" et interroger ma base de données, récupérez les résultats, mettez-les dans un tableau multidimensionnel? Ou à Laravel, il y a des moyens plus facilement de faire cela?
Vous n'avez pas à utiliser un modèle pour cela. C'est une recommandation, pas une règle. Vous pouvez utiliser Fluent (Builder Query) et laisser renvoyer une matrice ou Eben Utiliser des requêtes SQL RAW. En outre, vous pouvez utiliser des états bruts avec couramment / éloquent.
Mais je souhaite utiliser les normes MVC pour mon projet au cas où d'autres développeurs rejoignent mon projet dans un proche avenir.
Dans ce cas, continuez et faites-le.