我必须使用Zend Framework开发CMS,并且我使用我的boostrap中为我的后端定义的默认命名空间:
autoloaderNamespaces[] = "Application_"
现在我想开发前端,但我不知道该怎么做,因为我可以从/public/
目录访问我的后端。
然后我想为我的前端使用不同的布局,而不是我用于后端访问的布局。所以我发现this post但我不知道是否必须更改/添加(以及如何更改)我的后端模块,或者我是否必须创建第二个模块,我将用于我的前端
我的文件树是这样的:
因此,如果我创建一个frontend
模块,我是否应该在frontend
目录旁边创建一个application
目录?
编辑:我在应用程序目录旁边创建了2个目录pub
和frontend
。在pub/index.php
中,我使用application/configs/application.ini
文件的APPLICATION_FRONT_ENV
文件实例化了引导程序:
[frontprod : production]
bootstrap.path = APPLICATION_FRONT_PATH "/bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_FRONT_PATH "/controllers"
autoloaderNamespaces[] = "Frontend_"
resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_FRONT_PATH "/layouts/scripts"
[frontdev: frontprod]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
以及frontend/bootstrap.php
我在application
目录中加载的模型:
public function _initAutoloader(){
$baseAutoload = new Zend_Loader_Autoloader_Resource(array(
'namespace' => 'Application',
'basePath' => realpath(dirname(__FILE__).'/../application')
)
);
}
似乎工作正常=) 谢谢!
答案 0 :(得分:1)
在Zend Framework中,您可以在模块中组织您的应用程序,这非常适合您的需求。遗憾的是,该文档没有充分强调这一概念的重要性,以及您应该如何从第一天开始实施它。
模块允许您在同一模块文件夹下重新组合与此模块相关的所有内容,这样就可以在逻辑组中隔离应用程序的“部分”。 在你的情况下,它将是“后退”和“前面”,但你也可以有一个“论坛”模块或让我们说一个“商店”模块。
从网址的角度来看,模块化结构的默认路由是example.com/module/controller/action,但是using hostname routes你也可以将www.example.com指向你的“前端”模块和admin.example.com指向你的后端。
看一下poor documentation section about modules,不要惊慌,如果你在“默认”模块中移动当前的控制器,视图和模型,就不必重命名所有内容。
还有另一种替代方案可以很好地适用于后端/前端逻辑,但如果你想将代码拆分为更合理的部分(论坛,博客,商店......)则不行。您只需在'application'文件夹旁边创建第二个应用程序文件夹(您可以命名为'frontend'),然后创建第二个公共目录(如果您使用相同的文件,则可以将您的资产文件夹符号链接),以及另一个名称空间。
为了能够在您的前端代码中自动加载“Application_”类,只需在前端引导程序中添加并配置Module Autoloader即可。代码非常简单:
//in your frontend/Bootstrap.php
public function _initAutoloader(){
new Zend_Loader_Autoloader_Resource( array(
'namespace' => 'Application_',
'path' => realpath(dirname(__FILE__).'/../application'
)
);
}
对于application.ini
配置文件,我建议您创建一个部分[frontprod : production]
部分,而不是复制它,您可以覆盖后端设置(并为您的本地设置匹配的[frontdev: frontprod]
设置)。
我希望这有帮助。关于这里介绍的所有主题有很多话要说,你应该首先看看这个,然后用你可能遇到的问题的更具体的问题评论这个答案,我会扩展答案。