【发布时间】:2017-04-19 09:13:39
【问题描述】:
在@TheDrot 的大量帮助下,我能够选择上一个问题,现在当我重新初始化过滤时,标准过滤器不会返回另一个问题,我需要一些帮助才能知道我必须改变什么在代码中让它工作。 result in image 我发送代码和结果的图像没有成功。 谢谢你的帮助。 谢谢你。 result 2
public function processResetFilters($list_id = null)
{
if ($list_id === null) {
$list_id = isset($this->list_id) ? $this->list_id : $this->table;
}
$prefix = '';//var_dump($list_id, $prefix, $this->context->cookie);
$filters = $this->context->cookie->getFamily($prefix.$list_id.'Filter_');
foreach ($filters as $cookie_key => $filter) {
if (strncmp($cookie_key, $prefix.$list_id.'Filter_', 7 + Tools::strlen($prefix.$list_id)) == 0) {
$key = substr($cookie_key, 7 + Tools::strlen($prefix.$list_id));
if (is_array($this->fields_list) && array_key_exists($key, $this->fields_list)) {
$this->context->cookie->$cookie_key = null;
}
unset($this->context->cookie->$cookie_key);
}
}
if (isset($this->context->cookie->{'submitFilter'.$list_id})) {
unset($this->context->cookie->{'submitFilter'.$list_id});
}
if (isset($this->context->cookie->{$prefix.$list_id.'Orderby'})) {
unset($this->context->cookie->{$prefix.$list_id.'Orderby'});
}
if (isset($this->context->cookie->{$prefix.$list_id.'Orderway'})) {
unset($this->context->cookie->{$prefix.$list_id.'Orderway'});
}
$_POST = array();
$this->_filter = false;
unset($this->_filterHaving);
unset($this->_having);
//your code
$table= 'contabilidade_faturacao';
$startTime = date('Y-m-d', mktime(0, 0, 0, date('m')-1 , 1 , date('Y')));
$endTime = date('Y-m-d', mktime(23, 59, 59, date('m'), date('d')-date('j'), date('Y')));
$table = 'contabilidade_faturacao';
$date_filter_key = $table.'Filter_cf!data';
$this->context->cookie->{$date_filter_key} = serialize(array(
$startTime,
$endTime
));
$this->context->cookie->write();
}
【问题讨论】:
-
到底是什么问题?是列表没有在 SQL 中过滤,还是只是列表没有显示列标题中使用的过滤器?
-
过滤器工作正常,我的问题是我想在用户看到这个列表的日期插入一个过滤器,这个过滤器已经实现并且可以修改。我在图片中有一个例子,我放了i.stack.imgur.com/lFDZt.png。我希望你已经解释了我的问题是什么。谢谢
-
那么你需要检查 POST 和 cookie 中是否不存在日期过滤器,然后在生成列表之前将默认日期过滤器写入 cookie。
-
就理论家而言,我意识到您对我说的话,实际上我不知道该怎么做。你知道我是否可以遵循任何文件吗?然后我做了一个 if 来检查过滤器是否存在于 POST 中?例如: var_dump($_POST) ["submitFiltercontabilidade_faturacao"]=> string(1) "1" ["page"]=>string(1) "1" ["selected_pagination"]=> string(2) "50" [ "local_contabilidade_faturacaoFilter_cf!data"]=> array(2) { [0]=>string(0) "" [1]=> string(0) "" }
-
@TheDrot 需要帮助。我一直在尝试修改(!Tools :: getIsset ...)并重新写入cookie,但即便如此它什么也没做,cookie没有被重新写入。请帮我。我不知道我做错了什么。 (...) $date_filter_key = $table.'Filter_cf!data'; if (!isset($this->context->cookie->{$date_filter_key})) { $this->context->cookie->{$date_filter_key} = serialize(array( $startTime, $endTime )); $this->context->cookie->write(); }
标签: php filter prestashop action-filter