Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Передача почты по smtp не работает » 11.04.2016 11:34:46

Спасибо, но ошибку я нашел. Не знаю по какой причине но работал не правильно Exim. Закомментировав все в конфиге Exim, все стало работать.

#2 Re: Laravel 5.x » TokenMismatchException in VerifyCsrfToken.php line 46: SleepingOwl » 07.04.2016 01:12:15

Практически аналогичная проблема. Мне ни кто не помог. Дошло до того что пришлось купить vps. Теперь на этом vps куча других необъяснимых проблем.
https://laravel.ru/forum/viewtopic.php?id=1501
Решением этой проблемы для меня было: приобретение vps. И я понял, что это какое то ограничение хостинга. Но какое именно - загадка.

#3 Re: Laravel 5.x » Передача почты по smtp не работает » 06.04.2016 22:43:03

dima9595 пишет:

Порты открыты? На домен прикручена запись для почты?

Порты открыты с outlook проверил работу и все работает.
С передача писем с laravel не работает. как будто ничего не происходит.

#4 Laravel 5.x » Передача почты по smtp не работает » 06.04.2016 20:45:53

Fixlix
Ответов: 4

Не работает передача писем по smtp. Данные почтового сервера ввел верно. Проверил с помощью потового клиента outlook.

Код метода контроллера ответственного за передачу письма:
(Данные почтовых ящиков в примерах фейковые)

public function index()
    {
        $data = 'hi@mail.ru';

        return Mail::send('emails.feedback', ['title' => 'Титул'], function($message) use ($data)
        {
            $message->from('webmaster@host.ru');
            $message->to($data)->subject('Welcome!');
        });
    }

Содержимое .env файла:

MAIL_DRIVER=smtp
MAIL_HOST=mail.host.ru
MAIL_PORT=25
MAIL_USERNAME=webmaster@host.ru
MAIL_PASSWORD=Mypass
MAIL_ENCRYPTION=null

Содиржимое config/Mail.php:

<?php

return [

    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'mail.host.ru'),
    'port' => env('MAIL_PORT', 465),
    'from' => ['address' => 'webmaster@host.ru', 'name' => 'webmaster@host.ru'],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('webmaster@host.ru'),
    'password' => env('Mypass'),
    'sendmail' => '/usr/sbin/sendmail -bs',

];

Ошибок в логах не выдает, на экран ошибок не выводит.
Но ни одного письма мне еще не пришло ни на один из введенных почтовых ящиков.
Прошу помощи, что это такое? P.S Перенес сайт на laravel на vps.

#5 Re: Laravel 5.x » Laravel на хостинге » 04.04.2016 14:47:24

xelam пишет:

web мидельварю можно и не убирать, а исключить роуты которым не нужна защита
Вот в документации https://laravel.com/docs/5.2/routing#csrf-protection чуть ниже раздел "Excluding URIs From CSRF Protection"

Я знаю зачем он нужен. И все как есть на данный момент так и должно быть. И исключение web middleware из проекта это не решение проблемы и ошибки

#6 Re: Laravel 5.x » Laravel на хостинге » 03.04.2016 21:13:50

Еще вылетает такая ошибка при попытке отправить электронное письмо на почту:

getmypid() has been disabled for security reasons

Я не совсем понял вообще причину этой ошибки.
В общем это у меня хостинг косячный или так будет везде на всех хостингах?
P.S хостинг платный.

#7 Re: Laravel 5.x » Laravel на хостинге » 03.04.2016 14:20:48

WebDev пишет:

В login.blade условие на вывод ошибок допишите . if($errors)

Теперь получаем такую ошибку:

Session store not set on request. (View: /var/www/корень/data/www/мой_домен.ru/resources/views/auth/login.blade.php)

Залезаю я значит в kernel.php и вижу следующее:

        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],

А именно вот на эту строку:

\Illuminate\Session\Middleware\StartSession::class,

Обновил Laravel до версии: Laravel Framework version 5.2.29

Все осталось так же как и было.
Из следующей строки в kernel.php и имеющейся ошибке я понимаю что middleware web не могли встроить в роутер по умолчанию.:

\Illuminate\Session\Middleware\StartSession::class,

Следственно ошибка остается и можно вернуться к первоначальному роутеру.

