Код: Выделить всё
$form = ActiveForm::begin([
'id' => 'tender-form',
'enableClientValidation' => true,
'action' => Url::to(['/tenders/add'])
])
......
<button type="button" class="button btn btn-default btntoexpand" data-target="#pricerangeform" id="pricerange">Указать стоимость</button>
<div class="dialog container-fluid" id="pricerangeform">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<div class="row">
<div class="col-md-8">
<?= kartik\field\FieldRange::widget([
'form' => $form,
'model' => $model,
'separator' => '-',
'label' => false,
'attribute1' => 'pricestart',
'attribute2' => 'priceend',
'options1' => ['placeholder' => Yii::t('tenders','PRICESTART')],
'options2' => ['placeholder' => Yii::t('tenders','PRICEEND')],
'type' => FieldRange::INPUT_TEXT,
]); ?>
</div>
<div class="col-md-4">
<?= $form->field($model, 'currency_id', [
'template' => '<div class="col-xs-8 col-sm-4 col-md-4">{label} {input}{error}{hint}</div>',
'enableLabel'=>false
])->radioList(
ArrayHelper::map(Currencies::getcurrencieslist(), 'id', 'title')
, [
'class' => 'btn-group',
'data-toggle' => 'buttons',
'item' => function ($index, $label, $name, $checked, $value) {
return '<label class="' . ($checked ? ' active' : '') . '">' .
Html::radio($name, $checked, ['value' => $value, 'class' => 'paramprice1','id'=>'paramprice1_'.$value,'label-value'=>$label]) . $label . '</label>';
},
]);
?>
</div>
</div>
<input type="button" value="<?=Yii::t('tenders','CHOOSE')?>" id="btnChooseprice" class="btn btnChooseprice">
</div> //закрыли #pricerangeform.dialog
//другие элементы формы
<?= Html::submitButton(Yii::t('tenders', 'SENDORDER'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
Код: Выделить всё
['priceend', 'compare', 'compareAttribute' => 'pricestart', 'operator' => '>=', 'type' => 'number']
Необходимо еще отображать ошибку в случае, если пользователь указал цену (хотя бы одну из "от" или "до"), но не выбрал валюту. Думаю, что это лучше делать в результате клика на кнопке "btnChooseprice". Но, когда пользователь кликает на ней, то окно закрывается, а вместо указать стоимость появляется "начальная_цена - конечная_цена undefined" (это сделал с помощью js). В принципе это можно сделать с помощью отдельного js-скрипта. А можно ли это каким-то образом сделать средствами фреймворка? Пробовал копать в сторону "'whenClient' => "function (attribute, value) ..." в правилах валидации, но не могу сообразить как. Либо у меня мозгов на это не хватает, либо таким способом эта проблема не решается, и придется продолжить извращаться с js. Подскажите, пожалуйста, как все-таки лучше решить такую задачу. Заранее спасибо!