2 and more filters in controller

9 views
Skip to first unread message

Artyom M

unread,
Dec 8, 2014, 1:48:46 AM12/8/14
to koala-fra...@googlegroups.com
Niko,

I want to add +1 filter to controller and +1 queryField.
2 filters - 2 queryFields. 

How to do this?

Niko Sams

unread,
Dec 14, 2014, 11:37:10 AM12/14/14
to Koala Framework Dev
Hmm, I'm not sure what you mean by filter and queryField.

you can create multiple TextField filters like described here:

and you can implement any custom filtering logic if you pass skipWhere'=>true

Niko

Artyom M

unread,
Dec 17, 2014, 7:39:28 PM12/17/14
to koala-fra...@googlegroups.com
I want to create 3 filters in controller: 2 is text, 1 is dateRange.

I do this by this code follow filtering instructions:

$this->_filters = array(
'text' => array(
'type' => 'TextField',
'width' => 90,
'label' => 'Сотрудник:',
'queryFields' => array('employeeName'), //search those fields
),
'text2' => array(
'type' => 'TextField',
'width' => 90,
'label' => 'Код:',
'queryFields' => array('typeName'), //search those fields
),
'date' => array(
'type' => 'DateRange',
'width' => 90,
'label' => 'Диапазон дат:',
'queryFields' => array('workDate'), //search those fields
));



But only 'text2' and 'date' shows. How to show 'text' too?

Niko Sams

unread,
Dec 18, 2014, 3:24:58 AM12/18/14
to Koala Framework Dev
try to use 'type'=>'Text'

Niko

--
You received this message because you are subscribed to the Google Groups "Koala Framework Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to koala-framework...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Artyom M

unread,
Dec 18, 2014, 6:49:08 PM12/18/14
to koala-fra...@googlegroups.com
>try to use 'type'=>'Text'
Not working. Same situation as with 'type'=>'TextField'

Niko Sams

unread,
Dec 21, 2014, 12:35:15 PM12/21/14
to Koala Framework Dev
ok, here an example that works:
        $this->_filters->add(new Kwf_Controller_Action_Auto_Filter_Text())
            ->setWidth(90)
            ->setLabel(trl('Filter').': ');

        $this->_filters->add(new Kwf_Controller_Action_Auto_Filter_TextField())
            ->setWidth(70)
            ->setFieldName('firstname')
            ->setLabel(trl('Firstname').': ');

actually this is a bit weird, but I hope it helps...

Niko


On Thu, Dec 18, 2014 at 1:39 AM, Artyom M <psycho...@gmail.com> wrote:

--

Artyom M

unread,
Dec 21, 2014, 8:34:12 PM12/21/14
to koala-fra...@googlegroups.com
Works for me in this way:
$this->_filters->add(new Kwf_Controller_Action_Auto_Filter_Text())
->setWidth(90)
->setLabel(trl('Сотрудник').': ');

$this->_filters->add(new Kwf_Controller_Action_Auto_Filter_TextField())
->setWidth(90)
->setFieldName('typeName')
->setLabel(trl('Код').': ');
$this->_filters->add(new Kwf_Controller_Action_Auto_Filter_DateRange())
->setWidth(90)
->setFieldName('workDate')
->setLabel(trl('Даты').': ');

$this->_queryFields = array('employeeName');


