Неопределенная переменная в laravel с vue с использованием пакета vform - PullRequest
0 голосов
/ 28 октября 2019

Я не знаю, что происходит с моим кодом в контроллере. Я просто хочу отправить электронное письмо на основе опции выбора из моего компонента VUE. Это просто говорит undefined variable request. Я использую пакет vform от vue. Но в моем контроллере я уже определил переменную запроса с идентификатором опции select из моего компонента vue. Но когда я помещаю статическое электронное письмо, оно может отправить электронное письмо, и это сработало. Может кто-нибудь знает в чем решение? Спасибо.

Ошибка предварительного просмотра во вкладке сети

{message: "Undefined variable: request", exception: "ErrorException",…}
exception: "ErrorException"
file: "C:\Users\bustillo-ronald\Desktop\Laravel-SPA\app\Http\Controllers\API\UserController.php"
line: 196
message: "Undefined variable: request"
trace: [,…]

Мой контроллер

    public function sendEmail(Request $request){

        $beautymail = app()->make(\Snowfire\Beautymail\Beautymail::class);
        $beautymail->send('emails.welcome', [], function($message)
         {
            $message
                ->from('test@gmail.com')
                //->to('sampleemail@gmail.com')//this is working with static data
                ->to($request->email)
                ->subject('Welcome!');
        });
    }

Мой компонент vue с vform

           <form @submit.prevent="sendEmail()">
                    <div class="modal-body">
                        <div class="form-group">
                            <label>Users Lsit</label>
                            <select v-model="form.email" name="email" id="email" class="form-control" :class="{ 'is-invalid': form.errors.has('email') }">
                                <option  v-for="user in users.data" :key="user.id" >{{user.email}}</option>
                            </select>
                            <has-error :form="form" field="type"></has-error>
                        </div>
                        <div class="form-group">
                            <label>Message</label>
                            <textarea v-model="form.message" name="message" placeholder="Message" class="form-control" :class="{ 'is-invalid': form.errors.has('message') }"></textarea>
                            <has-error :form="form" field="message"></has-error>
                        </div>
                    </div>

                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                        <button type="submit" class="btn btn-primary">Send Email</button>
                    </div>
                       </form>

Скрипт.

export default {
        data() {
                return {
                    form: new Form({
                        id:'',
                        email: '',
                        message: ''
                    }),
                    users: []
                }
            },
            methods: {
                getUsers() {
                    axios.get('api/user')
                        .then((res) => {
                            this.users = res.data
                        })
                },
                sendEmail(){
                    this.form.post('api/sendemail')
                          .then(()=>{
                               $('#exampleModal').modal('hide');
                               $(".modal-backdrop").remove();

                               swal.fire("Email sent!", "", "success");

                          })
                          .catch((e)=>{
                              console.log(e)
                          })
                }
            },
            created() {
                this.getUsers();
                console.log('Component mounted.')
            }
    }

Vue devtools enter image description here

1 Ответ

1 голос
/ 28 октября 2019

вы не передаете переменную $request внутри замыкания.

public function sendEmail(Request $request){

    $beautymail = app()->make(\Snowfire\Beautymail\Beautymail::class);
    $beautymail->send('emails.welcome', [], function($message) use($request) // add use($request)
     {
        $message
            ->from('test@gmail.com')
            //->to('sampleemail@gmail.com')//this is working with static data
            ->to($request->email)
            ->subject('Welcome!');
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...