- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Laravel 5.4 编写一个简单的 CMS。
我正在寻找一个类似 WordPress 的子菜单导航管理。我以多层方式对页面进行编码,以便可以拥有多个级别的页面(子级等)。在 MySql 中,我有一个“页面”表,其中包含各种信息,包括parent_id。
我正在创建一个“导航生成器”,它允许内容编写者通过选择页面并将其保存到数据库来创建多个页面侧边栏子导航。我希望他们能够保存菜单,并将它们包含在他们想要的任何页面上。
问题来了。最初我想让它变得非常简单 - 只需创建一个 SubMenu 模型,将所有 pageId 存储在 json 中(以保留子页面结构):
Submenu Model
id | name[string] | page_ids[json]
但是,我发现这种方法存在很多问题。例如,如果我们在一个页面上有 5 个 10 页的菜单,那么在解析 sumbenu 模型后,我需要从数据库中单独获取每个页面(另外还需要更多一些,因为我也需要获取 parent 的 slugs,以便构建 URL)。这看起来确实不太高效。
我认为更聪明的方法是在用户选择页面后获取整个页面集合,并以某种方式将其保存在数据库中。我不知道如何解决这个问题。
我查看了Laravel-menu插件,但我认为它不能实现我的目标
任何关于如何解决这个问题的想法将不胜感激。必须有一些关于如何做到这一点的最佳实践,但我找不到任何资源。
最佳答案
在这里发布我解决这个问题的方法。我决定建立一个单独的 Subnav 模型,其中包含上面建议的所有页面的 ID。然后,为了防止太多 mysql 调用,我只缓存结果,每次更新子导航时,我都会刷新缓存。
关于php - 如何在 Laravel 5 中高效地创建和存储导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42433892/
我是一名优秀的程序员,十分优秀!