发布时间 : 星期五 文章zend framework 入门学习更新完毕开始阅读8195c09151e79b89680226ee
为了建立我们的应用程序,我们将开始github 上可用ZendSkeletonApplication。用浏览器转到https://github.com/zendframework/ZendSkeletonApplication
然后,单击\按钮。将下载
zendframework-ZendSkeletonApplication-zfrelease-2.0.0beta5-2-gc2c7315.zip文件。 把这个文件解压到更目录,你把所有的虚拟主机,并所得的目录重新命名 ZF2教程。
把这个文件解压到更目录中并重新命名,再把你的vhosts文件添加刚才解压的项目。 4.1虚拟主机
现在,您需要创建一个Apache虚拟主机的应用程序,编辑hosts文件,用http://myobject.localhost,从你的myobject/public/index.php索引。
确保,NameVirtualHost定义,并设置为“*80”或类似的,然后沿着这些定义了一个虚拟主机 例如:
ServerName myobject.localhost
DocumentRoot E:\\wamp\\www\\myobject\\public SetEnv APPLICATION_ENV \
请确保您更新您的/ etc / hosts或C:\\ WINDOWS\\ SYSTEM32 \\drivers\\etc\\ hosts文件,使myobject.localhost被映射到127.0.0.1。该网站可以被访问使用http://myobject.localhost。接着重新启动您的Web服务器就可以了。
您现在有一个工作的程序框架,我们可以开始细节的添加我们的应用程序。
6.1设置Album模块
创建一个目录,叫做Album.。模块具有以下子目录下:
正如你所看到的相册模块有不同类型的文件,我们将有独立的目录。在PHP类的Album命名空间内的文件,其中包含namespace src/Album目录中,这样我们就可以有多个我们的
模块的命名空间,我们需要它。
为了Zend Framework 2 的ModuleManager加载和配置模块。模块目录的根(module/Album)Module.php,并期望找到一个类在Album\\Module内。也就是说,一个给定模块中的类的命名空间模块的名称,是该模块的目录名。
创建Module.php相簿中的模块:创建一个名为Module.php下zf2-tutorial/module/Album:
namespace 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’; } }
getAutoloaderConfig()和getconfig的()将自动为我们ModuleManager调用。
6.1.1自动加载文件
我们的getAutoloaderConfig()方法返回一个数组,它是ZF2的AutoloaderFactory兼容。我们配置它。我们添加一个类映射文件ClassmapAutoloader(标准的自动加载),还添加这个模块的命名空间到StandardAutoloader。标准的自动加载需要一个命名空间和路径,在哪里可以找到文件该命名空间。这是PSR-0标准,因此类直接映射到文件每PSR-0的规则。
我们并不需要通过classmap加载文件,所以我们提供了一个空数组的classmap自动加载。创建一个文件名为autoload_classmap.php下zf2-tutorial/module/Album:
return array();
这是一个空数组,为ablun命名空间中的类自动加载时,它就会返回到StandardAutoloader。 6.2配置
经注册的自动加载,让我们快速浏览一下了getconfig()方法在Album\\Module。这 法只加载在config/ module.config.php中的文件。
创建一个文件称为module.config.php下zf2-tutorial/module/Album/config:
return 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。控制器部分提供了所有控制器列表。我们都需要一个控制器,AlbumController,我们将Album\\Controller\\Album作为参考。控制器键必须是唯一的,它与我们的模块名称,是所有模块前缀。
TemplatePathStack配置我们认为是view_manager部分。这将允许它来寻找我们的view/
directory中存储的ablum的视图脚本。
6.3通知应用程序对我们的新模块。
我们现在需要告诉ModuleManager,这个新的模块存在。这是在应用程序的配置提供的文件
config/application.config.php,它是由框架应用程序。更新这个文件,它的模块部分包含的album,
以及以后项目扩展的栏目。
7路由和控制器
我们将建立一个非常简单的库存系统,以显示我们的ablun。主页会列出我们收集 ,让我们可以添加,编辑和删除专辑。因此,需要以下页面:
Home Add new album Edit album 这将显示专辑列表,并提供编辑和删除的链接。此外,一个连接到启用 新专辑。 本页面提供了一个表单,添加一个新的专辑。 本页面提供了一个表单编辑的专辑。 这个页面将确认我们要删除的相册,然后将其删除。 Delete album 我们建立文件之前,重要的是如何在框架页面里组织。每一个动作被称为应用程序,作用单位是页面和行动分为模块内的控制器。
我们有四个页面,适用于专辑,我们将它们分组在一个单一的控制器AlbumController内 我们的相册模块的四个动作。四个行动将是:
通过使用在模块定义的路由module.config.php文件来映射一个URL到一个特定的操作。我们将增加我们的ablum行动的路由。这是更新的模块配置文件用新的代码高亮显示。
return array( );
'controllers' => array(
'invokables' => array( 'Album\\Controller\\Album' => 'Album\\Controller\\AlbumController',
), ),
//下面一节是新的,应该被添加到您的文件 'router' => array( ),
'routes' => array( 'album' => array( 'type' => 'segment', ),
'options' => array( ),
'route' => '/album[/:action][/:id]', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]+', ),
'defaults' => array( 'controller' => 'Album\\Controller\\Album', ),
'action' => 'index',
'view_manager' => array( 'template_path_stack' => array( ),
'album' => __DIR__ . '/../view'
),
我们现在已经准备好建立我们的控制器。在Zend Framework2,控制器是一个类通常被称为 控制器。注意{Controller name}必需以大写字母开始。 Controller.php这样的控制器内的目录模块。在本例中,module/Album/src/Album/Controller。每一个行动是一个公共的方法,在{动作名称}操作的控制器类,被命名为。在这种情况下{action name}应该从一个。
小写字母。
创建控制器类AlbumController.php的zf2-tutorials/module/Album/src/Album/Controller:
namespace Album\\Controller;
use Zend\\Mvc\\Controller\\AbstractActionController; use Zend\\View\\Model\\ViewModel;
class AlbumController extends AbstractActionController {
public function indexAction() { }
public function addAction() { }
public function editAction() { }
public function deleteAction() { } }