Хобрук: Ваш путь к мастерству в программировании

Отображение текстовых страниц в Laravel 5.8

Я новичок в Laravel. Я использую в своем проекте Laravel 5.8.

У меня проблема с текстовыми страницами.

Модель TextPages

class TextPages extends Model
{
    protected $quarded = [];
    protected $fillable = ['company_id', 'enable', 'system', 'page_type', 'page_type2', 'page_type3', 'page_type4', 'page_type5', 'id_category_page', 'id_category_page2', 'id_category_page3', 'id_category_page4', 'id_category_page5', 'id_categories_of_photos', 'author_add', 'author_update', 'title_on_the_list', 'visible_on_the_top_menu', 'visible_on_the_left_menu', 'visible_on_promo_box', 'date', 'hideData',  'dateToShow', 'title', 'description', 'keywords', 'short_content', 'content', 'url_address'];
}

Схема:

Schema::create('text_pages', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('company_id')->unsigned();
            $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
            $table->boolean('enable')->default(0);
            $table->boolean('system')->default(0);
            $table->bigInteger('page_type')->default(0);
            $table->bigInteger('page_type2')->default(0);
            $table->bigInteger('page_type3')->default(0);
            $table->bigInteger('page_type4')->default(0);
            $table->bigInteger('page_type5')->default(0);
            $table->bigInteger('id_category_page')->default(0);
            $table->bigInteger('id_category_page2')->default(0);
            $table->bigInteger('id_category_page3')->default(0);
            $table->bigInteger('id_category_page4')->default(0);
            $table->bigInteger('id_category_page5')->default(0);
            $table->bigInteger('id_gallery')->default(0);
            $table->bigInteger('author_add')->default(0);
            $table->bigInteger('author_update')->default(0);
            $table->string('title_on_the_list', 200);
            $table->boolean('visible_on_the_top_menu')->default(0);
            $table->boolean('visible_on_the_left_menu')->default(0);
            $table->boolean('visible_on_promo_box')->default(0);
            $table->date('date');
            $table->string('file', 160)->nullable();
            $table->boolean('hideData')->default(0);
            $table->date('dateToShow')->nullable();
            $table->string('title', 200);
            $table->string('description', 155);
            $table->string('keywords', 155);
            $table->longText('short_content')->nullable();
            $table->longText('content')->nullable();
            $table->string('url_address', 160)->nullable();
            $table->timestamps();
            $table->engine = "InnoDB";
        });

web.php

Route::get('/', 'FrontendController@index')->name('index');
Route::get('/index', 'FrontendController@index')->name('index');
Route::post('/acceptUserAge', 'FrontendController@acceptUserAge')->name('acceptUserAge');
Route::get('/p/{slug}', 'FrontendController@txtPages')->name('txtPages');

// access only fro user with role USER
Route::group(['prefix' => 'admin'], function () {
    Route::get('/', 'BackendController@index')->name('adminHome')->middleware(['CheckRole:user,userPremium,userCompany,userSponsor,UserGuest']);
});

// access only fro user with role ADMIN
Route::get('cms/', 'CMSController@index')->name('indexAdmin');
Route::get('cms/login', 'CMSController@loginAdmin')->name('loginAdmin');

Route::group(['prefix' => 'cms', 'middleware' => 'auth'], function () {
    Route::get('/adminLoginHistory', 'CMSController@adminLoginHistory')->name('adminLoginHistory')->middleware(['CheckRole:admin,telemarketer,receptionist,adminCompany'])->middleware('verified');
    Route::get('/paymentRegister', 'CMSController@paymentRegister')->name('paymentRegister')->middleware(['CheckRole:admin'])->middleware('verified');
    Route::match(['GET'], '/paymentRegisterEdit' . '/{id}', 'CMSController@paymentRegisterEdit')->name('paymentRegisterEdit')->middleware(['CheckRole:admin'])->middleware('verified');
});

Auth::routes(['verify' => true]);

В настоящее время я использую маршрут для отображения текстовых страниц:

Route::get('/p/{slug}', 'FrontendController@txtPages')->name('txtPages');

Адрес сайта: name.com/p/page-name

Мне нужно выполнить маршрутизацию для страниц, но без этого "/ p" в URL-адресе - я хотел бы перейти по URL-адресу для текстовых страниц: name.com/page-name

Страницы динамически создаются в CMS.

Как это сделать?

07.06.2019

Ответы:


1

Если вы хотите создать новый URL-адрес, который также работает так же, как /p/{slug}, вы можете создать новый маршрут после этого маршрута.

Ниже приведен образец этого

Route::get('/p/{slug}', 'FrontendController@txtPages')->name('txtPages');
Route::get('/{slug}', 'FrontendController@txtPages')->name('txtPages');

Здесь будет URL для обоих

www.domain.com/p/page-name
www.domain.com/page-name

попробуйте это решение.

07.06.2019
  • вы уже создали этот URL Route::get('cms/', 'CMSController@index')->name('indexAdmin'); Вот почему он не будет запрашивать тот URL, который вам нужен. 07.06.2019
  • да, но этот маршрут: Route :: get ('cms /', 'CMSController @ index') - ›name ('indexAdmin'); это не текстовая страница - это админка 07.06.2019
  • не имеет значения, что ваш URL-адрес предназначен для администратора или интерфейса. если вы создаете два маршрута с одинаковыми URL-адресами, будет выполнен последний выполненный маршрут. В вашем случае происходит то же самое. если вы хотите разделить свою административную cms, добавьте префикс admin, чтобы отличать его от URL-адреса вашей текстовой страницы. 07.06.2019
  • какие маршруты подходят для меня? У меня есть что-то вроде этого: Route :: group (['prefix' = ›'cms', 'middleware' =› 'auth'], function () { 07.06.2019
  • один маршрут, который вы определили, как этот Route::get('cms/', 'CMSController@index')->name('indexAdmin');, и другой, который мы предложили Route::get('/{slug}', 'FrontendController@txtPages')->name('txtPages');. По предложенному нами маршруту. если вы передадите cms в качестве значения slug, тогда этот маршрут также будет выглядеть так Route::get('cms/', 'CMSController@index')->name('indexAdmin');. вы поняли мою точку зрения? 07.06.2019
  • Теперь я понимаю. Как это можно изменить для правильной работы? 07.06.2019
  • Позвольте нам продолжить это обсуждение в чате. 07.06.2019

  • 2

    Просто удалите "p" из маршрута следующим образом:

    Route::get('/{slug}', 'FrontendController@txtPages')->name('txtPages');
    
    07.06.2019
  • Оба маршрута различны для 'txtPages', к которому вы можете получить доступ, используя www.domain.com/page-slug 07.06.2019
  • вы думаете примерно так: www.domain.com/super-holiday-in-poland-123? Где 123 - идентификатор страницы? как будет выглядеть маршрут для такой конструкции? 07.06.2019
  • Например, ярлык вашей страницы - test1, тогда вы можете просмотреть эту страницу с помощью www.domain.com/test1. 07.06.2019
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..