57431


laravelでページ制作を行っており、そこでのメール送信時のエラーについての質問です。  
出ているエラーが以下になります。

> Too few arguments to function App\Mail\ContactreceiverMail::__construct(), 0
> passed in

お問い合わせフォームから必要事項を入力した後に確認ボタンを押すとメールが送信されるようにしたいのですが、エラーに詰まって解決できません。

[code]

    class TestController extends Controller
    {
        public function contact() {
            return view('test.contact');//問い合わせフォーム表示
        }
    
        public function contact_request() {
            \Mail::to('test@example.com')->send(new ContactreceiverMail());//メール送信
            return view('test.contact_thank');
        }
    }
    
[/code]

[code]

    class ContactreceiverMail extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
    
        protected $contact;
    
        public function __construct(Contact $contact)//ここでエラーが出ている
        {
            $this->contact = $contact;
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this->from('example@example.com')->subject('サイトからのお問い合わせについて')->view('email.contact_receiver');
        }
    
[/code]

[code]

    <div>
        <form action="/contact" method="post">
        @csrf
            <h1 class="contact-title">お問い合わせ 内容入力</h1>
            <p>お問い合わせ内容をご入力の上、「確認画面へ」ボタンをクリックしてください。</p>
            <div>
                <div>
                    <label>お名前<span>必須</span></label>
                    <input type="text" name="name" placeholder="例）山田太郎">
                </div>
                <div>
                    <label>お問い合わせ内容<span>必須</span></label>
                    <textarea name="content" rows="5" placeholder="お問合せ内容を入力"></textarea>
                </div>
            </div>
            <input type="submit" value="メール送信"/>
        </form>
    </div>
    
[/code]


CC BY-SA 4.0
2019-08-16T19:31:14.787
57412
2019-08-18T14:22:29.293
2019-08-16T19:56:13.113
32986
35487
question
laravel mail
laravelでのメール送信時のエラーについて


「Too few
arguments」とあるように、`ContactreceiverMail`のコンストラクタの第一引数に`Contact`が指定されているのに引数をなにも指定せずに呼びだしているためのエラーです。

`Contact`の実体がなにであるかわかりませんが(Modelでしょうか)、例えば`send(new ContactreceiverMail(new
Contact()));`のように指定すればひとまずこのエラーは回避できるでしょう。おそらく実際にはこれにフォームで送信されたデータを保存したものを用いるのでしょうが……


CC BY-SA 4.0
2019-08-18T14:22:29.293
57431
2019-08-18T14:22:29.293
2376
57412
answer