Как сделать красивый url laravel

Удобная генерация URL (ЧПУ). Laravel 4 + сторонние пакеты

Хотелось бы поделиться удобными инструментами для генерации URL и примерами их использования.

Задача стоит не такая уж и большая, но она возникает постоянно, и хочется сократить время, затрачиваемое на написание велосипеда ее решение. Так же хочется избавиться от повсеместного использования вызовов разных классов, методов, функций и так далее при каждой необходимости сгенерировать URL. Ах да, я использую Laravel и инстументы заточены под него.

Ссылки на инструменты

Этого нам вполне хватит.

Постановка задачи

Автоматическая генерация уникальных URL для записей в таблицу БД для доступа к ним по /resource/unique-resource-url вместо /resource/1.

Приступаем

Допустим, нам нужно разбить поиск на сайте по Странам и Городам, но так, чтобы пользователь легко ориентировался, какая область/город выбран при просмотре списка Продуктов сайта.

Начнем с того, что создадим новый проект:

Далее откываем composer.json в корне habr_url и вносим пакеты в require:

«way/generators»: «dev-master» добавим для быстрого прототипирования.

После выполняем комманду composer update в консоли, а после успешно установленных пакетов вносим изменения в app/config/app.php:

Класс Slug даст нам возможность генерировать URL из киррилицы, так как стандартный класс Str умеет работать только с латиницей. О Sluggable я расскажу чуть позже.

Генерируем код

Изменяем новые файлы, добавляя внешних ключей:

Теперь изменяем настройки БД:

И вносим схему и данные в БД.

И вот что мы получили:
Как сделать красивый url laravel

Как сделать красивый url laravel

Добавим в модели связей и дополним правила для аттрибутов:

И уберем из app/views/cities/create.blade.php, app/views/cities/edit.blade.php, app/views/products/create.blade.php, app/views/products/edit.blade.php соответствующие елементы формы.

Первым делом скинем себе в проект конфигурацию для Eloquent Sluggable :

То же сделаем и для Product :

Да, мы можем выбрать не существующее поле из Объекта, и добавить его как хелпер.

Немного изменив CitiesTableSeeder добъемся желаемого результата:

Теперь откатим миграции и зальем их по новой вместе с данными:

Как сделать красивый url laravel

Добавим немного маршрутов:

И добавим несколько шаблонов:

Демо и Git

Ошибки, как обычно в личку. Предложения и критику — в комментарии. Спасибо за внимание.

Источник

Настройка

Данная статья документации актуальна для версий 5.3, 5.2 и 5.0, для версии 5.1 не актуальна.

Введение

После установки

Название вашего приложения

Другие настройки

После установки Laravel вам также надо настроить вашу локальную среду.

Внимание: никогда не устанавливайте параметр app.debug в значение true для продакшна.

Права доступа

Настройки среды

Часто необходимо иметь разные значения для различных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и продакшн-сервере.

Чтение настроек среды

Второе аргумент этой функции — значение по умолчанию. Оно будет использовано, если такой переменной среды нет.

Определение текущей среды

Экземпляр приложения также доступен через вспомогательный метод PHP app () :

Вы можете получить имя текущей среды приложения с помощью метода PHP environment для экземпляра PHP Application :

Экземпляр приложения также доступен через функцию PHP app () или фасад PHP App :

Чтение значений настроек

Вы можете легко обращаться к значениям настроек с помощью глобальной вспомогательной функции PHP config () из любого места в вашем приложении. К значениям настроек можно обращаться, используя «точечный» синтаксис, в который входит имя файла и название опции. При этом можно указать значение по умолчанию, которое будет возвращено при отсутствии запрашиваемой опции:

Для задания значений настроек во время выполнения передайте массив в функцию PHP config () :

Вы легко можете прочитать значения настроек, используя фасад PHP Config :

Вы также можете использовать вспомогательную функцию PHP config :

Кэширование настроек

Если вы выполняете команду sh config:cache во время процесса развёртывания, вы должны быть уверены, что вызываете функцию PHP env () только из ваших файлов настроек.

Режим обслуживания

