Laravel Voyager /admin 在定义页面路由后无法工作
Laravel Voyager /admin not working after routes to pages defined
我这样做是为了可以访问索引以外的页面。这非常有效。在管理面板中,我可以查看除 /admin
以外的所有页面。所以我可以查看 /admin/posts
和 /admin/media
页面等等
我遇到错误
Trying to get property of non-object
它在我的 show.blade:
中引用了这一行
<header class="masthead" style="background-image: url('/storage/{{ $page->image }}')">
我理解这是因为没有 $page->image
对象,并且相信 /admin/something
被视为 post,而 /admin
是一个页面等等它试图寻找这个不存在的对象?
我想要的是 /admin
页面像以前一样加载,同时保留 pages/show.blade.php
在整个网站前端提供的功能。对于我现有的代码来说,几乎不用考虑 /admin
.
我试过了
$host = $_SERVER['REQUEST_URI'];
if($host !== '/admin')
{
my show.blade.php content here
}
但这仍然无法避免管理页面被视为一个页面,因此仍在查看 show.blade 文件,因此我需要创建一个自定义 /admin
页面,我现在宁愿坚持开箱即用的 voyager 管理页面。
路线:
Route::get('/', 'TrainController@index');
Route::get('post/{slug}', 'TrainController@show');
Route::get('{slug}', 'PagesController@show');
Route::group(['prefix' => 'admin'], function () {
Voyager::routes();
页面控制器
<?php
namespace App\Http\Controllers;
use App\Page;
use Illuminate\Http\Request;
class PagesController extends Controller
{
public function show($slug)
{
$page = Page::findBySlug($slug);
return view('page.show', ['page' => $page]);
}
}
页面模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Page extends Model
{
public static function findBySlug($slug)
{
return static::where('slug', $slug)->first();
}
}
pages/show.blade.php
@extends('layouts.index')
@section('header')
<!-- Page Header -->
<header class="masthead" style="background-image: url('/storage/{{ $page->image }}')">
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="page-heading"> <h1>{!! $page->title !!}</h1>
<span class="subheading"></span>
</div>
</div>
</div>
</div>
</header>
@stop
@section('content')
<!-- Main Content -->
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
{!! $page->body !!}
</div>
</div>
</div>
@stop
if (!Request::is('admin'))
{
Route::get('{slug}', 'PagesController@show');
}
我这样做是为了可以访问索引以外的页面。这非常有效。在管理面板中,我可以查看除 /admin
以外的所有页面。所以我可以查看 /admin/posts
和 /admin/media
页面等等
我遇到错误
Trying to get property of non-object
它在我的 show.blade:
中引用了这一行<header class="masthead" style="background-image: url('/storage/{{ $page->image }}')">
我理解这是因为没有 $page->image
对象,并且相信 /admin/something
被视为 post,而 /admin
是一个页面等等它试图寻找这个不存在的对象?
我想要的是 /admin
页面像以前一样加载,同时保留 pages/show.blade.php
在整个网站前端提供的功能。对于我现有的代码来说,几乎不用考虑 /admin
.
我试过了
$host = $_SERVER['REQUEST_URI'];
if($host !== '/admin')
{
my show.blade.php content here
}
但这仍然无法避免管理页面被视为一个页面,因此仍在查看 show.blade 文件,因此我需要创建一个自定义 /admin
页面,我现在宁愿坚持开箱即用的 voyager 管理页面。
路线:
Route::get('/', 'TrainController@index');
Route::get('post/{slug}', 'TrainController@show');
Route::get('{slug}', 'PagesController@show');
Route::group(['prefix' => 'admin'], function () {
Voyager::routes();
页面控制器
<?php
namespace App\Http\Controllers;
use App\Page;
use Illuminate\Http\Request;
class PagesController extends Controller
{
public function show($slug)
{
$page = Page::findBySlug($slug);
return view('page.show', ['page' => $page]);
}
}
页面模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Page extends Model
{
public static function findBySlug($slug)
{
return static::where('slug', $slug)->first();
}
}
pages/show.blade.php
@extends('layouts.index')
@section('header')
<!-- Page Header -->
<header class="masthead" style="background-image: url('/storage/{{ $page->image }}')">
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="page-heading"> <h1>{!! $page->title !!}</h1>
<span class="subheading"></span>
</div>
</div>
</div>
</div>
</header>
@stop
@section('content')
<!-- Main Content -->
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
{!! $page->body !!}
</div>
</div>
</div>
@stop
if (!Request::is('admin'))
{
Route::get('{slug}', 'PagesController@show');
}