入力したテキストの長さを確認しようとしていますが、成功しません。私はthe field is empty
エラーが発生しますが、鉱山の検証ではないので、required
ルールで動作しています。私のカスタムルールは、フォームの送信時にのみ機能します。フォームのAjax検証を有効にしようとしましたが、もう一度何も試みませんでした。テキスト長のカスタムAjax検証が機能しないyii2
public function rules()
{
return [
[['author_id', 'title', 'review'], 'required'],
[['author_id'], 'integer'],
[['review'], 'string'],
[['review'], function($attribute, $params){
if(strlen($this->$attribute) < 10){
$this->addError($attribute, 'The review is too short! Minimum 10 symbols!');
}
}],
[['review'], 'trim'],
[['dt'], 'safe'],
[['title'], 'string', 'max' => 255],
[['author_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['author_id' => 'id']],
[['post_id'], 'exist', 'skipOnError' => true, 'targetClass' => News::className(), 'targetAttribute' => ['post_id' => 'id']],
];
}
マイ形式:
<?php $form=\yii\bootstrap\ActiveForm::begin([
'method' => 'post',
'options' => [
'id' => 'textarea_' . $model->id . '',
'class' => "textarea_review"
],
]) ?>
<input type="hidden" name="flag" value="1"/>
<input type="hidden" name="model_id" value="<?= $model->id ?>"/>
<?= $form->field($model, 'review')->textarea(['id'=>'update_text_'.$model->id.''])->label(false) ?>
<?= $form->field($model, 'csrf_token')->hiddenInput(['value' => $session['token']])->label(false) ?>
<?= Html::button('Изпрати', ['onclick'=>'editComment('.$model->id.')', 'class'=>'btn btn-primary send-button']) ?>
<?php \yii\bootstrap\ActiveForm::end() ?>
は、事前にありがとうございます!
ありがとうございました!今のところ私は最初のオプションを使用します。 –