#8 Re: Laravel 5.x » Laravel на хостинге » 03.04.2016 12:31:40

AlexeyMezenin пишет:

Попробуйте убрать web middleware, начиная вроде как раз с версии 5.2.25 он автоматически подсоединяется ко всем routes. Видимо на локахосте у вас более старая версия, поэтому там все работает.

Убрал. Теперь ошибка:

Undefined variable: errors (View: /var/www/корень/data/www/мой_домен.ru/resources/views/auth/login.blade.php)

Я так понимаю вывод ошибок у меня теперь не работает, так как убрал middleware web. В связи с чем появилась новая ошибка.
Нет это не вариант решения проблемы. К тому же я ни где не видел информацию где в этой версии laravel что то меняли с middlewarwe web.

Нет, на локалке у меня именно та же версия.
Ошибка актуальная. И до сих пор я не пойму причину.

#9 Re: Laravel 5.x » Laravel на хостинге » 02.04.2016 23:45:43

xelam пишет:

мало данных.
какая версия фреймворка? И нужно видеть роуты.

Зачем роуты? Не пойму.
На локалке работает все нормально под разными ОС. И все окей.
На хостинге такая вот лабуда.
Но тем не менее вот роуты.

<?php

/*
|--------------------------------------------------------------------------
| Routes File
|--------------------------------------------------------------------------
|
| Here is where you will register all of the routes in an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| This route group applies the "web" middleware group to every route
| it contains. The "web" middleware group is defined in your HTTP
| kernel and includes session state, CSRF protection, and more.
|
*/

/** Интернет магазин **/
Route::group(['middleware' => 'web'], function () {
    Route::auth(); // Авторизация на сайте

    Route::get('/', 'HomeController@index'); // Главна страница
    Route::get('/preview/{id}', 'HomeController@preview'); // Подробный просмотр товара
    Route::post('/star', 'HomeController@setStar'); // Звездный рейтинг

    Route::match(array('POST'), '/preview/{id?}', ['uses' => 'HomeController@add_comment']); // Добавление комментария
    Route::match(array('GET', 'POST'), '/account', ['middleware' => 'auth', 'uses' => 'UserController@index']); // Личный кабинет
    Route::match(array('GET', 'POST'), '/feedback', ['uses' => 'HomeController@Feedback']); // Обратная связь
});


/** Панель администрирования **/
Route::group(['middleware' => ['web', 'auth', 'acl']], function () {
    Route::get('/admin', ['uses' => 'AdminController@viewStats']); // Полный список товаров

    /* Управление товарами */
    Route::get('/admin/items', ['uses' => 'AdminController@viewItems']); // Полный список товаров
    Route::match(array('GET', 'POST'), '/admin/new_item', ['uses' => 'AdminController@setItems']); // Рагистрация нового товара
    Route::match(array('GET', 'POST'), '/admin/item/{id}', ['uses' => 'AdminController@viewItem']); // Подробный просмотр товара и модификация
    Route::get('/admin/delete_item/{id}', ['uses' => 'AdminController@deleteItem']); // Удаление товара по его идентификатору

    /* Управление категориями */
    Route::get('/admin/categories', ['uses' => 'AdminController@viewCategories']); // Список категорий
    Route::match(array('GET', 'POST'), '/admin/add_category', ['uses' => 'AdminController@setCategory']); // Регистрация новой категории
    Route::match(array('GET', 'POST'), '/admin/category/{id}', ['uses' => 'AdminController@viewCategory']); // Подробный просмотр категории и модификация

    /* Управление типом валют */
    Route::get('/admin/currencies', ['uses' => 'AdminController@viewCurrencies']); // Список валют
    Route::match(array('GET', 'POST'), '/admin/add_currency', ['uses' => 'AdminController@setCurrency']); // Регистрация новой валюты
    Route::match(array('GET', 'POST'), '/admin/currency/{id}', ['uses' => 'AdminController@viewCurrency']); // Подробный просмотр категории и модификация
    
    /* Управление комментариями */
    Route::get('/admin/commentaries', ['uses' => 'AdminController@viewCommentaries']); // Список комментариев
    Route::get('/admin/comment/{id}/{data_id}', 'AdminController@viewComment'); // Модерация комментария
    Route::match(array('POST'), '/admin/comment/{id?}/{data_id?}', ['uses' => 'AdminController@saveComment']); // Сохранение отмодерированного комментария
});

