如何将规则添加到Zend的URL映射和撰写多MVC路径?(How to add a rule to

2019-10-18 18:41发布

这是因为我想开发一个网络平台,在同一项目中的多个应用程序。


在任何MVC的Web应用程序,我们应该有这样的默认URL模式:

domain / controller / action / parameters

1:在Zend的,我能做些什么(在哪些文件)来改变这个模式添加application的名称之前controller的名字吗?

预期结果: domain / application / controller / action / parameters

2:我怎样才能实现这个新的URL块的后果而言,我会分开MVC为每个应用程序,保持了共享资源在不同的目录? 可我在Zend中出现哪些变化autoloader

预期结果:

/public_html/
/public_html/platform
/public_html/platform/apps

/public_html/platform/apps/base (user interface container)

/public_html/platform/apps/crm
/public_html/platform/apps/crm/model
/public_html/platform/apps/crm/view
/public_html/platform/apps/crm/control
/public_html/platform/apps/crm/public
/public_html/platform/apps/crm/public/css (and etc.)

/public_html/platform/apps/erp
/public_html/platform/apps/erp/model
/public_html/platform/apps/erp/view
/public_html/platform/apps/erp/control
/public_html/platform/apps/erp/public
/public_html/platform/apps/erp/public/js (and etc.)

/public_html/platform/sys
/public_html/platform/sys/core
/public_html/platform/sys/cfg

/public_html/platform/libs/
/public_html/platform/libs/zend
/public_html/platform/libs/template_it
/public_html/platform/libs/custom

Answer 1:

我认为这是具有实际不同ZF2应用程序一样简单,每个人都在自己的文件夹,并在同一水平线上,你把所有的共享结构(由Zend公司,第三方库,等来了)一个“供应商”文件夹中。

然后供应商的文件夹里面,我会给自己的共享代码,包括所有的模块必须通过应用一种以上可使用另一个文件夹,所以你的代码是你自己的图书馆。

由于您的应用程序实际上是在域/应用程序,每个人都有其自己的配置,这是非常简单的有domain/application/controller/action/parameters路线:您刚才创建的正常controller/action/parameters路线,因为实际应用驻留在domain/application/和不必须的路由器去关心它。

正如您所注意到的另一个问题是自动装载机。 你只需要更新您的内部共享模块引用application.config.php为您的应用程序的每个人

return array(
    'modules' => array( //....
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php'
        ),
        'config_cache_enabled' => false,
        'cache_dir'            => 'data/cache',
        'module_paths' => array(
            './module',
            '../vendor',//reference to your library modules
        ),
    ),
  //...
);

当然,如果犯规直接驻留内部模块vendor/module ,但像vendor/libraryname/module ,你要看看你的自动加载系统(作曲自动加载或其他)和类或命名空间添加到相应的地图。



文章来源: How to add a rule to the Zend URL mapping and compose multiple MVC paths?