yii2

2015-01-09 10 views
17

में उपयोगकर्ता का नाम प्राप्त करें yii2 में लॉग-इन-उपयोगकर्ता का नाम मैं कैसे प्राप्त कर सकता हूं? मैंyii2

Yii::$app->user->id; 

साथ उपयोगकर्ता के आईडी प्राप्त कर सकते हैं और मुझे पता है कि मैं डेटाबेस में नाम मिल सकता है, लेकिन मैं एक सीधा रास्ता चाहते हैं। डेटाबेस में नाम-स्तंभ नाम "उपयोगकर्ता नाम" है, लेकिन

Yii::$app->user->username; 

काम नहीं करता है और

Yii::$app->user->name;  

या तो काम नहीं करता।

उत्तर

26

लॉगिन पर उपयोगकर्ता की जानकारी Yii::$app->user->identity चर में संग्रहीत की जाएगी।

अधिक जानकारी के लिए आधिकारिक मार्गदर्शिका में User Authentication documentation के माध्यम से पढ़ा गया है।

4

@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, जो गहराई में इस में थोड़ा और अधिक शामिल किया गया है लिखा था।

+1

आप '\ Yii :: $ app-> उपयोगकर्ता-> पहचान' के बजाय '$ this-> पहचान' का उपयोग कर सकते थे। – vher2