Когда ваше приложение находится в режиме обслуживания (maintenance mode), специальный шаблон будет отображаться для всех запросов в вашем приложении. Это позволяет легко «отключать» приложение во время его обновления или при обслуживании. Проверка режима обслуживания включена в стандартный набор посредников для вашего приложения. Когда приложение находится в режиме обслуживания, будет вызвано исключение MaintenanceModeException с кодом состояния 503 (для версии 5.2 и ранее — HttpException ).

Для включения этого режима просто выполните Artisan-команду down:

Также вы можете передать в команду down опции message и retry. Значение message можно использовать для вывода или записи в журнал необходимого сообщения, а значение retry будет задано в качестве значения HTTP-заголовка Retry-After :

Чтобы выйти из режима обслуживания выполните команду up:

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

Альтернативы режиму обслуживания

Поскольку для режима обслуживания необходима остановка вашего приложения на несколько секунд, рассмотрите такие альтернативы, как Envoyer, чтобы обеспечить обновление на лету.

Красивые URL

Apache

Nginx

В Nginx следующая директива в настройках вашего сайта позволит использовать «красивые» URL-адреса:

Само собой, при использовании Homestead красивые URL будут настроены автоматически.

Источник

Шаблоны

Содержание

Основы

Ваше приложение, скорее всего, имеет общее оформление для большинства страниц. Ручное оформление этого шаблона для каждого действия наверняка утомительно. Определение шаблона для приложения сделают, конечно же, разработку более приятной. Начнем:

Указание свойства «layout» в контроллере:

Доступ к шаблону из действий контроллера:

Примечание: Когда используется шаблон, действие не должно больше ничего возвращать.

Секции

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

Создание секции в представлении:

Вставка контента секции:

Использование сокращений Blade при работе с секциями:

Интерпретатор шаблонов Blade

Blade позволяет изящно писать ваши шаблоны. Для создания blade шаблона, файл представления должен иметь расширение «.blade.php». Blade позволяет создавать красивый, ненавязчивый синтаксис PHP структур с отображением данных. Например:

Blade отображение переменной:

Blade вывод результата функции:

Вставка представления:

Примечание: При использовании @include выражения Blade, представление автоматически наследует все данные из текущего представления.

Создание циклов при помощи Blade:

Blade другие управляющие структуры:

Структура «for-else»:

Структура «unless»:

Комментарии в Blade :

Примечание: Комментарии Blade, в отличие от HTML комментариев, не отображаются в исходном коде страницы.

Blade шаблоны

Blade не только делает код представлений элегантным, но еще и дает прекрасный метод использования шаблонов в вашем представлении. Например, пусть ваше приложение использует представление «master» для обеспечения общего вида и поведения приложения. Это может выглядеть так:

Заметьте, произведена вставка секции «content». Нам нужно заполнить эту секцию некоторым текстом так, чтобы другое представление использовало этот макет:

Отлично! Теперь мы просто возвращаем ‘profile’ представление из маршрута:

Представление profile автоматически использует шаблон «master» благодаря @layout выражению Blade.

Иногда нужно вставить что-то в секцию, не переписывая ее код. Например, добавить элемент списка. Сделаем это так:

Заметили конструкцию Blade @parent? Она будет заменена на секцию навигациии ‘navigation’ из ‘master’ шаблона, предоставляя гибкий инструмент по управлению контентом в шаблонах и представлениях, делая их расширямыми и наследуемыми.

Статистика: Символов — 4 167/3 538 без пробелов (2 771/2 407 без кода):, слов — 365

Источник

Страничный вывод

Настройка

В некоторых фреймворках страничный вывод может быть большой проблемой. Страничный вывод в Laravel интегрирован с построителем запросов и Eloquent ORM и обеспечивает удобный, простой в использовании вывод результатов БД. Генерируемый HTML-код совместим с CSS-фреймворком Bootstrap.

Основы использования

Страничный вывод выборки из БД

В этом примере единственный аргумент метода PHP paginate () — число элементов на одной странице. Давайте укажем, что мы хотим выводить по 15 элементов на страницу:

«Простой страничный вывод»

