laravel发送联系表单undefined

时间:2018-03-07 11:21:25

标签: php forms laravel email contact

我试图在Laravel中创建与我联系的表格。我已经通过这个视频教程完成了所有工作:Tutorial contact form

但是我收到错误消息未定义变量msg,教程显示写{{$ msg}},但这个确实帮助了我。我仍然收到错误。

C:\xampp\htdocs\Test_Laravel\storage\framework\views\6c44dde2262c879ae62542101a1d606f6a8b645b.php
<?php echo e($msg); ?>
Arguments
"Undefined variable: msg (View: C:\xampp\htdocs\Test_Laravel\resources\views\emails\contact-message.blade.php)"

这是我的路线:

Route::get('/contact',['uses' => 'ContactMessageController@create']);
Route::post('/contact',['uses' => 'ContactMessageController@store','as' => 'contact.store']);

这是我的控制器:

<?php

namespace App\Http\Controllers;

use Mail;
use Illuminate\Http\Request;

class ContactMessageController extends Controller
{
    public function create()
    {
        return view('contact');
    }

    public function store(Request $request)
    {
        $this -> validate($request, [
            'name' => 'required',
            'email' => 'required|email',
            'message' => 'required'
        ]);

        Mail::send('emails.contact-message', [
            'message' => $request->message], 
            function ($mail) use($request) {
                $mail->from($request->email, $request->name);

                $mail->to('kristijanask@gmail.com')->subject('Contact Message');
        });

        return redirect()->back()->with('flash_message', 'Jūsų žinutė išsiųsta');
    }
}

这是我的contact.blade.php:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
        <style>
            .invalid-feedback {
                display: block;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <h1>Klausti</h1>
            <div class="row">
                <div class="col-md-6">
                    @if (Session::has('flash_message'))
                        <div class="alert alert-success">{{ Session::get('flash_message') }}</div>
                    @endif
                    <form method="POST" action="{{ route('contact.store') }}">
                        {{ csrf_field() }}
                        <div class="form-group">
                            <label>Pavadinimas:</label>
                            <input type="text" class="form-control" name="name">
                            @if ($errors->has('name'))
                                <small class="form-text invalid-feedback">{{ $errors->first('name') }}</small>
                            @endif
                        </div>
                        <div class="form-group">
                            <label>El. Paštas:</label>
                            <input type="text" class="form-control" name="email">
                            @if ($errors->has('email'))
                                <small class="form-text invalid-feedback">{{ $errors->first('email') }}</small>
                            @endif
                        </div>
                        <div class="form-group">
                            <label>Jūsų komentaras:</label>
                            <textarea name="message" class="form-control"></textarea>
                            @if ($errors->has('message'))
                                <small class="form-text invalid-feedback">{{ $errors->first('message') }}</small>
                            @endif
                        </div>
                        <button class="btn btn-primary">Siųsti</button>
                    </form>
                </div>
            </div>
        <div>
    </body>
</html>

这是我的contact-message.blade.php

{{ $msg }}

也许有些建议为什么它不像教程一样工作?

2 个答案:

答案 0 :(得分:3)

Mail::send('emails.contact-message', [
        'message' => $request->message],  // you did pass a 'message' variable here,
                                          // that's why your view can't find $msg variable
        function ($mail) use($request) {
            $mail->from($request->email, $request->name);

            $mail->to('kristijanask@gmail.com')->subject('Contact Message');
});

您实际上声明了$message变量,而不是$msg。请尝试使用$message。或者将上面的代码更改为:

Mail::send('emails.contact-message', [
            'msg' => $request->message
] ...

答案 1 :(得分:0)

非常感谢您的回答。当我将其更改为$ message时,我收到错误消息: var showChar = 100; //Number of characters to show $(".more").each(function() { var textWrap = $(this).find(".my-text-wrap"); var fullText = textWrap.html(); textWrap.html(fullText.substring(0,showChar)); $(this).find("ul").hide(); // Hiding the list }

当我改变它你提供的方式,从消息到msg的变量,然后我不再收到错误,但是当我填写表格时我没有得到确认消息,即你的消息已被发送。

相关问题