【发布时间】:2017-05-16 21:59:08
【问题描述】:
我有一个已经运行了一段时间的网络应用程序,但现在我突然收到以下错误:
Symfony\Component\Debug\Exception\FatalThrowableError: 调用 成员函数 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;
}}
不知道为什么我会收到 $course 的 null 错误。我是这个应用程序的新的(也是唯一的)管理员,我基本上有一个蹒跚学步的孩子的 laravel 知识,所以任何帮助将不胜感激。
【问题讨论】:
-
显然您的 $page 变量为空,这意味着没有与给定 $slug 值匹配的页面。
-
检查页面是否
isset,然后调用course() -
您应该在尝试使用 $page 获取课程之前执行 abort_if() 检查
-
@jedrzej.kurylo 所以你会做下面发送的答案?