I can't specify field name in Kwf_Controller_Action_Auto_Filter_Text by "->setFieldName('employeeName')" - request goes through all fields and show me collation error:
exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1271 Illegal mix of collations for operation 'like'' in C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Statement\Pdo.php:228
Stack trace:
#0 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Statement\Pdo.php(228): PDOStatement->execute(Array)
#1 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Statement.php(323): Zend_Db_Statement_Pdo->_execute(Array)
#2 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Adapter\Abstract.php(480): Zend_Db_Statement->execute(Array)
#3 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Kwf_Db_Table_Select), Array)
#4 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Table\Abstract.php(1575): Zend_Db_Adapter_Pdo_Abstract->query(Object(Kwf_Db_Table_Select))
#5 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Table\Abstract.php(1390): Zend_Db_Table_Abstract->_fetch(Object(Kwf_Db_Table_Select))
#6 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Model\Db.php(856): Zend_Db_Table_Abstract->fetchAll(Object(Kwf_Db_Table_Select))
#7 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Action\Auto\Grid.php(288): Kwf_Model_Db->getRows(Object(Kwf_Model_Select))
#8 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Action\Auto\Grid.php(360): Kwf_Controller_Action_Auto_Grid->_fetchData(Array, 3000, '0')
#9 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Action.php(33): Kwf_Controller_Action_Auto_Grid->jsonDataAction()
#10 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Controller\Dispatcher\Standard.php(308): Kwf_Controller_Action->dispatch('jsonDataAction')
#11 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Kwf_Controller_Request_Http), Object(Kwf_Controller_Response_Http))
#12 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Front.php(139): Zend_Controller_Front->dispatch(Object(Kwf_Controller_Request_Http), Object(Kwf_Controller_Response_Http))
#13 C:\OpenServer\domains\aviashelf1\bootstrap.php(20): Kwf_Controller_Front->dispatch()
#14 {main}

Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY000]: General error: 1271 Illegal mix of collations for operation 'like', query was: SELECT `employeeWorks`.* FROM `employeeWorks` WHERE (workId = '107') AND ((employeeWorks.employeeName LIKE '%авил%') OR (employeeWorks.speciality LIKE '%авил%') OR (employeeWorks.workDate LIKE '%авил%') OR (employeeWorks.typeName LIKE '%авил%') OR (employeeWorks.subTypeName LIKE '%авил%') OR (employeeWorks.workTime1 LIKE '%авил%') OR (employeeWorks.workTime2 LIKE '%авил%') OR (employeeWorks.workTime3 LIKE '%авил%') OR (employeeWorks.workTime4 LIKE '%авил%') OR (employeeWorks.workTime5 LIKE '%авил%') OR (employeeWorks.timePerDay LIKE '%авил%') OR (employeeWorks.comment LIKE '%авил%')) ORDER BY `employeeWorks`.`workDate` ASC LIMIT 3000' in C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Statement\Pdo.php:235
Stack trace:
#0 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Statement.php(323): Zend_Db_Statement_Pdo->_execute(Array)
#1 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Adapter\Abstract.php(480): Zend_Db_Statement->execute(Array)
#2 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Kwf_Db_Table_Select), Array)
#3 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Table\Abstract.php(1575): Zend_Db_Adapter_Pdo_Abstract->query(Object(Kwf_Db_Table_Select))
#4 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Db\Table\Abstract.php(1390): Zend_Db_Table_Abstract->_fetch(Object(Kwf_Db_Table_Select))
#5 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Model\Db.php(856): Zend_Db_Table_Abstract->fetchAll(Object(Kwf_Db_Table_Select))
#6 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Action\Auto\Grid.php(288): Kwf_Model_Db->getRows(Object(Kwf_Model_Select))
#7 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Action\Auto\Grid.php(360): Kwf_Controller_Action_Auto_Grid->_fetchData(Array, 3000, '0')
#8 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Action.php(33): Kwf_Controller_Action_Auto_Grid->jsonDataAction()
#9 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Controller\Dispatcher\Standard.php(308): Kwf_Controller_Action->dispatch('jsonDataAction')
#10 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\zendframework1\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Kwf_Controller_Request_Http), Object(Kwf_Controller_Response_Http))
#11 C:\OpenServer\domains\aviashelf1\vendor\koala-framework\koala-framework\Kwf\Controller\Front.php(139): Zend_Controller_Front->dispatch(Object(Kwf_Controller_Request_Http), Object(Kwf_Controller_Response_Http))
#12 C:\OpenServer\domains\aviashelf1\bootstrap.php(20): Kwf_Controller_Front->dispatch()
#13 {main}

My table collation is utf8_unicode_ci. I found that if you put cyrillic characters in like statement with datetime field - you see SQL error 1271. See also:

COLLATE utf8_unicode_ci helps user in forum, but for me it not works =( 

Niko Sams

unread,
Dec 24, 2014, 7:02:35 AM12/24/14
to Koala Framework Dev
add ->setSkipWhere(true) then you can create the select object all on your own.

override _getSelect and access the post parameters using $this->_getParam

Niko

--
Reply all
Reply to author
Forward
0 new messages