Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
никак не могу решить проблему отправки писем в Laravel 5.3
та же проблема была в 5.1, решения не нашел - поставил 5.3
первое время все работало, но потом я опять не заметил после чего стала появляться эта ошибка токена
вроде ничего, касающегося формы не трогал
routes\web.php
Route::get('/admin', ['as' => 'admin.index', 'uses' => 'AdminController@index']);
Route::group(['middleware' => ['web']], function () {
Route::get('/', ['as' => 'home', 'uses' => 'HomeController@index']);
Route::post('/', ['as' => 'callback', 'uses' => 'PostController@callback']);
});
PostController.php
public function callback(Request $request)
{
$this->validate($request, [
'name' => 'required|min:3',
'tel' => 'required|min:10'
]);
if ($request->ajax()) return;
return 'publish';
}
resources\assets\js\app.js
Vue.component('callback', require('./components/callback.vue'));
const app = new Vue({
el: 'body',
data: {
mymessage: "hello world!",
formInputs: {},
formErrors: {}
},
methods: {
submitForm: function(e) {
var form = e.target;
var action = form.action;
var csrfToken = form.querySelector('input[name="_token"]').value;
this.$http.post(action, this.formInputs, {
headers: {
'X-CSRF-TOKEN': csrfToken
}
})
.then(function() {
form.submit();
})
.catch(function (data, status, request) {
var errors = data.data;
this.formErrors = errors;
});
}
},
});
resources\assets\js\components\callback.vue
<template>
<div class="callback">
<a href="/" class="root"> </a>
<p>8 (495) 790 84 15<br>
<a href="mailto:sales@steklo-group.ru">sales@steklo-group.ru</a><br>
<a class="btn btn-primary btn-large" href="#callback" title="Обратный звонок" data-toggle="modal" data-target="#callback">
<i class="fa fa-phone"> </i> Обратный звонок</a></p>
</div>
</template>
<script>
export default {
ready() {
console.log('Callback ready.')
}
}
</script>
resources\views\layouts\public.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="{{ elixir("css/app.css") }}">
<script>
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
</script>
</head>
<body>
<div class="flex-center position-ref full-height panel panel-default">
<header class="layout-header panel-heading">
@include('modules.topmenu')
<callback></callback>
@include('modules.mainmenu')
</header>
{!! Breadcrumbs::renderIfExists() !!}
@if(Session::has('message'))
<div class="alert alert-info">{{Session::get('message')}}</div>
@endif
@if(Session::has('errors'))
<div class="alert alert-info">@foreach($errors->all() as $error){{ $error }}<br>@endforeach
</div>
@endif
<content id="content" class="panel-body content" style="clear:both;">@yield('content')</content>
<div class="clearfix"></div>
<footer id="bottommodules" class="panel-footer">@yield('bottommodules')</footer>
</div>
@include('modules.totop')
@include('modules.callback')
<script src="{{ elixir("js/app.js") }}"></script>
</body>
</html>
resources\views\modules\callback.blade.php
<div class="modal fade" id="callback" tabindex="-1" role="dialog" aria-labelledby="callback" aria-hidden="true">
<div class="modal-dialog">
<form @submit.prevent="submitForm" name="callback" method="POST" action="/" role="form" class="form-horizontal" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="CallbackModalLabel"><i class="fa fa-envelope-o text-primary"></i> Отправить письмо / Попросить перезвонить</h4>
</div>
<div class="modal-body">
<div class="text-primary">* обязательное поле</div>
<div class="form-group">
<label class="control-label" for="name">Ваше имя *</label>
<input id="name" name="name" class="form-control" v-model="formInputs.name" type="text" required>
<span v-if="formErrors['name']" class="error">@{{ formErrors['name'] }}</span>
</div>
<div class="form-group">
<label class="control-label" for="phone">Номер телефона *</label>
<input id="phone" name="tel" class="form-control" v-model="formInputs.tel" required>
<span v-if="formErrors['tel']" class="error">@{{ formErrors['name'] }}</span>
</div>
<div class="form-group">
<label class="control-label" for="time">Желательное время звонка</label>
<input id="time" name="time" class="form-control" v-model="formInputs.time" type="text">
</div>
<div class="form-group">
<label class="control-label" for="email">Адрес e-mail</label>
<input id="email" name="email" class="form-control" v-model="formInputs.email" type="email">
</div>
<div class="form-group">
<label class="control-label" for="message">Сообщение</label>
<textarea id="msg" name="msg" class="form-control" v-model="formInputs.msg"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Закрыть</button>
<button type="submit" class="btn btn-primary pull-right">Отправить</button>
</div>
</div>
</form>
</div>
</div>
TokenMismatchException in VerifyCsrfToken.php line 68:
in VerifyCsrfToken.php line 68
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Router.php line 644
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 618
at Router->dispatchToRoute(object(Request)) in Router.php line 596
at Router->dispatch(object(Request)) in Kernel.php line 267
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 51
at Debugbar->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 54
Не в сети
Может это и не устранит ошибку, но предотвратит другие: нужно убрать из маршрутов ['middleware' => ['web'], т.к. ко всем маршрутам, находящимся в web.php автоматически присваивается этот посредник и если делать это вручную, сессии и пр. будут работать некорректно.
Не в сети
Это точно не поможет, т.к. это я добавил уже после того как перестало работать, потому что нашёл это в каком-то буржуйском блоге
Не в сети
- используйте встроенные очереди, отрабатывайте очередь через встроенный scheduler.
действий по сути там 4-6 штук, а работает как часы и везде.
Не в сети
и вообще переходите на очереди в плане рассылки писем. сэкономите себе на перепилке проекта при проседании производительности (когда уже железа будет нехватать)
Не в сети
Что за очереди?
Не в сети
Что за очереди?
https://laravel.com/docs/5.3/queues
затем смотри
https://laravel.com/docs/5.3/scheduling
Не в сети
Не в сети
Страницы 1