मेल करने योग्य के माध्यम से उपयोगकर्ता को आमंत्रण बनाने और लिंक भेजने का प्रयास करते समय मुझे एक त्रुटि मिल रही है। आमंत्रण के सफल निर्माण पर, मैं सफलतापूर्वक मेल भेजने में सक्षम हूं। लेकिन जब मैं वेरिएबल $invitation को App\Mail\InvitationCreated में पास करने का प्रयास कर रहा हूं, तो मुझे मेल करने योग्य में वेरिएबल को इनिशियलाइज़ करने के बाद भी एक त्रुटि मिल रही है। __construct(Invitation $invitation).

कृपया यहां इस मुद्दे को समझने में मेरी सहायता करें।

ऐप्लिकेशन\मॉडल\निमंत्रण

class Invitation extends Model
{
    use HasFactory;

    protected $fillable = [
        'email', 'invitation_token', 'registered_at',
    ];

    public function generateInvitationToken() {
        $this->invitation_token = substr(md5(rand(0, 9) . $this->email . time()), 0, 32);
    }

    public function getLink() {
        return urldecode(route('register') . '?invitation_token=' . $this->invitation_token);
    }
}

App\Http\Livewire\InvitationController

use Illuminate\Support\Facades\Mail;

use App\Models\Invitation;
use App\Mail\InvitationCreated;

class InvitationController extends Component
{
    use WithPagination;

    public $showEditModal = false;
    public Invitation $invitation;

    protected $rules = [
        'invitation.email' => 'required | email | max:255 | unique:users,email',
    ];

    public function mount()
    {
        $this->invitation = new Invitation();
    }

    public function save()
    {
        $this->validate();
        $this->invitation->generateInvitationToken();
        $invitation = $this->invitation->save();
        $this->showEditModal = false;

        Mail::to($this->invitation->email)->send(new InvitationCreated($invitation));
    }
}

ऐप\एचटीपी\मेल\निमंत्रण बनाया गया

use App\Models\Invitation;

class InvitationCreated extends Mailable
{
    use Queueable, SerializesModels;

    public function __construct(Invitation $invitation)
    {
        $this->invitation = $invitation;
    }

    public function build()
    {
        return $this->from('server@localhost.com')->view('emails.invite-created');
    }
}

संसाधन\विचार\ईमेल\आमंत्रित-निर्मित

<p>Hi,</p>
<p>Someone has invited you to access their account.</p>
 
<a href="{{ $invitation->getLink() }}">Click here</a> to activate!

त्रुटि जो मुझे मिल रही है

Argument 1 passed to App\Mail\InvitationCreated::__construct() must be an instance of App\Models\Invitation, bool given, called in C:\xampp\htdocs\2020\app\Http\Livewire\Backend\UserManagement\InvitationController.php on line 54
1
ToxifiedHashkey 3 पद 2020, 09:42

1 उत्तर

सबसे बढ़िया उत्तर

ये कोशिश करें

Mail::to($this->invitation->email)->send(new InvitationCreated($this->invitation));

$invitation से $this->invitation

जैसा कि $invitation = $this->invitation->save(); यह कोड सही या गलत लौटाता है, डेटा सहेजा जाता है या नहीं

ताकि आप सार्वजनिक संपत्ति से instance of App\Models\Invitation प्राप्त कर सकें $this->invitation


मेल दृश्य में डेटा भेजने के लिए आपको सार्वजनिक संपत्ति बनाने की आवश्यकता है

use App\Models\Invitation;

class InvitationCreated extends Mailable
{
    use Queueable, SerializesModels;

    public $invitation;

    public function __construct(Invitation $invitation)
    {
        $this->invitation = $invitation;
    }

    public function build()
    {
        return $this->from('server@localhost.com')->view('emails.invite-created');
    }
}
1
Kamlesh Paul 3 पद 2020, 09:53