Intereting Posts
Выпадающее меню подтверждения CodeIgniter PHP: упорядочить ассоциативный массив Шифрование с помощью PHP, расшифровка с помощью Javascript (cryptojs) Список каталогов, содержащих символы Unicode в Windows Посмотрите, содержит ли одна строка другую строку Как написать хранимую процедуру с использованием phpmyadmin и как ее использовать через php? Не удается подключиться к PostgreSQL с помощью PHP pg_connect () Отправить почту из необработанного тела для целей тестирования регулярное выражение youtube удалите символы Unicode, но сохраните все специальные и английские символы с preg_replace Подключить автономный скрипт к joomla DB с помощью фреймворка количество повторяющихся элементов в массиве в php Обновите или создайте постоянный токен доступа к Facebook, чтобы опубликовать страницу приложения Использование $ .post для отправки JS-переменных в PHP-скрипт Как отсортировать результаты MySQL с буквами сначала, символы последними?

Проверка уникальной электронной почты с помощью DynamicFormWidget – Yii2

Я использую DynamicFormWidget для нескольких полей ввода, таких как: first_name , last_name , email & mobile_no . И я не хочу, чтобы пользователь вводил существующий email . Средства, email должны быть уникальными. Он работает, когда я не использую DynamicFormWidget . На самом деле, я не знаю, как проверить уникальную электронную почту в нескольких форматах ввода, используя Yii2.

addmembers.php (Просмотр)

 <?php use yii\helpers\Html; use yii\widgets\ActiveForm; use wbraganca\dynamicform\DynamicFormWidget; ?> <?php DynamicFormWidget::begin([ 'widgetContainer' => 'dynamicform_wrapper', 'widgetBody' => '.container-items', 'widgetItem' => '.house-item', 'limit' => 10, 'min' => 1, 'insertButton' => '.add-house', 'deleteButton' => '.remove-house', 'model' => $modelsTeamMembers[0], 'formId' => 'dynamic-form', 'formFields' => ['description',], ]); ?> <table class="table table-bordered table-striped"> <thead> <tr> <th>First Name</th> <th>Last Name</th> <th>Email</th> <th>Mobile Number</th> </tr> </thead> <tbody class="container-items"> <?php foreach ($modelsTeamMembers as $indexMember => $modelTeamMembers): ?> <tr class="house-item"> <td class="vcenter"> <?php if (! $modelTeamMembers->isNewRecord) { echo Html::activeHiddenInput($modelTeamMembers, "[{$indexMember}]id"); } ?> <?= $form->field($modelTeamMembers, "[{$indexMember}]first_name")->label(false) ?> </td> <td> <?= $form->field($modelTeamMembers, "[{$indexMember}]last_name")->label(false) ?> </td> <td> <?= $form->field($modelTeamMembers, "[{$indexMember}]email",['enableAjaxValidation' => true])->label(false) ?> </td> <td> <?= $form->field($modelTeamMembers, "[{$indexMember}]mobile_no",['inputOptions' => ['class' => 'form-control', 'maxlength'=>"10"]])->label(false) ?> </td> </tr> <?php endforeach; ?> - <?php use yii\helpers\Html; use yii\widgets\ActiveForm; use wbraganca\dynamicform\DynamicFormWidget; ?> <?php DynamicFormWidget::begin([ 'widgetContainer' => 'dynamicform_wrapper', 'widgetBody' => '.container-items', 'widgetItem' => '.house-item', 'limit' => 10, 'min' => 1, 'insertButton' => '.add-house', 'deleteButton' => '.remove-house', 'model' => $modelsTeamMembers[0], 'formId' => 'dynamic-form', 'formFields' => ['description',], ]); ?> <table class="table table-bordered table-striped"> <thead> <tr> <th>First Name</th> <th>Last Name</th> <th>Email</th> <th>Mobile Number</th> </tr> </thead> <tbody class="container-items"> <?php foreach ($modelsTeamMembers as $indexMember => $modelTeamMembers): ?> <tr class="house-item"> <td class="vcenter"> <?php if (! $modelTeamMembers->isNewRecord) { echo Html::activeHiddenInput($modelTeamMembers, "[{$indexMember}]id"); } ?> <?= $form->field($modelTeamMembers, "[{$indexMember}]first_name")->label(false) ?> </td> <td> <?= $form->field($modelTeamMembers, "[{$indexMember}]last_name")->label(false) ?> </td> <td> <?= $form->field($modelTeamMembers, "[{$indexMember}]email",['enableAjaxValidation' => true])->label(false) ?> </td> <td> <?= $form->field($modelTeamMembers, "[{$indexMember}]mobile_no",['inputOptions' => ['class' => 'form-control', 'maxlength'=>"10"]])->label(false) ?> </td> </tr> <?php endforeach; ?> 

