Ввод слайдера диапазона Yiiframework

У меня есть страница настроек пользователя, где пользователи могут изменять настройки приложения. Пользователи могут вводить число от 0 до 10. См. скриншот: http://oi43.tinypic.com/2uerazp.jpg

Теперь я хотел бы преобразовать поля ввода в ползунок диапазона, используя виджет CJuiSliderInput yiiframework: http://www.yiiframework.com/doc/api/1.1/CJuiSliderInput#maxAttribute-detail

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

<?php foreach($settings as $i=>$value): ?> 
    <?php $setting=UserSetting::model()->findByPk($value->setting_id); ?> 
    <h4><?php echo CHtml::encode($setting->label); ?></h3> 
    <?php echo CHtml::activeTextField($value,"[$i]value"); ?>
<?php endforeach; ?>

Я хотел бы заменить activeTextField на

$this->widget('zii.widgets.jui.CJuiSliderInput',array(
    'model'=>$model,
    'attribute'=>'[$i]value',
    'maxAttribute'=>'timeMax',
    // additional javascript options for the slider plugin
    'options'=>array(
        'range'=>true,
        'min'=>0,
        'max'=>10,
    ),
));

Какие значения мне нужно указать в виджете, чтобы он заработал? Кстати, каждый ввод textField относится к другой модели.

Контроллер выглядит примерно так (не знаю, нужен ли он вам):

$settingsvalues = UserSettingValue::model()->findAll('client_id=:id', array(
    ':id' => $id,                       
));                  
if(isset($_POST['UserSettingValue'])){   
    $valid = true; 
    foreach($settingsvalues as $i=>$value){
        if(isset($_POST['UserSettingValue'][$i]))
            $value->attributes = $_POST['UserSettingValue'][$i]; 
        $value->save(); 
        $valid = $value->validate() && $valid; 
    }
    if($valid)
        $value->save(); 
}
$this->render('settings',array(
    'model' => $model, 
    'settings' => $settingsvalues,
));

Большое спасибо!


person Shark    schedule 22.11.2013    source источник


Ответы (2)


Я решил проблему, поместив функцию javascript в ползунок. Это не совсем так, как я планировал вначале, но сойдет. Ползунок теперь изменяет значение в полях ввода.

        <?Php               
               $this->widget('zii.widgets.jui.CJuiSliderInput',array(
                    'name' => $i, 
                    'model'=>$value,
                    'attribute'=>"value",
                    'event'=>'change',
                   //'value'=>'$value',
                  'options'=>array(
                      'min'=>0,
                      'max'=>10,
                      'animate' => true,
                      'slide'=>'js:function(event,ui){$("#UserSettingValue_'.$i.'_value").val(ui.value);}',
                  ),
)); ?>            
person Shark    schedule 24.11.2013

Это было немного большим, чтобы быть комментарием. Но, пожалуйста, попробуйте следующее

$this->widget('zii.widgets.jui.CJuiSliderInput',array(
  'name'=>'$setting->label',
  'attribute'=>'[$i]value',
  'value'=>$value,
  'options'=>array(
      'min'=>0,
      'max'=>10,
  ),
));

Также, пожалуйста, попробуйте это

$this->widget('zii.widgets.jui.CJuiSliderInput',array(
  'name'=>'$setting->label',
  'attribute'=>'[$i]value',
  'value'=>$value,
  'options'=>array(
      'min'=>0,
      'max'=>10,
  ),
 'htmlOptions'=>array(
    'style'=>'height:20px;',
),
));
person The Humble Rat    schedule 22.11.2013
comment
Эй, Джон, я получаю следующую ошибку, когда пробую ваш код: htmlspecialchars() ожидает, что параметр 1 будет строкой, объект задан, я думаю, что что-то не так со «значением» - person Shark; 22.11.2013
comment
@YorkKeijzer Я добавил еще один фрагмент, чтобы попробовать. Если он по-прежнему вызывает проблему, попробуйте изменить строку на эту //'value'=>$value,, а также попробуйте хешировать значение атрибута. Но проверьте с одним хешированием, другим нет, а затем с хешированием обоих. - person The Humble Rat; 22.11.2013
comment
Спасибо, я был занят. Теперь у меня работает визуальная часть: oi39.tinypic.com/2j3h4si.jpg со следующим код: $this-›widget('zii.widgets.jui.CJuiSliderInput',array( 'name' =› $i, 'model'=›value, 'attribute'=›value, //'value'=› '$value', 'options'=›array( 'min'=›0, 'max'=›10, ), - person Shark; 22.11.2013
comment
Просто пока не обновляется. Проблема в названии ползунков диапазона, см. следующий скриншот: oi44.tinypic.com/2igbxo0. jpg. Как видите, в названии ползунка отсутствует $i. Любая идея, как добавить его? Когда я добавляю значение [$i] вместо значения, я получаю следующую ошибку: Значение свойства UserSettingValue. [0] не определено. - person Shark; 22.11.2013