Как стать автором
Поиск
Написать публикацию
Обновить
27.98

Laravel *

Бесплатный веб-фреймворк с открытым кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Laravel Timestamp Validator

Время на прочтение4 мин
Количество просмотров11K
image

Laravel 5.1, Laravel 5.2, Lara… Код прогрессирует, оптимизируется и развивается. В новой (5.2) версии появился валидатор массивов, например, но что делать, если необходимо провалидировать входящий timestamp? Правильно, писать костыль своё решение.
Посмотреть на решение

От любви до ненависти — один шаг, или как я разлюбил магию в ActiveRecord

Время на прочтение3 мин
Количество просмотров6.2K
Недавно в одном из проектов возникла интересная проблема — весьма долго отдавались данные по REST API, несмотря на их небольшое количество. Что же случилось и почему — рассказываю под катом.
Читать дальше →

Laravel TestTools — запись тестов для Laravel прямо из браузера Chrome

Время на прочтение1 мин
Количество просмотров12K
Вчера Marcel Pociot представил новое расширение для браузера Chrome «Laravel TestTools», которое позволяет «записывать» действия пользователя при создании тестов для Laravel.

Вот как это выглядит:

image
Читать дальше →

Мультиисключение или Хочу поделиться одним интересным архитектурным приемом

Время на прочтение6 мин
Количество просмотров15K
Мне никогда не нравилась в фреймворках на PHP работа с ошибками. И даже употребление этого слова не нравилось. Чтобы сразу уточнить — я не про фатальные ошибки, не про error_reporting, я про то, что называют ошибками валидации. То в моделях, то в формах — это уж от фреймворка зависит.

Вы только гляньте. Вот например Yii и Yii2, получение ошибок валидации модели:
$errors = $model->getErrors();

Symfony, ошибки формы:
$errors = $form->getErrors();

Активно рекламирующийся Pixie (давненько про него ничего не было):
$result = $validator->validate($data);
$errors = $result->errors();


Что тут не так?
Да всё. Всё не так. Весь этот код очень дурно пахнет, он пахнет временами PHP4, спагетти-архитектурой и диким смешением понятий.

Что же делать?

Читать дальше →

Работа с событиями в Laravel. Рассылка push уведомлений при публикации статьи

Время на прочтение10 мин
Количество просмотров21K
В комментариях к одной из первых статей в моем блоге читатель посоветовал мне прикрутить push-уведомления через сервис "Onesignal" На тот момент я понятия не имел, что это за зверь и с чем его едят. Про сами уведомления я, конечно, знал, про сервис — нет.
Легко нагуглил и оказалось, что это сервис, который позволяет рассылать push уведомления абсолютно разного рода, по всем платформам и девайсам. При этом имеет удобную панель управления/отчетности, возможность отложенной отправки и тд.
На настройке самого сервиса останавливаться не буду. Есть и его российские аналоги, ссылки при необходимости легко находятся. Да и речь больше не о самом сервисе, а о правильной архитектуре приложения на Laravel.
Читать дальше →

Число прописью в Laravel 5

Время на прочтение1 мин
Количество просмотров5.6K
Иногда необходимо вывести число прописью при формировании какой-либо формы и нам приходит на помощь модуль DigitText, разработанный специально для фреймворка Laravel.

Он позволяет обрабатывать любое число на любом языке

image
Читать дальше →

Дерево разделов неограниченной вложенности и URL

Время на прочтение8 мин
Количество просмотров23K
В данной статье мы рассмотрим один из возможных подходов к генерации полного пути на раздел, у которого может быть неограниченная вложенность в другие разделы, а также быстрое получение нужного раздела по заданному пути.

Представим, что мы программируем интернет-магазин, в котором должно быть дерево различных разделов, а также должны быть "приятные" ссылки на разделы, которые бы включали все подразделы. Пример: http://example.com/catalog/category/sub-category.
Читать дальше →

Создание беспарольной аутентификации в Laravel, используя только email

Время на прочтение6 мин
Количество просмотров17K
Недавно я работал над проектом, где одной из болевых точек был пароль пользователя. Администратор добавлял пользователей в приложение, поэтому они не имеют пароля, а заставлять их придумывать пароль при первом после регистрации входе было крайне неудобно.

Итак, мы решили попробовать метод беспарольного входа. Если Вы никогда не имели возможности работать с этим, мы расскажем как это работает:

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

Начнем творить!

image
Читать дальше →

Предварительный просмотр отправляемого email из Laravel

Время на прочтение2 мин
Количество просмотров5.5K
Как написал Саид в своем канале Твиттера:


«Мой новый пакет для @laravelphp конвертирует отправляемые Вами письма в .html для проверки корректности на стадии разработки.»

Этот пакет представляет новый драйвер для предварительного просмотра почты в Laravel. При необходимости, он будет производить вывод отправленных сообщений электронной почты, сохранив его как HTML-документ, позволяя проверять его внешний вид.

image
Читать дальше →

Декодирование типа данных JSON MySQL

Время на прочтение3 мин
Количество просмотров41K
В этом посте мы собираемся исследовать тип данных JSON в MySQL 5.7 и во время погружения будем использовать фреймворк Laravel для построения запросов.

image
Читать дальше →

Что нового ждет нас в Laravel 5.2.23

Время на прочтение3 мин
Количество просмотров12K
В настоящий момент Laravel насчитывает уже 911 участников на GitHub, многие из них активно добавляют новый функционал. Давайте посмотрим что же ждет нас новенького в Laravel версии 5.2.23, которая уже на пороге.
image
Читать дальше →

«Строгий режим (strict mode)” и другие настройки MySQL в Laravel 5.2

Время на прочтение2 мин
Количество просмотров12K
Если вы помните мой пост Как отключить строгий режим MySQL на Laravel Forge (Ubuntu), вы уже знаете, что MySQL 5.7 представил то, что-то обычно называется «строгий режим», который на самом деле является сочетанием новых режимов. В сумме они заставляют MySQL обрабатывать ваши запросы немного более строго, чем раньше.

В той статье я показал, как отключить его на Ubuntu. Но с тех пор, Adam Wathan добавил функционал к Laravel, который позволяет определить, используете ли вы «строгий режим». А также позволяет настроить, какие точно режимы вы хотите использовать — и все это через код.

Если можно изменить конфиг приложения вместо настройки сервера, без ущерба производительности, я всегда выберу этот вариант. Одной проблемой меньше при деплое в новом окружении. Поэтому я необычайно рад этой новой функции.
Читать дальше →

Пробрасываем роуты Angular 2 через роутер Laravel 5

Время на прочтение3 мин
Количество просмотров18K

После прочтения статьи "Порог вхождения в Angular 2 — теория и практика" у меня появилось желание показать, как можно пробросить все роуты Angular 2 через роутер Laravel 5.

Идея следующая

  • в директории resources/views/backend будет лежать представление, являющееся точкой входа для всех роутов Angular 2. Для каждого роута Angular 2, роутер Laravel 5 будет нас перенаправлять на это представление;
  • под каждый Angular 2 роут в директиве @RouteConfig нам придется создать копию в роутере Laravel;
  • все роуты Angular 2, по которым подтягиваются шаблоны, будут иметь вид вида /templates/SomeComponent.main, и будут запрашиваться роутером Laravel 5 по пути вида resources/views/frontend/SomeComponent/main.blade.php
Читать дальше →

Ближайшие события

Три мелкие но полезные плюшки в Laravel 5.2.22

Время на прочтение1 мин
Количество просмотров9.1K
Совсем недавно состоялся релиз минорной версии 5.2.22 нашего любимого фреймворка Laravel. Наряду с некоторыми небольшими исправлениями, есть несколько новых функций, давайте посмотрим на них.
Читать дальше →

Порог вхождения в Angular 2 — теория и практика

Время на прочтение16 мин
Количество просмотров124K
Добрый день, дорогие хабра: жители, читатели, писатели, негативно-комментаторы.

В качестве вводной части и чтобы снять некоторые вопросы немного расскажу о себе. Меня зовут Тамара. Оужас, я девушка! Кого это пугает — закрывайте статью и не читайте.

