@thepeach कामों के उत्तर के दौरान, आप वास्तव में उपयोगकर्ता घटक का विस्तार कर सकते हैं और अपने स्वयं के फ़ंक्शंस जोड़ सकते हैं, ताकि आप उन्हें Yii::$app->user->something
के माध्यम से प्राप्त कर सकें, जैसा कि आप शुरू में करने की कोशिश कर रहे थे।
मुझे शुरुआत से इस तरह की चीजों को विस्तारित करना पसंद है, इसलिए मैं किसी भी कोड को दोबारा बिना कस्टम कार्यक्षमता जोड़ने के लिए तैयार हूं। यह चीजों को एक तरह से करने के लिए बेकार है, फिर वापस जाना है और 100 स्पॉट कोड को ठीक करना है, क्योंकि आपने इसे बाद में बदल दिया है।
पहले, अपने config में एक उपयोगकर्ता घटक वर्ग को परिभाषित:
'components' => [
'user' => [
'class' => 'app\components\User', // extend User component
],
],
फिर अपने components
निर्देशिका में User.php
पैदा करते हैं। यदि आपने यह निर्देशिका नहीं बनाई है, तो इसे अपने ऐप रूट में बनाएं।
User.php
<?php
namespace app\components;
use Yii;
/**
* Extended yii\web\User
*
* This allows us to do "Yii::$app->user->something" by adding getters
* like "public function getSomething()"
*
* So we can use variables and functions directly in `Yii::$app->user`
*/
class User extends \yii\web\User
{
public function getUsername()
{
return \Yii::$app->user->identity->username;
}
public function getName()
{
return \Yii::$app->user->identity->name;
}
}
अब आप Yii::$app->user->something
से एक्सेस कर सकते।
उदाहरण के लिए, अपने विचारों में से एक में यह डाल दिया और आपके ब्राउज़र में पृष्ठ का उपयोग:
<?= \Yii::$app->user->username ?>
मैं एक अधिक विस्तृत जवाब here, जो गहराई में इस में थोड़ा और अधिक शामिल किया गया है लिखा था।
स्रोत
2016-07-16 20:57:22
आप '\ Yii :: $ app-> उपयोगकर्ता-> पहचान' के बजाय '$ this-> पहचान' का उपयोग कर सकते थे। – vher2