@@ -59,19 +59,22 @@ class FilterField extends Field
5959 */
6060 public $ modes = [];
6161
62+ /**
63+ * Вызывается перед применением определенного мода
64+ * @var callable|null
65+ */
66+ public $ beforeModeApplyCallback = null ;
67+
68+ /**
69+ * @var bool Добавлять название таблицы к атрибуту?
70+ */
71+ public $ isAddAttributeTableName = true ;
72+
6273 public function getBaseModes ()
6374 {
6475 return [
6576 FilterModeEmpty::class,
6677 FilterModeNotEmpty::class,
67-
68- /*FilterModeEq::class,
69- FilterModeNe::class,
70- FilterModeGt::class,
71- FilterModeLt::class,
72- FilterModeGte::class,
73- FilterModeLte::class,
74- FilterModeLike::class,*/
7578 ];
7679 }
7780 /**
@@ -102,6 +105,7 @@ public function init()
102105
103106 $ this ->on ('apply ' , [$ this , '_applyEvent ' ]);
104107 }
108+
105109 public function _applyEvent (QueryFiltersEvent $ queryFiltersEvent )
106110 {
107111 $ value = $ queryFiltersEvent ->field ->value ;
@@ -132,22 +136,24 @@ public function _applyEvent(QueryFiltersEvent $queryFiltersEvent)
132136 $ fullFilterAttribute = $ this ->filterAttribute ;
133137
134138 $ query = $ queryFiltersEvent ->query ;
135- if (!strpos ($ this ->filterAttribute , ". " ) && $ query ->modelClass && !$ query ->from ) {
136- $ modelClass = $ query ->modelClass ;
137- $ tableName = $ modelClass ::tableName ();
138- $ fullFilterAttribute = "{$ tableName }. {$ fullFilterAttribute }" ;
139-
139+
140+ if ($ this ->isAddAttributeTableName ) {
141+ if (!strpos ($ this ->filterAttribute , ". " ) && $ query ->modelClass && !$ query ->from ) {
142+ $ modelClass = $ query ->modelClass ;
143+ $ tableName = $ modelClass ::tableName ();
144+ $ fullFilterAttribute = "{$ tableName }. {$ fullFilterAttribute }" ;
145+ }
140146 }
141- /*if ($queryFiltersEvent->widget && $queryFiltersEvent->widget->asModelTable && !strpos(".", $fullFilterAttribute)) {
142- $fullFilterAttribute = $queryFiltersEvent->widget->asModelTable . "." . $fullFilterAttribute;
143- }*/
144- /*
145- $modelClassName = $queryFiltersEvent->widget->modelClassName;
146- $tableName = $modelClassName::tableName();
147- $fullFilterAttribute = $tableName . "." . $this->filterAttribute;*/
147+
148148
149149 $ filterMode ->attributeName = $ fullFilterAttribute ;
150150
151+ if ($ this ->beforeModeApplyCallback && is_callable ($ this ->beforeModeApplyCallback )) {
152+ $ userCallback = call_user_func ($ this ->beforeModeApplyCallback , $ queryFiltersEvent , $ this );
153+ if (!$ userCallback ) {
154+ return true ;
155+ }
156+ }
151157 $ filterMode ->applyQuery ($ queryFiltersEvent ->query );
152158 }
153159 /**
0 commit comments