У меня есть одна форма, в которой есть поля ниже
i)Книга ii)Сумма
Действие контроллера:
public function actionBook()
{
$model = new Book();
if ($model->load(Yii::$app->request->post()) && $model->validate()){
print_r($model);exit;
return $this->redirect('/Book');
}
$model->getBook();
return $this->render('BookForm', ['model' => $model]);
}
Всякий раз, когда эта страница загружается, я по умолчанию вызываю одну функцию модели, это функция getBook().
Модель:
public book;
public amount;
public showAmountField;
public function rules()
{
return [
[['book'], 'required'],
['amount', 'required', 'when' => function($model) {
return $model->showAmountField == true;
}],
];
}
public function getBook()
{
if(some condition here){
$this->showAmountField = true;
}
}
поэтому всякий раз, когда showAmountField имеет значение true в то время, когда требуется поле суммы, в противном случае оно не потребуется, здесь все работает нормально, и проверка на стороне клиента также работает нормально, но когда я изменяю идентификатор поля суммы с помощью консоли (f12) в то время проверка на стороне сервера не работает, и форма просто отправляется с пустым полем суммы, так что здесь не так. Пожалуйста, объясните кто-нибудь.
ОБНОВЛЕНИЕ
Вид
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
$this->params['breadcrumb'] = $model->breadCrumbs;
?>
<?php $form = ActiveForm::begin([
'id' => 'book-form',
'options' => ['class' => 'form-horizontal'],
]);
?>
<?= $form->field($model, 'book')->textInput()->label("Book"); ?>
<?php if($model->showAmountField): ?>
<?= $form->field($model, 'amount')->textInput()->label("Amount"); ?>
<?php endif; ?>
<?= $form->errorSummary($model, ['header' => '']); ?>
<?php ActiveForm::end(); ?>