2014-05-18 31 views
14

लैरवेल में ग्रेवाटर यूआरएल को लागू करने का सबसे तेज़ तरीका क्या है? मेरे पास एक अनिवार्य ईमेल पता फ़ील्ड है, लेकिन मैं ग्रेवाटर के लिए एक नया कॉलम नहीं बनाना चाहता, और मैं देशी Auth::user() विशेषताओं का उपयोग करना पसंद करूंगा।मैं लैरावेल में ग्रेवटर को कैसे कार्यान्वित करूं?

उत्तर

32

बाहर निकलता है, आप अपने मॉडल में मौजूद विशेषताओं को बनाने के लिए लार्वाले म्यूटेटर का उपयोग कर सकते हैं। मान लें कि आप इसी users तालिका में एक अनिवार्य email स्तंभ के साथ एक User मॉडल है, बस अपने User मॉडल में इस छड़ी:

public function getGravatarAttribute() 
{ 
    $hash = md5(strtolower(trim($this->attributes['email']))); 
    return "http://www.gravatar.com/avatar/$hash"; 
} 

अब जब आप ऐसा करते हैं:

Auth::user()->gravatar 

आप मिल जाएगा gravatar.com यूआरएल आप उम्मीद कर रहे हैं। एक gravatar कॉलम, चर, विधि, या कुछ और बनाने के बिना।

+0

वाह, यह बहुत अच्छा – jhamPac

4

Wogan का जवाब थोड़ा पर विस्तार ...

एक अन्य उदाहरण एक विशेषता का उपयोग करते हुए: अभी (यानी उपयोगकर्ता) जहां Gravatar समर्थन करना चाहते हैं

namespace App\Traits; 

trait HasGravatar { 

    /** 
    * The attribute name containing the email address. 
    * 
    * @var string 
    */ 
    public $gravatarEmail = 'email'; 

    /** 
    * Get the model's gravatar 
    * 
    * @return string 
    */ 
    public function getGravatarAttribute() 
    { 
     $hash = md5(strtolower(trim($this->attributes[$this->gravatarEmail]))); 
     return "https://www.gravatar.com/avatar/$hash"; 
    } 

} 

किसी दिए गए मॉडल पर, बस विशेषता आयात और इसका इस्तेमाल करते हैं: मॉडल एक email स्तंभ/विशेषता नहीं है

use App\Traits\HasGravatar; 

class User extends Model 
{ 
    use HasGravatar; 
} 

हैं, तो बस की तरह अपने मॉडल के निर्माता में निर्धारित कर उस डिफ़ॉल्ट ओवरराइड इसलिए:

public function __construct() { 
    // override the HasGravatar Trait's gravatarEmail property 
    $this->gravatarEmail = 'email_address'; 
} 
+1

उत्कृष्ट है! हाँ, मैं लारवेल के साथ दो साल तक काम करने के बाद, अब निश्चित रूप से एक ट्राइट-आधारित दृष्टिकोण की सिफारिश करता हूं। @anderly साझा करने के लिए धन्यवाद! – Wogan

संबंधित मुद्दे