Страничный вывод запросов Eloquent

Можно также делать постраничный вывод запросов Eloquent. В этом примере мы разобьём на страницы модель User по 15 элементов на странице. Как видите, синтаксис практически совпадает со страничным выводом выборки из БД:

Разумеется, вы можете вызвать PHP paginate () после задания других условий запроса, таких как where :

Также вы можете использовать метод PHP simplePaginate () моделей Eloquent:

Ручное создание экземпляра страничного вывода

При ручном создании экземпляра страничного вывода вы должны вручную «поделить» передаваемый в него массив результатов. Если вы не знаете, как это сделать, используйте PHP-функцию array_slice.

Отображение результатов страничного вывода

Итак, когда вы получили результаты, вы можете вывести их и создать ссылки на страницы методом PHP render () :

Настройка URI для вывода ссылок

Параметры в ссылках

Код выше создаст ссылки наподобие:

Вызов этого метода сгенерирует URL-адреса наподобие:

Преобразование в JSON

Настройка представления страничного вывода

По умолчанию отрисованные представления для отображения ссылок страничного вывода совместимы с CSS-фреймворком Bootstrap. Но если вы не используете Bootstrap, вы можете определить свои собственные представления для отрисовки этих ссылок. При вызове метода PHP links () на экземпляре страничного вывода передайте первым аргументом имя представления:

Но самый простой способ изменить представления страничного вывода — экспортировать их в ваш каталог resources/views/vendor с помощью команды sh vendor:publish :

Методы экземпляра страничного вывода

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

Комментарии (8)

Как сделать красивый url laravel

А подскажите пожалуйста как сделать ссылки такого вида http://localhost/page-1 или например такого http://localhost/page/1?

Как сделать красивый url laravel

Laravel 5.2.42. Сделал так: создал свой класс пагинации на основе \Illuminate\Pagination\LengthAwarePaginator и в ней изменил public function url($page) под себя.

А так же в контроллере беру данные о странице и из них строю запросы, а потом передаю в пагинатор, который и создаёт ссылки.

В итоге у меня получилось что на главной всегда первая страница, а при переходе на другую адрес уже становится site.ru/blog/page/2. Можно убрать blog/ и тогда получится просто site.ru/page/1 По-хорошему может даже надо разделить контроллеры со страницами и бе3. В планах ещё изучить render() и сделать свой. Может я не совсем правильно делаю, но пока только учусь.

Как сделать красивый url laravel

Как сделать красивый url laravel

Пагинация Массива Ларавелем. 5.5
https://laravel.ru/forum/viewtopic.php?id=3118

Как сделать красивый url laravel

Как сделать красивый url laravel

Если поместить это в div? Что именно уже проделано?

Как сделать красивый url laravel

Я всяко пробовал и в диве, только толку никакого.

Как сделать красивый url laravel

Здравствуйте.
Раньше пагинация работала, а сейчас произошла такая проблема, что когда ты нажимаешь на след страницу у меня просто добавляется category?page=2 и ничего не меняется

Источник

Создаём сайт, используя Laravel и Recurly. Часть 1

Планирование и обработка платежей это легко, но не так легок прием регулярных платежей. Сложности могут возникнуть очень быстро. Вы должны решить, как обрабатывать отказы, данные о платежах должны быть постоянно актуальны, и поддерживать актуальность данных на сайте. И пожалуй, самый важный вопрос — держать своих пользователей в курсе платежной информации на сайте.
К счастью, Recurly — это сервис, который выполняет большую часть задач, связанных с обработкой регулярных платежей. Используя JavaScript-библиотеки, вы сможете создавать защищенные формы для отправки и обновления платежной информации, включающие в себя все важные данные платежной карты.
После того, как вы определили сумму и частоту платежей, Recurly заботится о расписании и принятии платежей, до тех пор, пока клиент не будет отписан. Recurly, также учитывает изменения тарифных планов, расчетов, внесении и вычетов дополнительных платежей.
В первой статье из двух, я покажу Вам как создать платную подписку используя сайт, созданный с использование php-фреймворка Laravel и сервиса приема платежей Recurly. Мы начнём с создания сайта с простой регистрацией, авторизацией и правами пользователя. Затем мы добавим обработку платежей, свяжем её с процессом регистрации, что позволит пользователям покупать различные тарифные планы.

