Doctrine orm 使用zf2的模板系统?

Doctrine orm 使用zf2的模板系统?,doctrine-orm,zend-framework2,php,Doctrine Orm,Zend Framework2,Php,我们计划用zf2和orm创建一个CMS 实际上,我们关心的是cms模板 我们希望我们的系统能够与几个模板一起工作,并通过管理员在主题之间轻松地进行更改 对于最终用户和开发人员来说,创建新模板应该很容易 我们需要一个关于如何构建模板系统的建议: 有一个核心模块和许多子模块,它们有自己的phtml 所以在哪里存储1 phtml和在哪里存储2 phtml 有什么建议或建议吗 谢谢我鼓励大家看一看,它是我迄今为止见过的最好的模板引擎:)学习细枝语法确实需要一些时间,但如果你看看你得到了什么,它是非常值得

我们计划用zf2和orm创建一个CMS

实际上,我们关心的是cms模板 我们希望我们的系统能够与几个模板一起工作,并通过管理员在主题之间轻松地进行更改

对于最终用户和开发人员来说,创建新模板应该很容易

我们需要一个关于如何构建模板系统的建议:

有一个核心模块和许多子模块,它们有自己的phtml 所以在哪里存储1 phtml和在哪里存储2 phtml

有什么建议或建议吗
谢谢

我鼓励大家看一看,它是我迄今为止见过的最好的模板引擎:)学习细枝语法确实需要一些时间,但如果你看看你得到了什么,它是非常值得的:)

我还不能写评论,所以我写这个作为一个answare。 希望这有帮助。相信我,细枝才是前进的方向。Joust查看他的文档,了解更多关于如何使用它的详细信息

编辑:

您试图解决的问题与模板引擎无关。您可以使用任何模板引擎来实现这一点。如果您愿意,甚至可以使用普通PHP来实现

我构建了一个web应用程序,用户可以在其中注册,获得自己的子域,并在那里创建自己的网页。更改主题、编辑文本、添加页面。简单的CMS功能

最简单的方法是使用themes文件夹,您可以在其中存储主题,如下所示:

themes/
    - themeBlue
        - css/
        - images/
        - js/
        - html or views/

    - themeRose
        ...
现在这是你放置所有主题的地方,每个主题都有自己的包含图像、css、js文件的文件夹

然后你会有用户,每个用户都可以选择和改变主题。 这些信息将存储在数据库中。您需要存储Jack正在使用MeBlue的用户。你想怎么做就怎么做。您可以将此事件放入users表中,就像user_主题列一样

现在,当有人访问该站点时,您首先查询数据库,查看该用户或web创建者使用的主题。然后从当前主题文件夹加载所有这些文件。并使用存储在数据库中的数据填充html文件,就像在任何其他CMS中一样

这是最简单的实现。例如,您可以在数据库中存储css和html文件:)

希望这能回答你的问题。
幸运的是,我几乎疯狂地构建我的系统:)我最终编写了自己的PHP MVC框架,以实现我的目标。

我鼓励您看看,这是迄今为止我见过的最好的模板引擎:)学习细枝语法确实需要一些时间,但如果您看看您得到了什么,这是非常值得的:)

我还不能写评论,所以我写这个作为一个answare。 希望这有帮助。相信我,细枝才是前进的方向。Joust查看他的文档,了解更多关于如何使用它的详细信息

编辑:

您试图解决的问题与模板引擎无关。您可以使用任何模板引擎来实现这一点。如果您愿意,甚至可以使用普通PHP来实现

我构建了一个web应用程序,用户可以在其中注册,获得自己的子域,并在那里创建自己的网页。更改主题、编辑文本、添加页面。简单的CMS功能

最简单的方法是使用themes文件夹,您可以在其中存储主题,如下所示:

themes/
    - themeBlue
        - css/
        - images/
        - js/
        - html or views/

    - themeRose
        ...
现在这是你放置所有主题的地方,每个主题都有自己的包含图像、css、js文件的文件夹

然后你会有用户,每个用户都可以选择和改变主题。 这些信息将存储在数据库中。您需要存储Jack正在使用MeBlue的用户。你想怎么做就怎么做。您可以将此事件放入users表中,就像user_主题列一样

现在,当有人访问该站点时,您首先查询数据库,查看该用户或web创建者使用的主题。然后从当前主题文件夹加载所有这些文件。并使用存储在数据库中的数据填充html文件,就像在任何其他CMS中一样

这是最简单的实现。例如,您可以在数据库中存储css和html文件:)

希望这能回答你的问题。
幸运的是,我几乎疯狂地构建我的系统:)我最终编写了自己的PHP MVC框架,以完成我想要的。

如果您激活application.config.PHP中具有相同视图和布局(相同文件夹结构和文件名)的另一个模块它的视图脚本和布局将在核心模块后加载时自动使用

因此,您可以简单地将application.config.php动态化,以加载只包含视图文件夹的活动模板模块。这将是一个简单而有效的解决方案,没有任何其他库


此外,您还可以使用资产管理器(如assetic)在(模板)模块内提供图像、css等。(看一看zf2 assetic模块,我基于assetic编写了自己的assetize模块以满足我的需要…

如果您在application.config.php中激活另一个具有相同视图和布局(相同文件夹结构和文件名)的模块,则在核心模块之后加载时将自动使用它的视图脚本和布局

因此,您可以简单地将application.config.php动态化,以加载只包含视图文件夹的活动模板模块。这将是一个简单而有效的解决方案,没有任何其他库

此外,您还可以使用资产管理器(如assetic)在(模板)模块内提供图像、css等。(看一看zf2 assetic模块,我基于assetic编写了自己的assetize模块,以满足我的需要…)

我在我的应用程序->Module.php onBootstrap中这样做

    $ss = $serviceManager->get('application_settings_service');
    $settings = $ss->loadSettings();

    $serviceManager->get('translator');
    $templatePathResolver = $serviceManager->get('Zend\View\Resolver\TemplatePathStack'); 
    $templatePathResolver->setPaths(array(__DIR__ . '/view/'.$settings['theme'])); // here is your skin name 

    $viewModel = $application->getMvcEvent()->getViewModel();
    $viewModel->themeurl = 'theme/'.$settings['theme'].'/';
在这种情况下,我的视图文件夹中有这种结构

    view/
       default/
          application/
          error/
          layout/
          zfcuser/
       red/
          application/
          error/
          layout/
          zfcuser/
上面的$viewmodel在public_html文件夹/theme/red/中为themeurl的布局注入了一个变量,所有资源都为red

访问layout.phtml->themeurl;?>在viewscript布局中()->themeurl;?>

我仍在制定我的动态视图。现在我得了B