Php 在Laravel 5.8中显示文本页

Php 在Laravel 5.8中显示文本页,php,laravel,laravel-5,Php,Laravel,Laravel 5,我是拉拉维尔的初学者。我在我的项目中使用了Laravel 5.8 我对文本页面有问题 文本页面模型 class TextPages extends Model { protected $quarded = []; protected $fillable = ['company_id', 'enable', 'system', 'page_type', 'page_type2', 'page_type3', 'page_type4', 'page_type5', 'id_categ

我是拉拉维尔的初学者。我在我的项目中使用了Laravel 5.8

我对文本页面有问题

文本页面模型

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显示文本页面:

Route::get('/p/{slug}', 'FrontendController@txtPages')->name('txtPages');
网址:name.com/p/page-name

我需要对页面进行路由,但在URL中没有此“/p”-我想访问文本页面的URL:name.com/page-name

页面是在CMS中动态创建的

如何操作?

只需从路线中删除“p”,如下所示:

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

如果要创建与
/p/{slug}
相同的新url,则可以在此路由之后创建新路由

下面是这个例子

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

尝试此解决方案。

您已经创建了url
Route::get('cms/','CMSController@index')->name('indexAdmin')这就是为什么它不会请求您想要的url。是的,但是这个路由:route::get('cms/','CMSController@index')->name('indexAdmin');不是文本页面-这是管理面板。不管您的url是用于管理还是用于前端。如果您正在使用相同的URL创建两个路由,则将执行最后执行的路由。在你的情况下,同样的事情也会发生。如果你想分开你的管理员cms,那么添加前缀
admin
,将其与你的文本页面url区分开来。哪些路由对我来说是相同的?我有一些类似的东西:Route::group(['prefix'=>'cms','middleware'=>'auth'],function(){一条您定义为如下的路由:
Route::get('cms/'),'CMSController@index')->name('indexAdmin');
和我们建议的其他
Route::get('/{slug}','FrontendController@txtPages')->name('txtPages');
。在我们建议的路径中。如果您将
cms
作为slug值传递,则此路径也类似于
route::get('cms/,'CMSController@index“)->name('indexAdmin');
。你明白我的意思吗?这两条路线都是“txtPages”的绕射路线。你可以使用“www.domain.com/page slug”访问你可以这样想:www.domain.com/super-holiday-in-poland-123?其中123是页面id?这种结构的路由是什么样的?例如,你的页面slug是“test1”,那么你可以在该页面上加上“www.domain.com/test1”。