Для остальных: у меня за плечам незаконченный лет 10 назад МИРЭА, факультет кибернетики. Но все эти 10 лет практики сложились таким образом, что по большей части я занималась рекламой и в перерывах случалось работать в различных стартапах, связанных с интернетом и не только.

image

В общем, если коротко, то чукча не программист, чукча просто душой и сердцем уважает тех, кто из непонятных строчек кода делает офигенные вещи, которые хорошо работают.
Читать дальше →

Как мы делали Linux-пингвинов к Новому году

Время на прочтение2 мин
Количество просмотров4.6K


Почему пингвины?


Всё просто! Рано или поздно, но каждому IT-шнику хочется иметь некий талисман или атрибут, который бы своеобразно демонстрировал себе самому и окружающим, какую IT-религию ты исповедуешь. Так же как и с шаманскими бубнами, настало время и мягких игрушек. Я сам лично, хотел Linux-пингвина, но всё что было найдено — было мягко говоря «не совсем пингвин» :) Поэтому, нами было принято решение самим делать его.
Читать дальше →

Краткий обзор нововведений в Laravel 5.2

Время на прочтение2 мин
Количество просмотров19K
image

В самом начале этой недели, в понедельник, состоялся официальный релиз Laravel 5.2.
В новой версии были улучшены такие вещи, как авторизация, «связывание» модели с route и другие.
Более подробно под катом.

Читать дальше →

Гексагональная архитектура

Время на прочтение31 мин
Количество просмотров183K
На недавнем Laracon NYC я читал доклад о гексагональной архитектуре. Несмотря на то, что я получил позитивную реакцию слушателей, мне кажется, что остались люди, которые хотели бы получить чуть более полное представление о том, что это такое. Разумеется, с примерами. Это моя попытка расширить тот доклад.

  1. Видео с доклада
  2. Слайды


По моему мнению, данная архитектура является отличным примером того, как должна строиться структура приложения. Более того, когда я писал свои проекты на Laravel, я, даже не зная этого, частенько использовал идеи, заложенные в основе гексагональной архитектуры.



Являясь одним из вариантов слоеной архитектуры, гексагональная подразумевает разделение приложения на отдельные концептуальные слои, имеющие разную зону ответственности, а также регламентирует то, каким образом они связаны друг с другом. Разбираясь с этим типом архитектуры, мы также можем понять как, зачем, и почему при проектировании приложения используются интерфейсы.



Гексагональная архитектура, ни в коем случае не новый подход к разработке с применением фреймворков. Напротив, это всего лишь обобщение «лучших практик» — практик новых и старых. Я обернул эти слова в кавычки, чтобы люди не воспринимали их совсем буквально. Лучшие практики, которые работают для меня, могут не работать для вас — все зависит от задачи и преследуемых целей.



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


Читать дальше →

Реализация многоязычности на Laravel 5 силами фреймворка

Время на прочтение3 мин
Количество просмотров27K
Не так давно я решил поближе познакомиться с набирающим популярность фреймворком Laravel, благо документации и статей по нему достаточно. Но какое обучение без практики? Решено было перенести на него довольно простенький самописный сайт, который спокойно себе висел на хостинге и бед не приносил.

Одной из особенностей сайта было переключение языка интерфейса, реализованный путем yaml файла словаря и простого парсера. Перенести его на логику фреймворка было делом скорее механическим, чем творческим, а вот заставить его запоминать выбранный язык оказалось чуть сложнее. Ниже я представляю свой вариант реализации этой задачи.
Читать дальше →

Важность API сериализации вывода

Время на прочтение5 мин
Количество просмотров11K
Я рассказывал про API *лионы раз за последний год. Множество отзывов и вопросов возникли в тот момент, когда я говорил о сериализации, как о "добавлении слоя представления вашим данным".

MSDN говорит об этом так:
Сериализация — это процесс преобразования объекта в поток байтов для того, чтобы сохранить объект или передать его в память, базу данных или файл. Основной целью является сохранение состояния объекта, чтобы иметь возможность восстановить его при необходимости. Обратный процесс называется десериализацией.

Читать дальше →