اذهب إلى المحتوى

السؤال

نشر

حصلت على الخطأ التالي عند استخدام Mailable:

Too few arguments to function App\Mail\ContactUs::__construct(), 1 passed in /home/xashfyhd/public_html/xashnetwork/app/Http/Controllers/contactController.php on line 39 and exactly 4 expected

ولكني قمت بتمرير 4 معاملات فما المشكلة؟

<?php

namespace App\Mail;

use Illuminate\Mail\Mailables\Address;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class ContactUs extends Mailable
{
    use Queueable, SerializesModels;

    public $subject, $message, $name, $email;

    /**
     * Create a new message instance.
     */
    public function __construct($subject, $message, $name, $email)
    {
        $this->subject = $subject;
        $this->message = $message;
        $this->name = $name;
        $this->email = $email;
    }

    /**
     * Get the message envelope.
     */
    public function envelope(): Envelope
    {
        return new Envelope(
            from: new Address($this->email, $this->name),
            subject: $this->subject,
        );
    }

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            view: 'pages.contact-template',
        );
    }

    /**
     * Get the attachments for the message.
     *
     * @return array<int, \Illuminate\Mail\Mailables\Attachment>
     */
    public function attachments(): array
    {
        return [];
    }
}

 

Recommended Posts

  • 0
نشر

اذا كنت متأكد من انك تمرر 4 معاملات وليس واحد " من الممكن اضافة الجزء الذي تمرر فيه المعاملات في المشكلة حتى نرى اذا كانت هناك مشكلة بها" ولكن اذا كنت متأكد. من الممكن انك لم تمررهم بالترتيب الصحيح  ترتيبك يجب ان يكون : -
1-  subject 
2- message 
3- name 
4- email 
و من الممكن ان يكون الخطأ في تمرير المعاملات و يمكنك التأكد من تمرير المعاملات كالتالي :- 
يمكنك بعد تخزين المعاملات في متغيرات كالتالي :- 
;subject = $request->input('subject')$
;message = $request->input('message')$
;name = $request->input('name')$
;email = $request->input('email')$
بعد ذلك يمكنك استخدامها للتأكد من صحتها عن طريق if condition كالتالي :- 
if (empty($subject))
{ ;throw new Exception('Subject is required') }
وهكذا مع كل متغير او يمكنك طباعة المتغير لتتأكد من انه كما تكون ان متوقعه

  • 0
نشر

يبدو أنك تواجه مشكلة مع تمرير المعاملات إلى الكلاس ContactUs الذي يرث من Mailable. الخطأ يشير إلى أنه تم تمرير معامل واحد فقط بينما يتوقع الكلاس أربعة معاملات. يجب التأكد من أنك تمرر العدد الصحيح من المعاملات وبالترتيب الصحيح عند إنشاء الكائن ContactUs.

تحقق من الكنترولر (contactController.php):

تأكد من أنك تمرر جميع الأربعة المعاملات المطلوبة ($subject, $message, $name, $email) عند إنشاء كائن من كلاس ContactUs في contactController.php.

مثال:
 

$contactUs = new ContactUs($subject, $message, $name, $email);

تأكد من صحة البيانات:

تحقق من أن البيانات التي تمررها إلى الكلاس ContactUs صحيحة وأنها لا تحتوي على أي نوع من الأخطاء.

مراجعة إعدادات البريد في Laravel:

تأكد من أن إعدادات البريد في ملف الكونفج config/mail.php معدة بشكل صحيح.

استخدام الدوال المدمجة في Mailable:

بدلاً من تعريف الدوال envelope() و content()، يمكنك استخدام الدوال المدمجة في كلاس Mailable مثل view() و from() و subject() مباشرة في دالة build().

مثال:
 

public function build()
{
    return $this->from($this->email, $this->name)
                ->subject($this->subject)
                ->view('pages.contact-template');
}

التأكد من مسار العرض (view):

تأكد من أن المسار المحدد في view('pages.contact-template') صحيح وأن ملف العرض موجود ويمكن الوصول إليه.

إذا استمرت المشكلة، يمكنك مشاركة المزيد من التفاصيل أو الكود الموجود في contactController.php حتى نتمكن من تقديم مساعدة أكثر تحديدًا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...