2014-11-05 57 views
0

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

控制器(应用\ 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

我相信你缺少你的控制器$layout属性的声明,所以它不知道作为模板使用什么看法:

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

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

+0

这样做的窍门!谢谢! – 2014-11-05 21:51:12

相关问题