Laravel PHP:从空值错误创建默认对象

时间:2014-11-05 21:23:21

标签: php laravel-4

我正在使用控制器来调用我的一个视图中定义的表单。在控制器中,我有一个简单的'create()'方法,我只想在使用我定义的'Video'模型时调用一个表单。问题是当我尝试调用此函数时,我不断收到“从空值创建默认对象”错误。

控制器(表观\ VideosController.php):

 <?php 

use Acme\repositories\VideoRepository;

use Models\Video;

use Models\Validators as Validators;

class VideosController extends BaseController {

/**
 * The video model
 *
 * @var \Models\Video
 **/
protected $video;


/*  The value defined from my repository
*/

protected $videoRepo;

/**
 * Instantiate the controller
 *
 * @param Models\Video $video
 * @return void
 **/

   public function __construct(VideoRepository $videoRepo)
   {
     $this->videoRepo = $videoRepo;
     /* Old code below 
     $this->video = \App::make('Repositories\VideoRepository');
     */
   }

/* Create a new video by passing in a sub view
Of the form for creating a new video */

   public function create()
   {
    $data = array('type' => 'video');
    $this->layout->content = \View::make('forms.new-video', $data);
   }

}

模型(APP /模型/ video.php):

<?php


class Video extends Eloquent {

    /**
     * The table used by this model
     *
     * @var string
     **/
    protected $table = 'videos';

    /**
     * The primary key
     *
     * @var string
     **/
    protected $primaryKey = 'video_id';

    /**
     * The fields that are guarded cannot be mass assigned
     *
     * @var array
     **/
    protected $guarded = array();

    /**
    *  Enabling soft deleting
    *
    *  @var boolean
    **/
     protected $softDelete = true;


    }

我的表单视图位于“ app \ views \ forms \ new-video.blade.php ”。

我没有正确定义'create()'方法,还是不将文件放在正确的位置?

1 个答案:

答案 0 :(得分:1)

我相信您错过了控制器中$layout属性的声明,因此它不知道将哪个视图用作模板:

/**
 * The layout that should be used for responses.
 */
protected $layout = 'layouts.master';

请参阅http://laravel.com/docs/4.2/templates#controller-layouts