gpt4 book ai didi

zend-framework - Zend Framework + Doctrine1.2 项目结构,模块较多

转载 作者:行者123 更新时间:2023-12-04 06:09:37 25 4
gpt4 key购买 nike

应用加上 ZendFramework + Doctrine 1.2 的实现已经有一段时间了,但现在他们有了第一次使用更多模块的经验。我要求每个人都可以看到具有特定布局的默认模块和具有不同布局的管理模块。

到目前为止,在我的应用程序中,我一直使用以下结构:

/app
/application
/acls
/configs
/controllers
/forms
/layouts
/models --> models by doctrine
/generated --> base models by doctrine
/plugins
/views
/Bootstrap.php
/data
/doctrine
/data
/migrations
/schema
/schema.yml
/doctrine.php
/library
/public
/tests

所以我的问题是:我的应用程序的结构应该如何做所需要的?

我尝试使用 zend 工具,看看我创建了什么样的结构命令:
zf create module admin

开课后的类(class)
zf create project app

我注意到create命令模块我创建了一个文件夹 modulesapplication .
进入 modules已创建 admin并在其中创建了 controllers , modelsviews .

所以除了分离意味着zf Controller 和 View 正确之外,还有模型。
但是我的学说一方面创造了所有的模型! :D

如何使用由学说为每个模块创建的模板?

那么如何为管理模块分配新的布局呢?

对于派对客人,您建议我离开当前使用的设施或将其全部以表格 default 的形式移动。 ?

对不起,如果我提出了很多问题,也许太多了,但我真的很困惑!

谢谢

最佳答案

经过详尽的文档后,我找到了正确的项目结构

/app
/application
/acls
/configs
application.ini
/layouts
/scripts
admin.phtml
default.phtml
/models --> models by doctrine
/generated --> base models by doctrine
/modules
/admin
/controllers
/forms
/view
/default
/controllers
/forms
/view
/plugins
/Bootstrap.php
/data
/doctrine
/data
/migrations
/schema
/schema.yml
/doctrine.php
/library
/public
/tests

要根据您所在的模块查看不同的布局,我使用了以下插件:
class Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
/**
* Called before an action is dispatched by Zend_Controller_Dispatcher.
*
* @param Zend_Controller_Request_Abstract $request
* @return void
*/
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$layout = Zend_Layout::getMvcInstance();
$module = $request->getModuleName();
switch ($module) {
case 'default':
$layout->setLayout('default');
break;
case 'admin':
$layout->setLayout('admin');
break;
default:
$layout->setLayout('default');
break;
}
}
}

进入 Bootstrap.php 文件
 /**
* @return Zend_Application_Module_Autoloader
*/
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array('namespace' => '', 'basePath' => APPLICATION_PATH));
$autoloader->addResourceType('plugin', 'plugins', 'Plugin');
return $autoloader;
}

进入 application.ini 文件
resources.frontController.plugins.auth = Plugin_Layout
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

上面描述的插件根据使用的模块将在“layouts/scripts”中设置名为module.phtml的布局。

如何在模块中自动加载表单

将下面两行添加到您的 application.ini 文件中
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

为每个模块创建一个 boostrap 文件。该文件名为 Bootstrap.php,应放在模块目录的根目录下,类名应为 {module name}_Boostrap。这个引导文件将导致 zend 框架自动将新的表单目录添加到自动加载器。
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap {}

将表单类添加到/forms 目录。登录表单的文件名为 Login.php,类名为 {module name}_Form_Login
class Admin_Form_Login extends Zend_Form

从同一模块内的 Controller 文件中调用您的表单
$form = new Admin_Form_Login();

简单有效! ;)

关于zend-framework - Zend Framework + Doctrine1.2 项目结构,模块较多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7928771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com