walkor / webman

Probably the fastest PHP web framework in the world.
https://webman.workerman.net/
MIT License
2.22k stars 217 forks source link

如何修改请求参数 #403

Open douno23 opened 8 months ago

douno23 commented 8 months ago

请问如何修改请求参数,并可以对后续别的方法起到影响 举例: 数据查询时,如果没有传递排序字段,就按照主键倒序排。 尝试过在 layui.table.render 方法中传递 where,但是点击搜索的时候不会传递这个 有没有办法,在控制器或者哪里修改参数,并且对后续产生影响

qnnp-me commented 6 months ago

你这是实际业务中的问题、和框架没关系、具体实现你可以在Controller中处理具体讲逻辑

yisibugua commented 1 month ago

框架默认的查询是 select 方法,你重写掉就行了。

public function select(Request $request): Response
{
        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
        // 这里判断$field,如果为空就给个默认值
        if (!$field) {
            $field = 'id';
            $order = 'desc';
        }
        $query = $this->doSelect($where, $field, $order);
        return $this->doFormat($query, $format, $limit);
}
willvar commented 5 days ago

前阵子要改下 POST 传过来的值,于是先在 support 下新建一个 Request.php

<?php

namespace support;

/**
 * Class Request
 * @package support
 */
class Request extends \Webman\Http\Request
{
  public function setPostData($data): void
  {
    $this->_buffer = substr($this->_buffer, 0, strpos($this->_buffer, "\r\n\r\n") + 4) . json_encode_lite($data);
    $this->_data = $data;
  }
}

然后在后续控制器/中间件需要读 Request $request 的地方之前调一下 $request->setPostData(),不知道你是不是需要这种,仅供参考 0.0

keanu-jinu commented 1 day ago

重写项目根目录下support/Request.php 以下为示例代码

<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.workerman.net/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

namespace support;

/**
 * Class Request
 * @package support
 */
class Request extends \Webman\Http\Request {
    /**
     * 获取过滤后的 post 数据
     * @param $name
     * @param $default
     * @return mixed|null
     */
    public function post($name = null, $default = null) {
        // 获取请求的所有参数
        $params = parent::post();  // 只获取 POST 请求的参数

        ...自定义处理逻辑

        if ($name) {
            return collect($params)->get($name, $default);
        } else {
            return $params;
        } 
    }

}