Phalcon搭建多模块框架六:组合和过滤get参数

本文介绍了如何在Phalcon框架下为不同模块的控制器构建一个基础类,以便方便地获取并过滤GET参数。通过配置全局默认设置、模块特定配置以及自定义过滤器服务,实现了从URL中安全地获取参数的功能。
摘要由CSDN通过智能技术生成

有时候我们会有类似http://phalcon.com/filter/get/key1/value1/key2/value2?key3=value3&key4=value4这样的请求。而在控制器中通过$this->dispatcher->getParams()只能获取到key1和key2的值,并且是未过滤的。通过$this->request->getQuery()只能获取key3和key4的值,并且批量获取也是不过滤的。
例如我们在home模块下创建Filter控制器

namespace App\Home\Controllers;

use Phalcon\Mvc\Controller;

class FilterController extends Controller {
   

    public function getAction() {
   
        var_dump('$this->dispatcher->getParams()方法获取参数(pathinfo参数)', $this->dispatcher->getParams());
        var_dump('$this->request->getQuery()方法获取参数($_GET)', $this->request->getQuery());        
        exit;
    }
}

当我们访问http://phalcon.com/filter/get/a/11a/b/ bbb?c=ccc&d=<script>alert(1)</script>,就会如下图结果。
这里写图片描述
这个时候我们想封装一个便捷的获取get参数并且能过滤的功能。由于我们通常是在控制器中接受参数,所以可以创建个基类控制器来实现这个功能。
这里写图片描述
1、打开config/config.php添加全局默认配置。

// 过滤器设置
'filter' => [
    // 过滤类型,支持string、trim、absint、int、email、float、int!、float!、alphanum、striptags、lower、upper、url、special_chars
    'default_filter' => 'string,trim'
],

完整的config/config.php:

<?php
/**
 * @desc 全局配置文件
 * @author zhaoyang
 * @date 2018年5月3日 下午7:54:47
 */
return [
    // 服务配置
    'services' => [
        // 调度器配置
        'dispatcher' => [
            // 处理 Not-Found错误配置
            'notfound' => [
                // 错误码及错误提示(ajax和post请求)
                'status_code' => 404,
                'message' => 'Not Found',
                // 错误跳转的页面
                'namespace' => DEFAULT_MODULE_NAMESPACE . '\\Controllers',
                'controller' => 'error',
                'action' => 'error404'
            ],
        ],
        // volt引擎相关配置
        'view_engine_volt' => [
            // 编译模板目录
            'compiled_path' => BASE_PATH . 'runtime/' . DEFAULT_MODULE . '/compiled/volt' . DS,
            // 是否实时编译
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值