Yii - व्यवहार
व्यवहार yii \ base \ व्यवहार वर्ग के उदाहरण हैं। एक व्यवहार घटक और इसके साथ जुड़े गुणों को इंजेक्ट करता है। व्यवहार घटक द्वारा ट्रिगर की गई घटनाओं का जवाब भी दे सकता है।
Step 1 - एक व्यवहार को परिभाषित करने के लिए, का विस्तार करें yii\base\Behavior कक्षा।
namespace app\components;
use yii\base\Behavior;
class MyBehavior extends Behavior {
private $_prop1; public function getProp1() { return $this->_prop1;
}
public function setProp1($value) { $this->_prop1 = $value;
}
public function myFunction() {
// ...
}
}
उपरोक्त कोड एक संपत्ति (प्रोप 1) और एक विधि (myFunction) के साथ व्यवहार को परिभाषित करता है। जब यह व्यवहार किसी घटक से जुड़ा होता है, तो उस घटक का भी होगाprop1 संपत्ति और myFunction तरीका।
जिस घटक से व्यवहार जुड़ा हुआ है, उस तक पहुंचने के लिए, आप इसका उपयोग कर सकते हैं yii\base\Behavior::$owner property।
Step 2 - यदि आप घटक घटनाओं पर प्रतिक्रिया करने के लिए एक व्यवहार चाहते हैं, तो आपको ओवरराइड करना चाहिए yii\base\Behavior::events() तरीका।
namespace app\components;
use yii\db\ActiveRecord;
use yii\base\Behavior;
class MyBehavior extends Behavior {
public function events() {
return [
ActiveRecord::EVENT_AFTER_VALIDATE => 'afterValidate',
];
}
public function afterValidate($event) {
// ...
}
}
Step 3 - एक व्यवहार संलग्न करने के लिए, आपको ओवरराइड करना चाहिए behaviors() घटक वर्ग की विधि।
namespace app\models;
use yii\db\ActiveRecord;
use app\components\MyBehavior;
class MyUser extends ActiveRecord {
public function behaviors() {
return [
// anonymous behavior, behavior class name only
MyBehavior::className(),
// named behavior, behavior class name only
'myBehavior2' => MyBehavior::className(),
// anonymous behavior, configuration array
[
'class' => MyBehavior::className(),
'prop1' => 'value1',
'prop2' => 'value2',
'prop3' => 'value3',
],
// named behavior, configuration array
'myBehavior4' => [
'class' => MyBehavior::className(),
'prop1' => 'value1'
]
];
}
}
Step 4 - एक व्यवहार को अलग करने के लिए, कॉल करें the yii\base\Component::detachBehavior() तरीका।
$component->detachBehavior('myBehavior');
कार्रवाई में व्यवहार दिखाने के लिए, हमें डेटा की आवश्यकता है।
डीबी की तैयारी
Step 1- एक नया डेटाबेस बनाएँ। डेटाबेस को निम्नलिखित दो तरीकों से तैयार किया जा सकता है।
टर्मिनल में mysql -u root -p चलाएं ।
CREAT DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci के माध्यम से एक नया डेटाबेस बनाएं ;
Step 2 - में डेटाबेस कनेक्शन को कॉन्फ़िगर करें config/db.phpफ़ाइल। वर्तमान में उपयोग किए गए सिस्टम के लिए निम्न कॉन्फ़िगरेशन है।
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
Step 3 - रूट फोल्डर के अंदर run ./yii migrate/create test_table। यह कमांड हमारे DB को प्रबंधित करने के लिए एक डेटाबेस माइग्रेशन बनाएगी। माइग्रेशन फ़ाइल में दिखाई देना चाहिएmigrations प्रोजेक्ट रूट का फ़ोल्डर।
Step 4 - माइग्रेशन फ़ाइल संशोधित करें (m160106_163154_test_table.php इस मामले में) इस तरह से।
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160106_163154_test_table extends Migration {
public function safeUp() {
$this->createTable("user", [ "id" => Schema::TYPE_PK, "name" => Schema::TYPE_STRING, "email" => Schema::TYPE_STRING, ]); $this->batchInsert("user", ["name", "email"], [
["User1", "[email protected]"],
["User2", "[email protected]"],
["User3", "[email protected]"],
["User4", "[email protected]"],
["User5", "[email protected]"],
["User6", "[email protected]"],
["User7", "[email protected]"],
["User8", "[email protected]"],
["User9", "[email protected]"],
["User10", "[email protected]"],
["User11", "[email protected]"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
उपरोक्त प्रवासन एक बनाता है userइन फ़ील्ड्स के साथ तालिका: आईडी, नाम और ईमेल। यह कुछ डेमो उपयोगकर्ताओं को भी जोड़ता है।
Step 5 − परियोजना की जड़ से बाहर run./yii migrate डेटाबेस में माइग्रेशन लागू करने के लिए।
Step 6 - अब, हमें अपने लिए एक मॉडल बनाने की आवश्यकता है user table। सादगी के लिए, हम उपयोग करने जा रहे हैंGiiकोड जनरेशन टूल। इसे खोलोurl: http://localhost:8080/index.php?r=gii। फिर, "मॉडल जनरेटर" हेडर के तहत "प्रारंभ" बटन पर क्लिक करें। तालिका नाम ("उपयोगकर्ता") और मॉडल वर्ग ("MyUser") भरें, "पूर्वावलोकन" बटन पर क्लिक करें और अंत में, "जनरेट" बटन पर क्लिक करें।
MyUser मॉडल को मॉडल निर्देशिका में दिखाई देना चाहिए।