Версия laravel: Laravel Framework version 5.2.25

#10 Laravel 5.x » Laravel на хостинге » 02.04.2016 23:27:07

Fixlix
Ответов: 9

Написал сайт. Нужно было протестировать его работу и проверить работу с почтой.
На хостинг залил, дизаин прогрузился. Пытаюсь авторизоваться и вылетает ошибка:

TokenMismatchException in VerifyCsrfToken.php line 67:

Пытался прописать всякое разное:

{!! csrf_field() !!}
<input type="hidden" name="_token" value="<?php echo csrf_token() ?>">
<input type="hidden" name="_token" value="{{ csrf_token() }}">

Ничего не работает. Проблемы те же. Права на папки везде 777  временно для проверки.
Почему сайт не видит токен? Или у laravel защитная реакция против хостингов такая?

#11 Re: Laravel 5.x » Middleware статус » 20.03.2016 13:03:05

WebDev пишет:
Fixlix пишет:
LeXXXX35 пишет:

Код роута покажи, и как твой мидл прописан в kernel?

Вот код роута.
Так работает:

Route::group(['middleware' => 'web'], function () {
    Route::get('/admin/items', ['uses' => 'AdminController@viewItems', 'middleware' => 'acl', 'middleware' => 'auth']); // Полный список товаров
    Route::match(array('GET', 'POST'), '/admin/new_item', ['uses' => 'AdminController@setItems', 'middleware' => 'acl', 'middleware' => 'auth']); // Рагистрация нового товара
    Route::match(array('GET', 'POST'), '/admin/item/{id}', ['uses' => 'AdminController@viewItem', 'middleware' => 'acl', 'middleware' => 'auth']); // Подробный просмотр товара и модификация

    Route::get('/admin/categories', ['uses' => 'AdminController@viewCategories', 'middleware' => 'acl', 'middleware' => 'auth']); // Список категорий
    Route::get('/admin/currencies', ['uses' => 'AdminController@viewCurrencies', 'middleware' => 'acl', 'middleware' => 'auth']); // Список валют
    Route::match(array('GET', 'POST'), '/admin/add_category', ['uses' => 'AdminController@setCategory', 'middleware' => 'acl', 'middleware' => 'auth']); // Регистрация новой категории
    Route::match(array('GET', 'POST'), '/admin/add_currency', ['uses' => 'AdminController@setCurrency', 'middleware' => 'acl', 'middleware' => 'auth']); // Регистрация новой валюты
});

Так не работает:

