Boa tarde Pedro,
Aplicando a configuração abaixo para o meu filtro eu sempre tinha como resposta todos os registros mesmo indicando o before como vazio. Ou seja, o plugin sempre concatenava o % no início ou fim da condição.
$this->Filter->addFilters(
array(
'filter1' => array(
'OR' => array(
[...]
'User.display_name' => array(
'operator' => 'LIKE',
'explode' => false,
'value' => array(
'before' => '',
'after' => '%'),
),
[...]
)
)
)
);
Analisando o código eu adicionei um return na linha 940 da variável $default que resolveu o problema para mim.
protected function _getFieldDefaultValueOptions($option) {
$default = null;
if (isset($this->_filter['value'])) {
if (is_array($this->_filter['value'])) {
if (isset($this->_filter['value'][$option])) {
$default = $this->_filter['value'][$option];
return $default; // return adicionado
}
}
}
if ($default == null) {
switch (mb_strtolower($this->_filter['operator'], 'utf-8')) {
case 'like':
case 'not like':
$default = '%';
break;
default:
$default = '';
break;
}
}
return $default;
}
Não sei se havia alguma outra forma de forçar o início da string como vazia e por isso adicionei o return como no exemplo acima para obter o seguinte resultado quando o like fosse utilizado, ex:
mysql> select [...] from table like 'marcos%';
Abraços e parabéns pelo plugin!
Boa tarde Pedro,
Aplicando a configuração abaixo para o meu filtro eu sempre tinha como resposta todos os registros mesmo indicando o
beforecomo vazio. Ou seja, o plugin sempre concatenava o%no início ou fim da condição.Analisando o código eu adicionei um
returnna linha940da variável$defaultque resolveu o problema para mim.Não sei se havia alguma outra forma de forçar o início da
stringcomo vazia e por isso adicionei oreturncomo no exemplo acima para obter o seguinte resultado quando olikefosse utilizado, ex:Abraços e parabéns pelo plugin!