Home > Article > Backend Development > ZF Framework Controllers Custom Action_PHP Tutorial
The front-end controller is the hard work in MVC construction, because it instantiates objects, triggers events, establishes default behaviors, etc. Its main purpose is to handle all requests entering the application. The design pattern of the front-end controller is applied in different MVC frameworks. The front-end controller (Front Controller) we refer to in Zend Framework actually refers to the Zend_Controller_Front class, because this class implements the front-end controller pattern; please note that What's interesting is that the front-end controller design is a singleton mode (Singleton), which means that it implements the singleton design mode, that is, there can only be one instantiated front-end controller, that is, we cannot directly instantiate the Front Controller. , but take one.
Below we implement a simple controller jump and distribution.
IndexController.php is created in the controllers folder, and the index.phtml file is created in the view folder. Enter http://localhost/NowaMagicFrame1.0/ in the address bar to browse.
<?php require('CommonController.php'); class IndexController extends Zend_Controller_Action { function init() { //parent::init(); $this->registry = Zend_Registry::getInstance(); $this->view = $this->registry['view']; $this->view->baseUrl = $this->_request->getBaseUrl(); } public function indexAction() { //这里给变量赋值,在index.phtml模板里显示 $this->view->bodyTitle = 'NowaMagic Frame 1.0'; echo $this->view->render('index.phtml');//显示模版 } /** * 新闻 * */ public function newsAction(){ //这里给变量赋值,在news.phtml模板里显示 $this->view->bodyTitle = 'NowaMagic Frame 新闻'; echo $this->view->render('news.phtml');//显示模版 } } ?>
Now if I want to access the news page, I can access it through IndexContriller, because it has the newsAction() method to achieve forwarding. The specific access method is http://localhost/NowaMagicFrame1.0/index/news/
But this URL does not look as good as imagined. The ideal URL should look like this: http://localhost/NowaMagicFrame1.0/news/
How to achieve it? We need to create a NewsController.php
<?php class NewsController extends Zend_Controller_Action { function init() { $this->registry = Zend_Registry::getInstance(); $this->view = $this->registry['view']; $this->view->baseUrl = $this->_request->getBaseUrl(); } /** * 标签首页 * */ function indexAction(){ echo $this->view->render('news.phtml'); } } ?>
Just add an indexAction to this file.