yii2
मान्यकरण
खोज…
Yii2 में डेटाबेस से अद्वितीय मान को मान्य करें
पाठ बॉक्स में मौजूदा मान दर्ज किए जाने पर त्रुटि संदेश प्रदर्शित नहीं करने के बारे में कुछ लोगों के पास समस्या है।
इसलिए, उदाहरण के लिए, मैं उपयोगकर्ता को मौजूदा ईमेल दर्ज करने की अनुमति नहीं दे रहा हूँ।
signup.php
(पेज जहां आप मौजूदा ईमेल आईडी के बिना नए उपयोगकर्ता को साइन अप करना चाहते थे)
-
use yii\bootstrap\ActiveForm;
(अगर मौजूद है) -
use yii\widgets\ActiveForm;
-
'enableAjaxValidation' => true
जोड़ें (उस फ़ील्ड में जहां आप उपयोगकर्ता को मौजूदा ईमेल आईडी दर्ज करने के लिए रोकना चाहते हैं।)
<?php
use yii\bootstrap\ActiveForm;
use yii\widgets\ActiveForm;
?>
<?= $form->field($modelUser, 'email',['enableAjaxValidation' => true])
->textInput(['class'=>'form-control','placeholder'=>'Email']); ?>
नियंत्रक
इन लाइनों को शीर्ष use yii\web\Response;use yii\widgets\ActiveForm;
<?php
use yii\web\Response;
use yii\widgets\ActiveForm;
.
.// Your code
.
public function actionSignup() {
$modelUser = new User();
//Add This For Ajax Email Exist Validation
if(Yii::$app->request->isAjax && $modelUser->load(Yii::$app->request->post())){
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($modelUser);
}
else if ($model->load(Yii::$app->request->post())) {
}
}
?>
नमूना
[['email'],'unique','message'=>'Email already exist. Please try another one.'],
डेटाबेस से अद्वितीय मूल्य मान्य करना: अद्वितीय सत्यापन
यदि मौजूदा मान दर्ज किया जा रहा है तो कुछ लोगों के पास त्रुटि संदेशों के बारे में समस्याएँ नहीं हैं। उदाहरण के लिए, मैं एक मौजूदा ईमेल के साथ एक उपयोगकर्ता पंजीकरण की अनुमति नहीं दे रहा हूं।
राय
<?php
......................
<?= $form->field($modelUser, 'email')->textInput(['class'=>'form-control','placeholder'=>'Email']) ?>
......................
नियंत्रक
<?php
use yii\web\Response; // important lines
use yii\widgets\ActiveForm; // important lines
.
.// Your code
.
public function actionSignup()
{
$modelUser = new User();
//Add This For Ajax Validation
if(Yii::$app->request->isAjax && $modelUser->load(Yii::$app->request->post())){
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($modelUser);
}
if ($modelUser->load(Yii::$app->request->post()) && $modelUser->save()) {
return $this->redirect(['someplace nice']);
}
return $this->render('update', [
'modelUser' => $modelUser,
]);
}
नमूना
public function rules()
{
return [
..............
['email', 'unique', 'message'=>'Email already exist. Please try another one.'],
...........
]
}
फोकस / कुंजी अप पर मान्य त्रुटि संदेश अक्षम करें
डिफ़ॉल्ट त्रुटि संदेश textbox
नीचे दिखाई देता है <div class="help-block"></div>
पर keyUp पर या सबमिट बटन दबाने के बाद यदि कोई सत्यापन बाधाएं पूरी नहीं हुई हैं।
कभी-कभी हम चाहते हैं कि केवल सबमिट करें पर कोई संदेश हो या onKeyup
इवेंट में कोई सत्यापन न हो।
चलो yii2/widgets/ActiveForm.php
फ़ाइल की जाँच करें:
<?php
namespace yii\widgets;
use Yii;
use yii\base\InvalidCallException;
use yii\base\Widget;
use yii\base\Model;
use yii\helpers\ArrayHelper;
use yii\helpers\Url;
use yii\helpers\Html;
use yii\helpers\Json;
class ActiveForm extends Widget
{
public $action = '';
public $method = 'post';
public $options = [];
.
.
.
public $validateOnSubmit = true;
public $validateOnChange = true;
public $validateOnBlur = true;
public $validateOnType = false;
.
.
.
}
वहाँ हम देखते हैं कि $validateOnBlur
डिफ़ॉल्ट रूप से true
सेट है। प्रपत्र का उपयोग करते समय हमें इसे ओवरराइड करने की आवश्यकता है, इसलिए फ्रेमवर्क फ़ाइलों को बदलना बहुत बुरी बात है:
<?php $form = ActiveForm::begin([ 'id' => 'register-form','validateOnBlur' => false]); ?>
मूल्यांकन में परिदृश्य
परिदृश्य का उपयोग करके आप विभिन्न स्थिति पर सत्यापन कर सकते हैं
मॉडल वर्ग में परिदृश्य को परिभाषित करें
class User extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'user_master';
}
// define validation in rule() function
public function rules()
{
return [
[['email_id'],'email'],
[['first_name',],'required','on'=>['create','update']], // create scenario
[['email_id',],'required','on'=> ['admin','create','update','forgotpassword']],
[['mobile',],'required','on'=>['admin','create','update']],
];
}
}
नियंत्रक में परिदृश्य का उपयोग करें
public function actionCreate()
{
$model = new User();
$model->scenario="create"; // use create scenario, create scenario validaion applied in this model
}
public function actionUpdate()
{
$model = new User();
$model->scenario="update"; // use update scenario, update scenario validaion applied in this model
}
मान्य सरणी
Yii2 संस्करण 2.0.4 के बाद से प्रत्येक आइटम को एक सरणी में मान्य करने के लिए प्रयोग किया जाता है।
[
// ... other rules
['userIDs', 'each', 'rule' => ['integer']],
]
['integer']
भाग हर दूसरी सत्यापनकर्ता वस्तु हो सकती है जो Yii2 प्रदान करती है और सत्यापनकर्ता के लिए विशिष्ट तर्क रख सकती है। जैसे: ['integer', 'min' => 1337]
। यदि उपयोगकर्ताआईडी में कोई सरणी नहीं है तो नियम सत्यापन विफल हो जाएगा।
यदि आप केवल यह देखना चाहते हैं कि क्या किसी विशेषता में सामग्री को मान्य किए बिना एक सरणी है जिसमें आप अपना सत्यापनकर्ता लिख सकते हैं।
[
['myAttr', function($attribute, $params) {
if (!is_array($this->$attribute)) {
$this->addError($attribute, "$attribute isn't an array!");
}
}]
]