set settings from static call

Anonymous avatarAnonymous created an issue

Add this code

    public static function dropDownList($name, $select, $data, $htmlOptions = array())
    public static function multiSelect($name, $select, $data, $htmlOptions = array())
    {
        if(isset($htmlOptions['settings'])) {
            $settings = $htmlOptions['settings'];
            unset($htmlOptions['settings']);
        }
        ...
        return Yii::app()->getController()->widget(__CLASS__, array(
            ...
            'settings' => $settings,
        ), true);
    }

Comments (11)

  1. dr_death

    it was my issue. are you sure

    private static function widgetWithSettings($settings) {
          if (isset($htmlOptions['settings'])) {
    

    is right?

    not

    if (isset($settings['htmlOptions']['settings'])) {
    
  2. dr_death
    $settings = array_merge($settings, $userSettings); 
    

    show error, must be

    public $settings = array();
    ...
    $settings['settings'] = $userSettings;
    
  3. Bogdan Savluk

    What error? In what case?

    $settings property is private, because it should not be modified by outside – every property can be set throught widget properties.

    $settings['settings'] = $userSettings;
    

    For what you need this? And where, you think this code should be? - settings in htmlOptions, when using static call are intended to override widget properties, but not to change chosen script settings directly.

    P.S. If you want - you can speak russian here ;)

  4. dr_death

    $settings = array_merge($settings, $userSettings); коряво мержит, $userSettings не попадают в $settings['settings'] а мержатся с $settings и тогда ошибка Не определено свойство "Chosen.xxx". $settings['settings'] = $userSettings; мержит правильно, а private не дает их собственно установить потому что Не определено свойство "Chosen.settings".

  5. Bogdan Savluk

    ну так просто нужно использовать существующие свойства виджета..

    или нужно поменять что-то чего там нет?

  6. dr_death

    Ну мне надо менять search_contains => true, а смысл лепить каждое js свойство если их можно просто передать массивом через settings чтоб они все попали в родной options

    input.chosen({'search_contains':true,'no_results_text':'Ничего не найдено по запросу'});
    
  7. Bogdan Savluk

    Спорный вопрос как лучше…

    Но, так как большынство свойств устанавливается через свойства виджета, то и это лучше сделать также как и остальные.

    Добавил свойство виджета searchContains.

  8. Bogdan Savluk

    Вообще да, проблема в том что оно не описано в документации chosen... Поэтому и не было сделано...

  9. Log in to comment
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.