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



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

控制器(app\VideosController.php):

 <?php 
use AcmerepositoriesVideoRepository;
use ModelsVideo;
use ModelsValidators as Validators;
class VideosController extends BaseController {
/**
 * The video model
 *
 * @var ModelsVideo
 **/
protected $video;

/*  The value defined from my repository
*/
protected $videoRepo;
/**
 * Instantiate the controller
 *
 * @param ModelsVideo $video
 * @return void
 **/
   public function __construct(VideoRepository $videoRepo)
   {
     $this->videoRepo = $videoRepo;
     /* Old code below 
     $this->video = App::make('RepositoriesVideoRepository');
     */
   }
/* 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/models/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()"方法,还是没有将文件放在正确的位置?

我认为您的控制器中缺少$layout属性的声明,因此它不知道使用什么视图作为模板:

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

请参阅http://laravel.com/docs/4.2/templates#controller-布局。

最新更新