Route::group(['middleware' => 'web', 'middleware' => 'acl', 'middleware' => 'auth'], function () {
    Route::get('/admin/items', ['uses' => 'AdminController@viewItems']); // Полный список товаров
    Route::match(array('GET', 'POST'), '/admin/new_item', ['uses' => 'AdminController@setItems']); // Рагистрация нового товара
    Route::match(array('GET', 'POST'), '/admin/item/{id}', ['uses' => 'AdminController@viewItem']); // Подробный просмотр товара и модификация

    Route::get('/admin/categories', ['uses' => 'AdminController@viewCategories']); // Список категорий
    Route::get('/admin/currencies', ['uses' => 'AdminController@viewCurrencies'); // Список валют
    Route::match(array('GET', 'POST'), '/admin/add_category', ['uses' => 'AdminController@setCategory'); // Регистрация новой категории
    Route::match(array('GET', 'POST'), '/admin/add_currency', ['uses' => 'AdminController@setCurrency'); // Регистрация новой валюты
});

Route::get('/', ['middleware' => ['first', 'second'], function () {
    //
}]);

Спасибо. Как раз сам пару дней назад догадался.
Реализовал следующим образом:

Route::group(['middleware' => ['web', 'auth', 'acl']], function () {
    //
}

#12 Re: Laravel 5.x » Middleware статус » 18.03.2016 19:38:49

LeXXXX35 пишет:

Код роута покажи, и как твой мидл прописан в kernel?

Вот код роута.
Так работает:

Route::group(['middleware' => 'web'], function () {
    Route::get('/admin/items', ['uses' => 'AdminController@viewItems', 'middleware' => 'acl', 'middleware' => 'auth']); // Полный список товаров
    Route::match(array('GET', 'POST'), '/admin/new_item', ['uses' => 'AdminController@setItems', 'middleware' => 'acl', 'middleware' => 'auth']); // Рагистрация нового товара
    Route::match(array('GET', 'POST'), '/admin/item/{id}', ['uses' => 'AdminController@viewItem', 'middleware' => 'acl', 'middleware' => 'auth']); // Подробный просмотр товара и модификация

    Route::get('/admin/categories', ['uses' => 'AdminController@viewCategories', 'middleware' => 'acl', 'middleware' => 'auth']); // Список категорий
    Route::get('/admin/currencies', ['uses' => 'AdminController@viewCurrencies', 'middleware' => 'acl', 'middleware' => 'auth']); // Список валют
    Route::match(array('GET', 'POST'), '/admin/add_category', ['uses' => 'AdminController@setCategory', 'middleware' => 'acl', 'middleware' => 'auth']); // Регистрация новой категории
    Route::match(array('GET', 'POST'), '/admin/add_currency', ['uses' => 'AdminController@setCurrency', 'middleware' => 'acl', 'middleware' => 'auth']); // Регистрация новой валюты
});

Так не работает:

Route::group(['middleware' => 'web', 'middleware' => 'acl', 'middleware' => 'auth'], function () {
    Route::get('/admin/items', ['uses' => 'AdminController@viewItems']); // Полный список товаров
    Route::match(array('GET', 'POST'), '/admin/new_item', ['uses' => 'AdminController@setItems']); // Рагистрация нового товара
    Route::match(array('GET', 'POST'), '/admin/item/{id}', ['uses' => 'AdminController@viewItem']); // Подробный просмотр товара и модификация

    Route::get('/admin/categories', ['uses' => 'AdminController@viewCategories']); // Список категорий
    Route::get('/admin/currencies', ['uses' => 'AdminController@viewCurrencies'); // Список валют
    Route::match(array('GET', 'POST'), '/admin/add_category', ['uses' => 'AdminController@setCategory'); // Регистрация новой категории
    Route::match(array('GET', 'POST'), '/admin/add_currency', ['uses' => 'AdminController@setCurrency'); // Регистрация новой валюты
});

#13 Re: Laravel 5.x » Middleware статус » 18.03.2016 19:33:04

LeXXXX35 пишет:

Код роута покажи, и как твой мидл прописан в kernel?

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'acl' => \App\Http\Middleware\AccessControlList::class,
    ];

Вот собственно та строчка:

'acl' => \App\Http\Middleware\AccessControlList::class,

#14 Re: Laravel 5.x » Middleware статус » 14.03.2016 11:46:36

duster пишет:

Может Ваш middleware срабатывает раньше, чем middleware сессий?

Так в том то и дело что нет.
Разве что он вызывается в Route::group.
Интересно что если вызывать его в каждом маршруте отдельно то все работает. Но если дать группе, то он выдаёт такую лабуду как я описал выше.
Хотелось бы выделить его группе, а не дублировать и прописывать на каждый маршрут.

Как то глупо что на группу не работает.

#15 Re: Laravel 5.x » Middleware статус » 09.03.2016 00:52:58

Fixlix пишет:
duster пишет:

}%Вообще должно работать, но можно сделать и явным образом:

%%(php)
    protected $auth;

    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    public function handle()
    {
        if ($this->auth->check() && $this->auth->user()->stat == 1) {}
    }
%%

Аналогично. Не работает.
var_dump($this->auth->user()) Показывает null.
var_dump($this->auth->user()->stat) показывает:

Trying to get property of non-object

Если выполнять проверку var_dump'ом, в контроллере все работает нормально, но в middleware отказывается напрочь.

#16 Re: Laravel 5.x » Middleware статус » 09.03.2016 00:35:36

duster пишет:

}%Вообще должно работать, но можно сделать и явным образом:

%%(php)
    protected $auth;

    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    public function handle()
    {
        if ($this->auth->check() && $this->auth->user()->stat == 1) {}
    }
%%

Аналогично. Не работает.
var_dump($this->auth->user()) Показывает null.
var_dump($this->auth->user()->stat) показывает:

Trying to get property of non-object

#17 Laravel 5.x » Middleware статус » 05.03.2016 01:29:47

Fixlix
Ответов: 11

Всем привет.
Столкнулся с проблемой. Пытаюсь с помощью Middleware сделать разграничение доступа.

    public function handle($request, Closure $next)
    {
        //todo написать ACL. По какой то причине не работает Auth::user()
        if(Auth::user()->stat == 1) {
            return $next($request);
        } else {
            return redirect('/');
        }
    }

Я так понимаю не работает Auth::user().
Через var_dump он вообще NULL возвращает. Вопрос. Почему, когда я авторизован и все должно работать.
Ошибка:

Trying to get property of non-object

Оно и логично, если Auth::user() = Null, то ->stat не существует вообще.
stat это поле в таблице БД.

Подскажите, что я делаю не так и почему Auth::user() не существует, когда должен. И как реализовать мою задумку?

#18 Laravel 5.x » Fatal error: Class 'PHPExcel_Shared_Font' not found » 02.03.2016 00:37:30

Fixlix
Ответов: 1

Решил перенести сайт на другой ПК и поймал такую ошибку.

Fatal error: Class 'PHPExcel_Shared_Font' not found

Вопрос, что это? И от куда это, если на прошлой машине все работает без проблем и ничего не менялось?
composer update и php artisan показывают аналогичную ошибку

#19 Re: Laravel 5.x » Laravel blade for перебор массива » 01.03.2016 13:49:51

duster пишет:
Fixlix пишет:

Мне нужен for а не foreach.
И ваш пример с for идентичен тому что я написал выше.
Соответственно это не работает и ошибки я указал.
По прежнему нуждаюсь в помощи.

Не идентичен - у Вас там странная кавычка была какая-то.

А потом у Вас ошибка изменилась и она Вам все объясняет:
htmlentities() expects parameter 1 to be string, object given (View: /var/www/shop.com/resources/views/home.blade.php)

$dats[$i] - это объект, а не строка, поэтому нельзя просто так взять и "вывести" в шаблоне его

Если Вам надо вывести конкретный property объекта - укажите его {{ $dats[$i]->name }}
Можете конвертировать объект в строку любым из доступных способов, к примеру в JSON: {{ json_encode($dats[$i]) }}

Но нельзя просто "напечатать" объект

Это то что я хотел. Спасибо!
Я просто до этого var_dump'ом пытался смотреть и он выдавало ошибку все равно. По этому я проблему не мог понять.
Вот рабочий вариант на помощь тем кто столкнется с этой глупой проблемой.

@for($i = 0; $i < count($dats); $i++)
        {{ $dats[$i]->title }}<br />
@endfor

#20 Re: Laravel 5.x » Laravel blade for перебор массива » 01.03.2016 02:39:40

duster пишет:

}%%%(php)
@for($i = 0; $i < count($dats); $i++)
      {{ $dats[$i] }}
@endfor
%%

или
%%(php)
@foreach($dats as $one)
      {{ $one }}
@endforeach
%%

Мне нужен for а не foreach.
И ваш пример с for идентичен тому что я написал выше.
Соответственно это не работает и ошибки я указал.
По прежнему нуждаюсь в помощи.

#21 Re: Laravel 5.x » Laravel blade for перебор массива » 01.03.2016 01:07:34

Какие я только варианты не пробовал, проблема остается прежней.

@for($i = 0, $size = count($dats); $i < $size; $i++)
        {{ $dats[$i] }}
@endfor
    <?php for($i = 0; $i < count($dats); $i++) : ?>
        <?php echo $dats[$i]; ?>
    <?php endfor; ?>

#22 Re: Laravel 5.x » Laravel blade for перебор массива » 01.03.2016 00:22:34

Artdevue пишет:

Ковычки уберите

@for($i = 0; $i < count($dats); $i++)
      {{ $dats[$i] }}
@endfor

Было бы все так просто. Теперь получаем другую ошибку.

htmlentities() expects parameter 1 to be string, object given (View: /var/www/shop.com/resources/views/home.blade.php)

#23 Laravel 5.x » Laravel blade for перебор массива » 29.02.2016 20:35:42

Fixlix
Ответов: 7

Всем привет. Столкнулся с глупой проблемой.
Нужно перебрать массив с помощью цикла for.
Не нужно говорить "Используй foreach он молодец". Мне нужно перебрать массив именно с помощью for.

Я пробовал так:

@for($i = 0; $i < count($dats); $i++)
      {{ $dats['$i'] }}
@endfor

Но увы получил ошибку следующего вида:

Undefined index: $i (View: /var/www/shop.com/resources/views/home.blade.php)

Самое интересное, что если запросить элемент массива, все выводит нормально.

{{ $dats['0'] }}

Объясните может ли blade вообще с этим справиться?

#24 Re: Laravel 5.x » laravel jquery php отправление данные и возвращение ответа » 12.02.2016 19:50:24

Artdevue пишет:

а вообще, я логики немного не пойму, раз у вас нет в форме урла, для отправки, значит без аякса вы не отправите форму (разве что на ту-же страницу). Т.е. если вы не планируете отправлять форму без аякса (хотя можно предусмотреть), тогда уберите submit с формы, а поставьте  type="button", и отлавливайте по нему. Плюс, я не вижу, что вы передаёте поле comment через аякс, т.е нужно передать ещё

data: $("#form_id").serialize(),

Вот тут мне было сложно понять вас. И того что я прочитал я понял и написал вот это:

<form class="form-horizontal" method="POST" id="form_id" enctype = "multipart/form-data">
                            <input type="hidden" name="_token" value="{{ csrf_token() }}">
                            <div id="heretext"></div>
                            <div class="your-review">
                                <div>
                                    <span><label>Комментарий<span class="red">*</span></label></span>
                                    <span><textarea type="text" name="comment" class="form-control" rows="6" placeholder="Текст комментария"></textarea></span>
                                </div>
                                <div>
                                    <span><button type="button" name="button" class="btn btn-danger">Отправить</button></span>
                                </div>
                                <script type="text/javascript">
                                    $('body').on('button', '#form_id', function(e) {
                                        $.ajax({
                                            type: "POST",
                                            data: $("#form_id").serialize(),
                                            url: "<?php echo URL::action("HomeController@add_comment")?>",
                                            cache: false,
                                            dataType: "json",
                                            headers: {
                                                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                                            },
                                            beforeSend: function(){
                                                $('#heretext').removeClass(error);
                                                // выводим инфу, что идёт обработка
                                            },
                                            success: function(data){
                                                if (data.success) {
                                                    $('#heretext').html(data.success).fadeOut(2000);
                                                } else {
                                                    $('#heretext').addClass('error').html(data.error).fadeOut(2000);
                                                }
                                            },
                                            error: function() {
                                                // выводим инфу о ошибки
                                            }
                                        });
                                        return false; // вырубaeм стaндaртную oтпрaвку фoрмы
                                    });
                                </script>
                            </div>
                        </form>

Вы меня если что сильно не пинайте. Я на js не писал ранее. Только php.
Если выполнять тот код который опубликован в данном сообщении - ничего не происходит. И оно понятно. Тут явный косяк с type="button".

#25 Re: Laravel 5.x » laravel jquery php отправление данные и возвращение ответа » 12.02.2016 19:33:07

Artdevue пишет:

ответ то пришёл, значит проблема в js .. т.е. у вас submit не остановился.
1) попробуйте убрать e.preventDefault(); и в конце? после аякса прописать

return false; // вырубaeм стaндaртную oтпрaвку фoрмы

Если все правильно понял, то вот код который получился сейчас:

<script type="text/javascript">
                                    $('body').on('submit', '#form_id', function(e) {
                                        $.ajax({
                                            type: "POST",
                                            url: "<?php echo URL::action("HomeController@add_comment")?>",
                                            cache: false,
                                            dataType: "json",
                                            headers: {
                                                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                                            },
                                            beforeSend: function(){
                                                $('#heretext').removeClass(error);
                                                // выводим инфу, что идёт обработка
                                            },
                                            success: function(data){
                                                if (data.success) {
                                                    $('#heretext').html(data.success).fadeOut(2000);
                                                } else {
                                                    $('#heretext').addClass('error').html(data.error).fadeOut(2000);
                                                }
                                            },
                                            error: function() {
                                                // выводим инфу о ошибки
                                            }
                                        });
                                        return false; // вырубaeм стaндaртную oтпрaвку фoрмы
                                    });
                                </script>

Ошибка и проблема аналогичная. Все как на прошлом скриншоте.

Подвал раздела