调用视图控制器
在控制器中使用视图控制器
基本使用方式
直接在控制器中调用$this->display()
, 框架会自动初始化对应是视图控制器, 并调用其中的同名action
namespace app\web\controllers;
use Cross\MVC\Controller;
class User extends Controller
{
function index()
{
$page = array(
'p' => isset($this->params['p'])?intval($this->params['p']):1,
'limit' => 20,
'half' => 3,
'link' => array("main:index"),
);
$USER = new UserModule();
$result['data'] = $USER->getUserList( $page );
$result['page'] = $page;
$this->display($result);
}
}
从Modules取出数据和分页信息, 放进变量 $result
中, 传给视图控制器的同名方法处理, 在视图控制器中整理数据, 调用模版, 赋值给布局文件中的 $content
变量, 生成最终的结果页面一起返回到 Dispatcher
中,如果有请求缓存则把结果存进缓存中, 然后通过 Response->output()
方法发送给用户, 下次请求的时候先检查是否有缓存, 如果有缓存并且还在缓存的有效期, 直接从缓存把结果返回给用户.
指定视图控制器中的ACTION
指定要调用的视图控制器方法
namespace app\web\controllers;
use Cross\MVC\Controller;
class User extends Controller
{
function index()
{
$page = array(
'p' => isset($this->params['p'])?intval($this->params['p']):1,
'limit' => 20,
'half' => 3,
'link' => array("main:index"),
);
$USER = new UserModule();
$result['data'] = $USER->getUserList( $page );
$result['page'] = $page;
$this->display($result, 'JSON');
}
}
使用视图控制器提供的 JSON
方法,返回一个JSON结果.
是否输出Layer
在控制器中直接调用视图控制器中的方法, 不会输出Layer, 如下例:
class Main extends CoreController
{
function index()
{
$page = array(
'p' => isset($this->params['p'])?intval($this->params['p']):1,
'limit' => 20,
'half' => 3,
'link' => array("main:index"),
);
$USER = new UserModule();
$result['data'] = $USER->getUserList( $page );
$result['page'] = $page;
if ($this->is_ajax_request())
{
$this->view->index($result);
} else {
$this->display($result);
}
}
}
如果是ajax请求不输出layer的内容.