【问题标题】:Zend Framework 2 CMS file structureZend Framework 2 CMS 文件结构
【发布时间】:2013-09-27 05:32:02
【问题描述】:

我正在尝试基于 Zend Framework 2 构建一个简单的内容管理系统。问题是我不知道文件夹结构应该如何。

到目前为止,我必须考虑解决方案:

A.构建一个通用的“管理”模块,该模块具有多个控制器,例如登录控制器、页面控制器、帖子控制器,每个控制器都有自己的操作。

B.为每个组件构建一个模块,例如:具有 adminController 和 frontendController 的 Pages Module。

我确信上述解决方案都不是正确的解决方案,但找不到任何可靠的解决方案或书籍来提供一个。我看过 gotCMS 但注意到这个,即在数据库中保存所有数据,如布局视图,这不是一个解决方案。

【问题讨论】:

    标签: content-management-system zend-framework2 directory-structure


    【解决方案1】:

    虽然这是第一个 alpha 解决方案,但我在 ensemble 上工作,我更愿意将其称为内容管理框架

    Ensemble 的管理员在 ZfcAdmin 上运行。因此,您可以放入一个博客模块,该模块在 ZfcAdmin 的路由下只有一个管理控制器。但您也可以使用导航页面结构管理页面(如文本)。所有内容部分(文本、博客等)都是独立的模块。

    所以我建议你看看sample application,你也可以看看我们的blog,它只是与合奏挂钩。我知道目前文档稀缺,但如果我们达到某种 beta 稳定性,我们将更多地关注文档。

    “您的系统 B”的主要好处是您可以在需要时插入模块。它们都提供了自己的配置、控制器、模型和视图。从开发人员的角度来看,安装它们很容易(在 composer 中加载,在应用程序配置中启用),您可以轻松地用自己的视图覆盖任何视图。

    TL;DR:选择结构 B 并查看 Ensemble。

    /edit:看到您对 Sam 的回答发表评论:是的,您必须这样做。在 ensemble 中,您指定 route config for the frontend 并将您的管理路由创建为 child routes of ZfcAdmin。对于前端和后端,您都有separate controllers

    【讨论】:

    • 我按照 github 上的说明,克隆了 Ensable SampleApplication 运行 php composer.phar install 但我得到“进程”git clone“git://github.com/doctrine/DoctrineORMModule.git” D:\xampp\htdocs\SampleApplication\vendor\doctrine/doctrine-orm-module" && cd /D "D:\xampp\htdocs\SampleApplication\vendor\doctrine/doctrine-orm-module" && git remote add composer "git ://github.com/doctrine/DoctrineORMModule.git" && git fetch composer" 超过了 300 秒的超时时间。
    • 这是我访问应用程序时出现的错误消息“致命错误:未捕获的异常 'RuntimeException' 并带有消息'无法加载 ZF2。运行 php composer.phar install 或定义 ZF2_PATH 环境变量。'在 D:\xampp\htdocs\SampleApplication\init_autoloader.php:32 堆栈跟踪:#0 D:\xampp\htdocs\SampleApplication\public\index.php(9): include() #1 {main} 在 D: \xampp\htdocs\SampleApplication\init_autoloader.php 在第 32 行"
    • 好的,再次尝试所有依赖项似乎都已加载,但我收到以下错误:“注意:未定义的索引:D:\xampp\htdocs\SampleApplication2\vendor\ensemble\kernel\ 中的 cmf_routes第 152 行的 config\services.config.php 可捕获的致命错误:传递给 Ensemble\Kernel\Parser\Route::setModuleRoutes() 的参数 1 必须是数组类型,给定 null,在 D:\xampp\htdocs\SampleApplication2 中调用\vendor\ensemble\kernel\config\services.config.php 在第 155 行,并在 D:\xampp\htdocs\SampleApplication2\vendor\ensemble\kernel\src\Kernel\Parser\Route.php 第 62 行定义”跨度>
    • “Ensemble\Kernel”中似乎有一些东西,如果我从 application.config.php 中删除它,管理面板就可以工作了。
    • @TudorRavoiu 该示例已经有一段时间没有更新了。我的错,让我看看,我会尽快在这里发布更新
    【解决方案2】:

    在构建新事物方面没有对错之分。就我个人而言,我会选择 B。我什至不会像你那样命名控制器(我会将它们分解得更多,比如 NewsAddController、NewsEditController、NewsDetailsController 等......)。然后我会有一个 AdminModule,它只会显示一个带有特定“AdminNavigation”的新布局。这个 AdminNavigation 可以通过其他模块填充(即 NewsModule 会通过 module.config.php 将它自己的管理路由注入到 AdminNavigation)

    【讨论】:

    • 所以如果我选择 B,那么在 module.config.php 配置中的每个模块中,我将不得不为每个后端或前端功能构建路由。 NewsDetailsCONtroller 路由到主 NewsEditController 路由到管理员?
    • 部分。 Edit 和 Details 都路由到 NewsModule。改变的是布局。
    猜你喜欢
    • 2013-04-12
    • 2013-11-01
    • 2010-12-27
    • 2012-09-19
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多