StartMVC开发手册

可以快速上手的开发文档

手册目录

创建视图

视图概述

视图(View)是MVC框架中用户看到并与之交互的界面部分。StartMVC提供了一个轻量级但功能强大的模板引擎,支持原生PHP语法与简洁的模板标签,兼顾了开发效率和运行性能。

创建视图

视图文件默认以.php结尾,命名规则为控制器_方法.php,默认位于/模块/view目录下。

多主题支持

StartMVC支持多风格模板,可在config/common.php中设置:

'theme'  => '',  //指定模板子目录,例如'default',为空时模板文件直接在view下

调用视图

在控制器中使用$this->display()方法调用视图:

namespace app\home\controller;
use startmvc\core\Controller;

class IndexController extends Controller {
    function indexAction(){
        // 默认输出到home模块下的view/index_index.php
        $this->display();
        
        // 输出到home模块下的view/view.php
        $this->display('view');
        
        // 输出到admin模块下的view/public/view.php
        $this->display(['Admin', 'public/view']);
    }
}

获取视图内容但不输出

如果您需要获取渲染结果但不直接输出,可以使用fetch方法:

// 获取渲染内容
$content = $this->fetch('index');

// 对内容进行处理
$content = str_replace('old', 'new', $content);

// 手动输出
echo $content;

视图赋值

传递变量到视图

在控制器中使用assign方法传递变量到视图:

// 单个变量赋值
$this->assign('title', 'StartMVC框架');

// 批量赋值
$data = [
    'title' => 'StartMVC框架',
    'users' => [
        ['name' => '小明', 'age' => 21],
        ['name' => '小红', 'age' => 20]
    ]
];
$this->assign($data);

// 支持链式调用
$this->assign('title', '网站标题')
     ->assign('keywords', 'PHP,MVC,轻量级')
     ->display();

// 在display时传递变量
$this->display('index', ['time' => time()]);

在视图中使用变量

视图中有两种方式使用变量:

1. PHP原生语法:

<h1><?php echo $title; ?></h1>

<ul>
<?php foreach($users as $user): ?>
    <li>姓名:<?php echo $user['name']; ?>,年龄:<?php echo $user['age']; ?></li>
<?php endforeach; ?>
</ul>

2. 模板标签语法:

<h1>{$title}</h1>

<ul>
{loop $users $user}
    <li>姓名:{$user.name},年龄:{$user.age}</li>
{/loop}
</ul>