Установка приложения.

Начнём создания приложения с создания новой папки для проекта и запуском следующей команды:

Эта команда создаст новое приложение Laravel, использую Composer, скачает фреймворк и все необходимые зависимости. Позже нам понадобятся несколько библиотек, поэтому добавьте следующие строки в composer.json и запустите composer.phar update

Будет скачана библиотека Authority, которая будет использована для создания ролей пользователей и прав доступа, и библиотека Recurly.
Затем, необходимо настроить соединение с БД указав значение схемы, пользователя, пароля и адресс к БД в файле app/config/database.php. Laravel работает «из коробки» со следующими базами данных: MySql, Posrges, SQLite и SQL Server.
Нам так же необходима будет таблица с пользователями. Вместо того, что бы делать всё «руками», используем механизм миграций, предоставляемый Laravel. Выполните следующую команду:

Эта команда создаст файл миграции в папке app/database/migrations

Вернемся к командной строке и выполним:

Посмотрим в базе данных и увидим что Laravel создал таблицу с пользователями.

Создадим роли пользователей и права.

Для определения типа пользователя и прав для этого пользователя, мы установим пользователям роли. Мы уже скачали библиотеку Authoriry с помощью composer, и сейчас мы должны выполнить ещё несколько шагов для настройки ролей полностью.
В файле app/config/app.php добавьте следующую строку:

Добавьте следующую строку к алиасам:

и опубликуйте файл настроек Authority следующей командой:

Вернемся к файлу настроек позже. А сейчас, мы должны создать несколько дополнительных таблиц в БД. К счастью, Laravel содержит собственные миграции для них. Запустим их следующей командой:

Вы увидите что создалось 3 дополнительных таблицы: permissions, roles, role_user.
Теперь нам необходимо создать модель для работы с ролями и правами доступа. Пока мы их не будем изменять и оставим очень простыми. В app/models/Role.php:

В файле: app/models/Permission.php:

Сейчас мы должны изменить модель User, она уже была создана, а мы добавим связь пользователей с их ролями и правами доступа. Добавьте следующие строки в app/models/User.php:

А теперь заполним базу данных некоторым данными. Откройте файл app/database/seeds/DatabaseSeeder.php и вставьте следующее:

Далее заполним базу данных, выполнив следующую команду:

Создаём шаблон

Сейчас мы создадим общий шаблон для страниц. Скачаем для этого Twitter Bootstrap и положим исходники в папку public, а js-файлы в папку — public/js/libs/
Создадим файл app/views/layouts/default.blade.php со следующим кодом:

Это базовый шаблон для нашего сайта, контент страницы будет выводиться в строке @yield(‘content’).
Далее, создадим файл public/css/style.css:

И наконец, создадим главную страницу нашего сайта. Создайте файл app/views/home/index.blade.php:

@extends говорит Laravel, что надо использовать шаблон по-умолчанию, который мы только что создали.
Не забудем изменить роутинг нашего сайта в файле app/routes.php:

Создаём механизм авторизации

У нас есть пользователи, и теперь мы должны дать им возможность авторизации. В файле app/routse.php, добавим путь к странице входа:

Сейчас мы создадим отображение в файле app/views/auth/login.blade.php. .blacde означает что мы используем шаблонизатор Blade, идущий вместе с Laravel.

Если вы перейдете по адрес /auth/logn вы увидите простую форму входа. Для обработки входа, мы должны будем обработать POST данные. Авторизация в Laravel проста:

Вся магия находится в методе Auth::attempt(), если авторизация успешна создаётся сессия и экземпляр объекта User, доступны через статичный метод Auth::user()
Метод выхода из аккаунта:

Базовая регистрация

Нашей последней задачей, в этой части, является создание процесса регистрации. Создадим путь для регистрации в файле app/routse/php:

Создадим представление в файле /app/views/user/register/index.blade.php:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *