Как Скрыть Поля Поиска

всем привет

не получилось скрыть поля по которым можно осуществлять поиск - ну, те, которые в самом верху

в модели, в рулес было так =


array('id_doc, id_doc_group, link, name, dt_show, dt_load, show', 'safe', 'on'=>'search')

сделал так =


array('link, name, show', 'safe', 'on'=>'search')

а поля из представления не исчезли…

И не исчезнут, просто по тем полям что ты убрал, поиск работать не будет.

В виджете GridView в представлении columns указать список полей.




columns'=>array(...)




ага! про поиск уже прочухал! спасибо!

вот только в columns придется делать как-то так с каждым полем =


array(

	'name' => 'dt_load',

	'filter'=>false,                    

),

именно ключ filter заставляет исчезнуть поле поиска

меня сейчас больше волнует - как прикрутить CJuiDatePicker к полю с датой если все поля формируются виджетом CGridView?

К виджетам нужно обращаться через контроллер, соотвественно:




'value'=>'$this->grid->controller->widget()';



попробовал вообще так вот =


'value'=>$this->widget('zii.widgets.jui.CJuiDatePicker',

    array(

          'attribute'=>'dt_show',

          'model'=>$model,

          'language'=>'ru',

          'options' => array(

                            'mode'=>'focus',

                            'dateFormat'=>'yy-mm-dd '.date("H:i:s"),

                            'showAnim' => 'slideDown',

                            ),

  'htmlOptions'=>array('size'=>30,'class'=>'date','style'=>'padding:6px;'),

        )

  ),

не помогло…

Наверное надо немного вчитаться в ответ)




'value'=>'$this->grid->controller->widget("zii.widgets.jui.CJuiDatePicker",

    array(

          "attribute"=>"dt_show",

          "model"=>$model,

          "language"=>"ru",

          "options" => array(

                            "mode"=>"focus",

                            "dateFormat"=>"yy-mm-dd ".date("H:i:s"),

                            "showAnim" => "slideDown",

                            ),

  "htmlOptions"=>array("size"=>30,"class"=>"date","style"=>"padding:6px;"),

        )

  ),'



Вы же в eval() пихаете обьект вместо строки. $this в этом случае мы не можем ипсользовать так как вы хотите ($this у нас относится к гриду), $this->grid вернет обьект собственника грида, $this->grid->controller - контроллер родитель action в котором мы находимся. Как я и писал выше с виджетами нужно общаться через контроллер.

Точно также делается например $this->grid->controller->createUrl().

Почитайте о специальных переменных грида.

был дурак - исправлюсь

Может, всё-таки, анонимные функции? :lol:

А ещё лучше один вызов datepicker’а, чем для каждой строки отдельно.

Кстати через анонимную функцию у меня виджеты напрочь отказывались работать, eval() ругался постоянно. Может чего не так делал, но так работает 100%.

А как собственно сделать 1 вызов datepickera?

Насколько я понимаю нужно сделать класс колонке, потом обьвить datepicker на этот класс в $(document).ready() например, в итоге мы ведь получим такое же количество datepicker-ов.

Возникнут проблемы, в ajaxUpdate() нужно будет перевешивать datepicker (например при пагинации), что делать с дефолтными значениями?(нужно будет делать $.each() по классу и вытаскивать значения например id строки и вносит в defaultValue).

Или я снова что то неправильно понимаю, или так не совсем проще.

П.С. делал так с некоторыми другими js плагинами, все работает но насчет простоты я не уверен.