2017-01-02 78 views
0

我有一个已经工作了一段时间,但现在我突然收到以下错误web应用程序memeber功能当然():laravel给我FatalThrowableError:打电话的空

Symfony\Component\Debug\Exception\FatalThrowableError: Call to a member function course() on null in /home/forge/default/releases/20161130183258/app/Http/Controllers/CoursePageController.php:37

当我打通文件位置我看到下面的代码:

<?php 

namespace App\Http\Controllers; 

use App\CMS\Page; 
use Illuminate\Http\Request; 

use App\Http\Requests; 

class CoursePageController extends Controller 
{ 

    /** 
    * Display the specified resource. 
    * @param $course_slug 
    * @param $slug 
    * @return \Illuminate\Http\Response 
    * @internal param int $id 
    */ 
    public function show($course_slug, $slug) 
    { 
     $page = $this->getPage($course_slug, $slug); 

     return view($page->layout->templateFullPath()) 
      ->withPage($page); 
    } 

    /** 
    * Gets page by slug. 
    * @param $course_slug 
    * @param $slug 
    * @return mixed 
    */ 
    protected function getPage($course_slug, $slug) 
    { 
     $page = Page::with('layout', 'contentRegions')->whereSlug($slug)->first(); 
     $course = $page->course()->whereSlug($course_slug)->first(); 
     abort_if(! isset($page) || !isset($course), 404); 

     return $page; 
    }} 

不知道为什么我会为$课程获得空错误。我是这个应用程序的新(也是唯一)管理员,我基本上有一个幼儿laravel知识,所以任何帮助将不胜感激。

+2

显然你的$ page变量为空,这意味着没有网页,将符合给定$蛞蝓值。 –

+0

检查页面是否为'isset',然后调用'course()' –

+0

在尝试使用它读取课程 –

回答

0

你必须检查它是否在使用它之前有一个页面:

<?php 

namespace App\Http\Controllers; 

use App\CMS\Page; 
use Illuminate\Http\Request; 

use App\Http\Requests; 

class CoursePageController extends Controller 
{ 

    /** 
    * Display the specified resource. 
    * @param $course_slug 
    * @param $slug 
    * @return \Illuminate\Http\Response 
    * @internal param int $id 
    */ 
    public function show($course_slug, $slug) 
    { 
     $page = $this->getPage($course_slug, $slug); 

     return view($page->layout->templateFullPath()) 
      ->withPage($page); 
    } 

    /** 
    * Gets page by slug. 
    * @param $course_slug 
    * @param $slug 
    * @return mixed 
    */ 
    protected function getPage($course_slug, $slug) 
    { 
     if ($page = Page::with('layout', 'contentRegions')->whereSlug($slug)->first()) { 
      if ($page->course()->whereSlug($course_slug)->first()) { 
       return $page; 
      } 
     } 

     abort(404); 
    } 
}