Laravel → ajax-запросы и VerifyCsrfToken
Если в бекенде сайта используется фреймворк Laravel и просто так взять и отправить ajax-ом POST-запрос, то ничего не выйдет. Вернее, выйдет, но ошибка наподобие такой:
1 | TokenMismatchException in VerifyCsrfToken.php line 46:
|
Исправить такое очень просто, нужно передать недостающий токен. Чтобы не возиться с токеном в каждом запросе, просто настроим его глобально. Добавим в основной шаблон мета-тег с токеном.
1 2 3 4 5 6 7 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
|
И установим токен в заголовки по умолчанию.
1 2 3 4 5 | $.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
|
Laravel → Кастомные валидаторы в Laravel
Ниже будет описано создание кастомного валидатора, или, если говорить чуть более по-русски, создание пользовательских правил валидации, c фреймворком Laravel 5. Конечно же всё это описано в документации, но мне этого не полностью хватило. С самим ларавелем я работаю всего неделю, так что не исключено, что записи будут ещё. А вот с основным моим в работе фреймворком, Symfony2, в блоге напряжнее, так как почти всё кажется очевидным и писать не о чем :)
PHP → активация PHP-расширений
Поднимая проект на Laravel столкнулся с неожиданной проблемой. А именно, с невозможностью установки вендорских библиотек композером. Неожиданность тут в том, что расширение php5-mcrypt было у меня установлено. Однако composer не обманешь.
Небольшое исследование показало, что необходимое расширение хоть и присутствует, но не подключено. Если же расширение не установлено, то делается это так (в Ubuntu и Debian):
1 | sudo apt-get install php5-mcrypt
|
Но вернёмся к активации установленных расширений...