加载中...

4.3 添加控制器的Action


下面在NewsController控制器中添加几个 Action:

public function indexAction(){
    echo "NewsController indexAction";
    exit;
}

public function listAction(){
    echo "NewsController listAction";
    exit;
}

public function addAction(){
    echo "NewsController addAction";
    exit;
}

public function editAction(){
    echo "NewsController editAction";
    exit;
}

public function deleteAction(){
    echo "NewsController deleteAction";
    exit;
}

注意:ZF2控制器的action方法都必需为 public 类型,不然ZF2前端控制器可能无法访问导致出错。同时应该注意action 的名称都是动作名+Action组成的,需要注意大写(如果项目将来是布置在Linux系统的服务器上时这点就显得尤为重要)。

经过添加以上的代码就建立了NewsController 控制器中建立了5个不同的action,在此就可以利用这5个不同的action 来实现5个不同的功能。下面说明一下上面添加的5个 action 的主要作用,indexAction 为控制器的默认action ;listAction 用来实现新闻列表功能;addAction 用来实现添加新闻的功能;editAction 用来实现修改/编辑新闻功能;deleteAction 用来实现删除新闻的功能。

有了控制器及控制器的action,那么是否就可以直接通过 http://localhost/news 来对NewsController进行访问了呢?答案是否定的。在前面的章节有提到过关于路由的概念或相关的内容,ZF2 中的所有控制的访问都需要先通过对控制器路由设定才能进行使用,没有经过路由设置的控制器就相当于一部不会割草的割草机;这种路由的设定也体现了ZF2中强大的路由功能,你可以将控制器的访问路径配置成各种各样的形式,这种路由的设置模式区别于传统PHP网址路径的访问形式,传统的访问地址往往都是包括了文件名,而ZF2的路由配置规则则可完全将文件名隐藏起来。那下面就开始对 NewsController 控制器进行路由的进行设定。

找到模块配置文件 /module/Application/config/module.config.php,打开文件并找到 router-->routes-->application 节点的未尾,在此节点的末尾添加如下代码:

'news'=>array(
    'type'=>'segment',
    'options'=>array(
        'route'=>'/news[/:action]',
        'constraints'=>array(
            'action'=>'[a-zA-Z]'
        ),
        'defaults'=>array(
            'controller'=>'Application\Controller\News',
            'action'=>'index'
        ),
    ),
),

注意:请确认好 application 与 news 的节点是处于同一层次

下面对 NewsController 路由配置进行解释:

  • news=>array() 表示一个路由节点,此节点的路由名称为 news

  • news-->type=>segment 表示路由使用 segment 模式进行解析

  • news-->options=>array() 表示路由配置选项

  • news-->options-->route => /news[/:action] 表示路由地址

  • news-->options-->constraints=>array() 对路由约束规则,其实就是对路由的正则匹配

  • news-->options-->constraints-->action 表示 action 的匹配规则

  • news-->defaults 表示路由默认访问的配置

  • news-->defaults-->controller 表示默认使用的控制器

  • news-->defaults-->action 表示控制器默认使用的action

现在可以通过

http://localhost/news         访问到 indexAction
http://localhost/news/list     访问到 listAction
http://localhost/news/add        访问到 addAction
http://localhost/news/edit    访问到 editAction
http://localhostnews/delete     访问到 deleteAction

通过以上的几个环节便完成了ZF2中的控制器的创建和使用,由此可见ZF2的使用比较ZF1更为复杂,也可以看出路由的设置及访问方式更加的灵活。在ZF2框架中控制器、视图、模型 是缺一不可的一个整体体系,缺失任何一个都将损害ZF2的完全性;致以本章节前面提到的要实现控制器中的增、删、改 的功能将会在视图及模型章节中加以补充。


还没有评论.