使用laravel 4.2从阵列发送电子邮件时通过post方法取消定义变量

时间:2016-05-18 05:22:56

标签: laravel-4.2

我试图从我的表单中获取数据并将其发送到电子邮件地址。问题是我的变量未定义。我在当前项目中使用 <html> <head> <style> .error {color: #FF0000;} </style> </head> <body> <?php // define variables and set to empty values $nameErr = $emailErr = $genderErr = $websiteErr = ""; $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; }else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "Email is required"; }else { $email = test_input($_POST["email"]); // check if e-mail address is well-formed if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; } } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); } if (empty($_POST["comment"])) { $comment = ""; }else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "Gender is required"; }else { $gender = test_input($_POST["gender"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>Absolute classes registration</h2> <p><span class = "error">* required field.</span></p> <form method = "post" action = ">?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <table> <tr> <td>Name:</td> <td><input type = "text" name = "name"> <span class = "error">* <?php echo $nameErr;?></span> </td> </tr> <tr> <td>E-mail: </td> <td><input type = "text" name = "email"> <span class = "error">* <?php echo $emailErr;?></span> </td> </tr> <tr> <td>Time:</td> <td> <input type = "text" name = "website"> <span class = "error"><?php echo $websiteErr;?></span> </td> </tr> <tr> <td>Classes:</td> <td> <textarea name = "comment" rows = "5" cols = "40"></textarea></td> </tr> <tr> <td>Gender:</td> <td> <input type = "radio" name = "gender" value = "female">Female <input type = "radio" name = "gender" value = "male">Male <span class = "error">* <?php echo $genderErr;?></span> </td> </tr> <td> <input type = "submit" name = "submit" value = "Submit"> </td> </table> </form> <?php echo "<h2>Your given values are as:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body> </html>

这是我的表单截图:

enter image description here

这是错误信息: -

enter image description here

这在我的表单代码中:

laravel4.2

这是我的帖子控制器:

<form method="post" action="{{URL::route('store_mail_contact')}}">
                <div class="row">
                    <div class="col-lg-6 col-md-6 col-sm-12">
                        <div class="form-group{{ ($errors->has('name')) ? ' has-error' : ''}}">
                            <label>Name:</label>
                            <input class="form-control" value="{{Input::old('name')}}" type="text" name="name" placeholder="Enter name...">
                        </div>
                    </div>
                    <div class="col-lg-6 col-md-6 col-sm-12">
                        <div class="form-group{{ ($errors->has('email')) ? ' has-error' : ''}}">
                            <label>Email:</label>
                            <input class="form-control" value="{{Input::old('email')}}" type="email" name="email" placeholder="Enter email...">
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-lg-6 col-md-6 col-sm-12">
                        <div class="form-group{{ ($errors->has('postcode')) ? ' has-error' : ''}}">
                            <label>Postcode:</label>
                            <input class="form-control" value="{{Input::old('postcode')}}" type="text" name="postcode" placeholder="Enter postcode...">
                        </div>
                    </div>
                    <div class="col-lg-6 col-md-6 col-sm-12">
                        <div class="form-group{{ ($errors->has('country')) ? ' has-error' : ''}}">
                            <label>Country:</label>
                            <select class="form-control" name="country"> 
                                <option value="" selected="selected">Select Country</option>
                                @foreach( AIA::all() as $aia) 
                                <option value="{{ $aia->country }}">{{ $aia->country }}</option> 
                                @endforeach 
                            </select>
                        </div>
                    </div>
                </div> 
                <div class="row">
                    <div class="col-md-12">
                        <div class="form-group{{ ($errors->has('subject')) ? ' has-error' : ''}}">
                            <label>Subject:</label>
                            <input class="form-control" value="{{Input::old('subject')}}" type="text" name="subject" placeholder="Enter subject...">
                        </div>
                        <div class="form-group{{ ($errors->has('messages')) ? ' has-error' : ''}}">
                            <label>Messages:</label>
                            <textarea class="form-control" name="messages">{{Input::old('message')}}</textarea>
                        </div>
                    </div>
                </div>
                {{Form::token()}}
                <div class="form-group">
                    <button type="submit" value ="submit" name="submit" class="btn btn-primary">SUBMIT</button>
                    <button type="reset" value ="reset" name="reset" class="btn btn-primary">RESET</button>
                </div>
            </form>

这是我的路线:

public function postContact(){
    $validate = Validator::make(Input::all(),array(
        'name'=>'required',
        'email'=>'required',
        'subject'=>'required',
        'country'=>'required',
        'postcode'=>'required'
    ));
    if ($validate->fails()) {
        return Redirect::route('mail_contact')->withErrors($validate)->withInput();
    }else{
        $mailsending ="likdy2015@gmail.com";
        $name = Input::get('name');
        $subject = Input::get('subject');
        $postcode = Input::get('postcode');
        $country = Input::get('country');
        $email = Input::get('email'); 
        $messages= Input::get('messages');
        $data = array(
            'email_sending'=>$mailsending, 
            'name'=>$name,
            'subject'=>$subject, 
            'postcode'=>$postcode,
            'country'=>$country,
            'email'=>$email,
            'messages'=>$messages
        );
        $mail = Mail::send('emails.message', $data, function($message) use ($mailsending,$name)
        {   
            $message->to($mailsending, $name)->subject($subject);
        });
        if($mail->send()){
            return Redirect::route('mail_contact')->with('success','Your account has been created. We have sent you an email to active your account!');
        }else{
            return Redirect::route('mail_contact')
        ->with('fail','Mail sent not success!');
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我认为错误是因为在当前上下文中没有看到$ subject,我的意思是你没有将它传递给回调。 尝试通过use()传递它。 我在这里有一个有效的例子:

 $GLOBALS['email'] = $email;
 $GLOBALS['subject'] = $subject;         
                Mail::send('folder.myview', array("key" => $value_passed_to_view), function($message) {
                    $message->to($GLOBALS['email'])
                            ->subject($GLOBALS['subject']);
                });
                unset($GLOBALS['email']);
                unset($GLOBALS['subject']);

查找更多信息here