WEB-Программист
Переключить навигацию

Язык

  • Русский
  • Русский
Связаться с нами

Поиск

  • Книги
  • JavaScript
  • HTML и CSS
  • Другие
  • SEO
  • wordpress
  • Дизайн
  • Laravel
  • Phyton
  • React js
  • Android
  • SQL и языки запросов
  • Yii
  • Шрифты
  • Статьи
  • Laravel
  • wordpress
  • Темы Wordpress
  • Интернет магазин
  • JavaScript
  • © 2015-2026 Andrii Beznosko

  • Hosting CityHost

Генерируем ЧПУ в Laravel 5

  • Описания
  • Описание/Скачать

Обычно в ЧПУ страниц используется транслит, перевод или фраза в оригинальном состоянии без изменений. С третьим вариантом проблем возникать не должно, Laravel понимает кириллицу из коробки. Рассмотрим остальные два варианта.

Перевод

Для генерации переведённого ЧПУ нам понадобится пакет Google Translate PHP. Устанавливаем его командой composer require stichoza/google-translate-php.

Дальше нужно определиться, где и когда мы будем генерировать переведённый ЧПУ. Можно делать это автоматически при сохранении сущности (тут множество вариантов — события модели, трейт в контроллере с нужным методом и т.д.) или сделать кнопку в интерфейсе рядом с названием сущности, при нажатии на которую у сервера будет запрашиваться перевод и писаться в поле ЧПУ.

В данном примере я воспользуюсь вторым вариантом, потому как он более гибкий. У нас будет выбор — сгенерировать ЧПУ автоматически или ввести вручную.

Сам метод для перевода можно разместить в отдельном контроллере, например, SeoController или сделать трейт, который при подключении к контроллеру сущности будет добавлять метод. Тут выбор за вами.

Сам метод:

/**
 * @param Request $request
 * @return \Illuminate\Http\JsonResponse
 */
public function getTranslatedSlug(Request $request)
{
    // получаем текст из запроса
    $text = $request->get('text');

    // проверяем на пустоту
    if (!$text || trim($text) === "") {
        return response()->json(["result" => ""]);
    }

    // создаём наш Google Translate клиент
    // первым аргументом вводится язык источника
    // вторым — язык, на который нужно перевести
    // соответственно, если первый аргумент null, то производится автоматическое определение языка
    $tr = new TranslateClient(null, 'en');
    
    // переводим и преобразуем в корректный url
    $translatedSlug = str_slug($tr->translate($text));

    // возвращаем
    return response()->json(["result" => $translatedSlug]);
}

Собственно, вот и всё, осталось написать фронтенд на пару строк. Можно лапшой на jQuery, примерно так:

$('#translate-slug').on('click', function(e) {
    e.preventDefault();
    var url = '/seo/translated-slug';

    $.ajax(url, {
        dataType: "json",
        data: { text: $('#name').val() },
        success: function(resp) {
            $('#slug').val(resp.result);
    

}
});
});
Транслит

Для транслита нам уже не обязательно посылать что-либо на сервер, так как его можно сгенерировать на клиенте. Поэтому достаточно воспользоваться каким-либо готовым плагином, например, jQuery Generate URL или написать своё решение. Если вы всё же хотите сгенерировать транслит на сервере, то можно использовать str_slug().

Заключение

В заключение приведу ссылку на рекомендации Google о структуре URL на сайте. Смотреть в раздел «Структура URL сайта».

Комментарии
Всего комментариев: 0
Оставить комментарий Отменить ответ

Ваш email не будет опубликован.

Жанр: Главная » Статьи » Laravel » Генерируем ЧПУ в Laravel 5
Статус: Для продвинутых программистов
Ссылка на оригинал статьи (Если указана или эта статья не авторская) Скачать
На сайт предоставил Янв 2, 2016 09:15 Andriy

Статьи опубликованные на сайте WEB-Программист указаны со ссылками на источник. Администрация сайта не несет ответственность за их использование Вами

Laravel уроки,Laravel статьи, Laravel перевод, Laravel на русском
Previous Next

Смотри также:

Магия Laravel: динамические where

Laravel предоставляет нам возможность получать данные из базы вызывая методы классаIlluminate\Database\Query\Builder на наших моделях. Сегодня речь пойдёт об одном из таких методов, а именно о динамическом where. Благодаря нему мы можем выбирать данные, фильтруя их по различным атрибутам нашей модели....

Интеграционное тестирование в Laravel 5.1: Мощные интеграционные тесты в несколько строк

Интеграционные тесты? Интеграционные тесты — это то, чем вы тестируете приложение как единое целое. Они являются противоположностью юнит-тестов, которые тестируют части вашего приложения отдельно друг от друга. Обычно интеграционные тесты предоставляют какие-либо данные вашему приложению (часто просто инструкции, например, «посетить...

Уроки по Laravel 4.2 от Дмитрия Афанасьва

Хорошие уроки по Laravel 4.2 Очень полезные уроки, много конкретики и нечего лишнего.   Урок 1 Установка Laravel https://youtu.be/D5bF7U-mjAA?list=PLoonZ8wII66honbGtsANipGm-kOMajK2q Урок 2 Laravel: Создание блога - 1 https://youtu.be/Y9ddtSxFz_U?list=PLoonZ8wII66honbGtsANipGm-kOMajK2q Урок 3 Laravel: Создание блога - 2 https://youtu.be/x5eSz6HHTkU?list=PLoonZ8wII66honbGtsANipGm-kOMajK2q Урок 4 Laravel: Создание блога...

Паттерн Репозиторий и Laravel

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

Работа с nullable полями в Eloquent в Laravel

Вступление Если у вас есть несколько моделей в Laravel с одним nullable полем, создание мутатора для этого поля — процесс достаточно тривиальный: public function setNicknameAttribute($nickname) { $this->attributes['nickname'] = trim($nickname) == '' ? null : trim($nickname); }   Здесь мы проверяем...

Связаться с нами

- Премиум темы и плагины WP Star бесплатно -

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Cookie settingsACCEPT
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT