【问题标题】:laravel giving me FatalThrowableError: call to memeber function course() on nulllaravel 给我 FatalThrowableError: call to member function course() on null
【发布时间】: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 所以你会做下面发送的答案?

标签: php laravel


【解决方案1】:

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

<?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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 2018-04-15
    • 2018-11-04
    • 2022-12-02
    • 1970-01-01
    相关资源
    最近更新 更多