Controller 类

beaconPHP 的所有控制需要继承与 Controller 类,该类默认有一些方法。


方法:

assign(string|array $key, $val = null)

注册模板变量,如果在使用模板的时候可以向模板注册变量。
如果 $key 是 array 字典 则一次性注册多个变量。

getAssign(): array

获取所注册的所有变量值。

display(string $tplName, ?string $parent = null)

显示模板内容:
$tplName 为模板文件名称,或者模板资源名称
$parent 为继承的父模板

fetch(string $tplname, ?string $parent = null): string

与显示不同的是这里的渲染的数据不会直接输出,而是以字符串形式返回
$tplName 为模板文件名称,或者模板资源名称
$parent 为继承的父模板

redirect(string $url, array $query = [])

页面跳转
$url 是要跳转的url地址,可使用虚拟url
$query 是携带的参数,已键值对形式赋值

error(string|array $error, ?array $option = [])

输出错误提示页面,并exit 退出程序不在继续执行后面的代码,如果是ajax请求将以json格式数据返回
如果$error 是数组一般用于表单字段提示。键值对 用于对各个表单输入框进行相应的提示.
$option 可以附带其他参数,其中

$option['back'] 表示提示错误信息后将要跳转的页面(仅在使用YeeUI表单支持)
$option['template'] 表示提示的时候使用的模板页面,如果没有指定 将使用公共模板。

 

success(?string $message = null, array $option = [])

输出成功信息提示,并exit 退出程序不在继续执行后面的代码,如果是ajax请求将以json格式数据返回

$message 成功提示的信息。
$option 其他要返回的参数
$option['back'] 表示提示成功后要跳转的页面(仅在使用YeeUI表单支持)
$option['template'] 表示提示的时候使用的模板页面,如果没有指定 将使用公共模板。
其他如果要返回的数据
可以自己定义 如
$option['list']
$option['data']
$option['info']
等等.

get(string $name = '', $def = null): mixed

等同于 Request::get(),获取 $_GET  数据

 

post(string $name = '', $default = null): mixed

等同于 Request::post(),获取 $_POST  数据

 

param(string $name = '', $def = null): mixed

等同于 Request::param()  获取 $_REQUEST 数据

 

route(string $name = '', $def = null): ?string

等同于 Request::route()  获取模块数据信息  App::get()

 

isAjax(): bool

等同于Request::isAjax()  判断是Ajax请求

 

isGet(): bool

等同于Request::isGet()   判断是GET请求

isPost(): bool

等同于Request::isPost()   判断是POST提交

referrer(): string

等同于Request::referrer()  获取上一页的URL地址

displayForm(Form $form, string $template = '')

渲染并显示表单页面
$form 需要渲染的表单。
$template 如果指定则使用该模板渲染,如果未指定则使用 Model 创建表单的Form注解定义的模板。
如代码,对ManageModel 创建表单,并在GET请求的时候显示表单。

$form = Form::create(ManageModel::class, 'add');
if ($this->isGet()) {
     $this->displayForm($form);
}

 

completeForm(Form $form): array

自动完成表单,并对相应的表单字段进行验证,如果成功返回键值形式的数组如果验证失败直接返回数据提示表单验证失败。
如代码 对 ManageModel 创建表单,并在POST 的情况下获取表单的字段内容,在写入数据库

$form = Form::create(ManageModel::class, 'add');
if ($this->isPost()) {
 $input = $this->completeForm($form);
 DB::insert($form->table, $input);
}

 

hookData(array $list, string $template = '', string $key = 'rs', bool $keep = false): array

用于修饰列表数据字段的方法,在beaconPHP中 这个方法会经常用到,主要是对返回的列表数据使用模板进行加工处理。
$list 需要对每个元素修改的数组。
$template 使用的模板
$key 对应 每个 hook 标签的键名。
$keep 保留原来数组中每个元素的键名,默认不保留。

如下面一个例子:

namespace app\home\controller;

use beacon\core\Controller;
use beacon\core\Method;

class Index extends Controller
{
    /**
     * 使用模板
     * @return string
     */
    #[Method(act: 'index', method: Method::GET)]
    public function index()
    {
        $list = [
            ['id' => 1, 'name' => 'wj008', 'type' => 1, 'allow' => 1],
            ['id' => 2, 'name' => 'wj008', 'type' => 2, 'allow' => 1],
            ['id' => 3, 'name' => 'wj008', 'type' => 3, 'allow' => 1]
        ];
        //修饰模板
        $hookTpl = <<<'EOF'
        {hook fn='_id' rs }{$rs.id}{/hook}
        {hook fn='_name' rs }{$rs.name}{/hook}
        {hook fn='_type' rs }{if $rs.type==1}<span>管理员</span>{elseif $rs.type==2}一般用户{else}其他用户{/if}{/hook}
        {hook fn='_allow' rs }{if $rs.allow==1}<span>已审核</span>{else}未审核{/if}{/hook}
EOF;

        $list = $this->hookData($list, 'string:' . $hookTpl, 'rs');
        print_r($list);
    }

}


对列表数据的每一行数据进行使用 hook 模板函数加工,加工后的键名 为 hook fn 的名称。
处理后的数据如下:

Array
(
    [0] => Array
        (
            [_id] => 1
            [_name] => wj008
            [_type] => <span>管理员</span>
            [_allow] => <span>已审核</span>
        )

    [1] => Array
        (
            [_id] => 2
            [_name] => wj008
            [_type] => 一般用户
            [_allow] => <span>已审核</span>
        )

    [2] => Array
        (
            [_id] => 3
            [_name] => wj008
            [_type] => 其他用户
            [_allow] => <span>已审核</span>
        )

)

 这对返回接口数据时需要对数据进行加工处理很常用。

 



上一篇:Config 类
下一篇:DB (Mysql) 类
Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号