UsersController.php (контроллер)

 <?php namespace app\modules\users\controllers; use Yii; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; use yii\swiftmailer\Mailer; use yii\filters\AccessControl; use yii\web\Response; use yii\widgets\ActiveForm; class UsersController extends CommonController { public function actionAddmembers() { if(Yii::$app->request->isAjax && $modelUser->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($modelUser); } elseif ($modelUser->load(Yii::$app->request->post())) { . . } } } 

Пользователи.php (модель)

 namespace app\modules\users\models; use Yii; use app\models\MyActiveRecord; use yii\web\IdentityInterface; class Users extends MyActiveRecord implements IdentityInterface { public $rememberMe; public $confirm_password; public $verify_code; public $_user = false; public static function tableName() { return 'users'; } public function rules() { return [ . . //Email ID 'emailTrim' => ['email', 'filter', 'filter' => 'trim'], 'emailRequired' => ['email', 'required','message'=>'* required field'], 'emailPattern' => ['email', 'email'], 'emailUnique' => ['email', 'unique','message'=>'Email already exists!'], ]; } . . . } 

Я также пробовал:

UsersController.php (контроллер)

 public function actionAddmembers() { $modelUser = new Users(); $modelCompanyUser = new CompanyUsers(); $modelCompany = new Company(); $modelsTeamMembers = [new Users]; $modelUserDetails = MyActiveRecord::createMultiple(Users::classname()); MyActiveRecord::loadMultiple($modelUserDetails, Yii::$app->request->post()); if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ArrayHelper::merge(ActiveForm::validateMultiple($modelUserDetails)); } elseif($modelUser->load(Yii::$app->request->post())){ . . } } 

Я следую yii2-dynamicform

Любая помощь / намек / предложение будут заметны.

    Да. Я понял. Если у кого есть такая же проблема, используйте этот код. Измените переменную $modelUserDetails везде, где это необходимо.

    Я использую DynamicFormWidget .

    И я хотел проверить почту по email . Так,

    addmembers.php (просмотреть)

    Используйте use yii\widgets\ActiveForm; в верхней части страницы. И, поместите 'enableAjaxValidation' => true в поле, где вы хотите, чтобы пользователь ограничивал ввод двойного значения.

     use yii\widgets\ActiveForm; // This is mandatory. . . <?= $form->field($modelTeamMembers, "[{$indexMember}]email",['enableAjaxValidation' => true]);?> . . 

    UsersController.php (контроллер)

     <? // These two lines are mandatory. use yii\web\Response; use yii\widgets\ActiveForm; .. public function actionAddMembers() { . . $modelUserDetails = MyActiveRecord::createMultiple(Users::classname()); MyActiveRecord::loadMultiple($modelUserDetails, Yii::$app->request->post()); // ajax validation if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validateMultiple($modelUserDetails); } elseif ($modelUser->load(Yii::$app->request->post())) { // Business Logic } } 

    Пользователи.php (модель)

     class Users extends MyActiveRecord implements IdentityInterface { . . . public function rules() { return [ . . ['email', 'unique','message'=>'Email already exists!'], ]; } } 

    Это, безусловно, поможет.