Open douno23 opened 8 months ago
你这是实际业务中的问题、和框架没关系、具体实现你可以在Controller中处理具体讲逻辑
框架默认的查询是 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);
}
前阵子要改下 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
重写项目根目录下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;
}
}
}
请问如何修改请求参数,并可以对后续别的方法起到影响 举例: 数据查询时,如果没有传递排序字段,就按照主键倒序排。 尝试过在 layui.table.render 方法中传递 where,但是点击搜索的时候不会传递这个 有没有办法,在控制器或者哪里修改参数,并且对后续产生影响