我试图在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 }}
也许有些建议为什么它不像教程一样工作?
答案 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的变量,然后我不再收到错误,但是当我填写表格时我没有得到确认消息,即你的消息已被发送。