ilya12345
Новичок
Здравствуйте!
Есть форма, у которой меняются input-ы, в зависимости от того, какой способ доставки выберет пользователь
как в зависимости от выбора пользователя можно динамически менять сценарий валидации?
Код контроллера:
Код модели:
Код вьюхи:
JS код:
Есть форма, у которой меняются input-ы, в зависимости от того, какой способ доставки выберет пользователь
как в зависимости от выбора пользователя можно динамически менять сценарий валидации?
Код контроллера:
Код:
class ApplicationController extends Controller
{
public function actionNewApplication1()
{
$model = new Application1();
$model->scenario = Application1::SCENARIO_CAR;
$model->load(Yii::$app->request->post());
return $this->render('new-application1', compact('model'));
}
}
Код:
class Application1 extends Model
{
const SCENARIO_CAR = 'car';
const SCENARIO_TRAIN = 'train';
public $customer;
public $delivery_method;
public $plant;
public $station;
public $oil_base;
public $numberDrivers;
public function scenarios()
{
return [
self::SCENARIO_CAR => [
'customer',
'delivery_method',
'oil_base',
'numberDrivers',
],
self::SCENARIO_TRAIN => [
'customer',
'delivery_method',
'plant',
'station',
],
];
}
public function rules()
{
return [
[['customer',
'delivery_method',
], 'required',],
[[
'oil_base',
'numberDrivers',
], 'required','on' => self::SCENARIO_CAR],
[[
'plant',
'station',
], 'required','on' => self::SCENARIO_TRAIN],
];
}
}
Код:
<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
?>
<?php $form = ActiveForm::begin(['id' => 'registration-form', 'enableAjaxValidation' => true]);
echo $form->field($model, 'customer');
echo $form->field($model, 'delivery_method')->dropDownList([0 => 'Не выбрано', 1 => 'ЖД ТРАНСПОРТ', 2 => 'АВТОТРАНСПОРТ']);
echo $form->field($model, 'plant');
echo $form->field($model, 'station');
echo $form->field($model, 'oil_base',['options' => ['class' => 'hidden']]);
echo $form->field($model, 'numberDrivers',['options' => ['class' => 'hidden']]);
echo Html::submitButton('Сформировать', ['class' => 'btn btn-default']);
ActiveForm::end();
?>
Код:
$('#application1-delivery_method').change(function () {
var id = $(this).val();
var plant = $('.field-application1-plant');
var station = $('.field-application1-station');
var oil_base = $('.field-application1-oil_base');
var numberDrivers = $('.field-application1-numberdrivers');
if (id == 2) {
oil_base.removeClass('hidden');
numberDrivers.removeClass('hidden');
plant.addClass('hidden');
station.addClass('hidden');
} else {
oil_base.addClass('hidden');
numberDrivers.addClass('hidden');
plant.removeClass('hidden');
station.removeClass('hidden');
}
});