当前位置: 代码迷 >> .NET Framework >> Zend Framework User Guide - Modules
  详细解决方案

Zend Framework User Guide - Modules

热度:181   发布时间:2016-05-01 23:39:09.0
Zend Framework User Guide -- Modules

 Modules 章节【原文地址:http://framework.zend.com/manual/2.1/en/user-guide/modules.html】

      我们所有的代码都将放在专辑(Album)的moudle中,包括controller, models, forms,views和configuration. 我们会根据要求对应用程序的module稍做改动。

      让我们从目录开始吧。

     创建专辑(Album)module

       在module下面创建一个专辑(Album)目录,其它module的文件按照下面所示的子目录呈列:

zf2-tutorial/    /module        /Album            /config            /src                /Album                    /Controller                    /Form                    /Model            /view                /album                    /album

       就如你所看到的,在专辑(Album)module下面为不同的文件分出了很多子目录。在src/Album目录下面的PHP文件中包含的类,可以根据需要拥有很多命名空间,不过这些命名空间都包含在Album命名空间下。View目录页包含一个叫Album的子文件夹,用来放置view脚本。

       为了加载和配置一个module,Zend Framework 2 有一个 ModuleManger. 它将会在moudle目录(module/Album)下寻找包含一个叫Album\Module类的Module.php文件。换言之,这个module类的命名空间就是module的名字,即module的目录名。

      在zf2-tutorial/module/Album下创建一个Module.php文件:

     

<?phpnamespace Album;class Module{    public function getAutoloaderConfig()    {        return array(            'Zend\Loader\ClassMapAutoloader' => array(                __DIR__ . '/autoload_classmap.php',            ),            'Zend\Loader\StandardAutoloader' => array(                'namespaces' => array(                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,                ),            ),        );    }    public function getConfig()    {        return include __DIR__ . '/config/module.config.php';    }}

         ModuleManager将会自动调用方法getAutoLoaderConfig()和getConfig()。

Autoloading files

这一节我还不太了解用法,暂时保存创建时默认的值就好,所以这段我也先跳过不翻译了。

配置(Configuration)

        在注册完autoloader后,让我们来快速看下Album\Module中的getConfig()方法,这个方法仅仅是用来加载config\module.config.php文件的。

        在zf2-tutorial/module/Album/config下创建一个叫做module.config.php的文件:

<?phpreturn array(    'controllers' => array(        'invokables' => array(            'Album\Controller\Album' => 'Album\Controller\AlbumController',        ),    ),    'view_manager' => array(        'template_path_stack' => array(            'album' => __DIR__ . '/../view',        ),    ),);

       这个配置信息将会有ServiceManager传递给相应的组件。我们最初需要提供两个部分:controllers 和 view_manager. controllers部分需要列出moudle下面的所有controller。这里我们需要一个AlbumController.引用自Album\Controller\Album. 这个controller的名字必须是所有module下唯一的,所以我们在它前面添加了module名字作为前缀。

       在view_manager部分,我们给TemplatePathStack赋值为view的目录,这将帮助它为Album module找到存放在view/目录下的视图脚本。

告知应用程序我们新的module

        现在我们需要告诉ModuleManager这个新的module的存在。这一工作将由skeleton应用程序提供的config/application.config.php文件来完成。修改这个文件的modules部分来包含Album module, 修改后的文件如下所示:

(修改的部分添加了注释且高亮)

<?phpreturn array(    'modules' => array(        'Application',        'Album',                  // <-- Add this line    ),    'module_listener_options' => array(        'config_glob_paths'    => array(            'config/autoload/{,*.}{global,local}.php',        ),        'module_paths' => array(            './module',            './vendor',        ),    ),);

        就如你所见,我们把Album module添加在了Applicaiton moudle的后面。

        现在我们已经创建好了一个module, 可以往里面添加我们的代码了。

       


  相关解决方案