Я использую контроллер для вызова формы, определенной в одном из моих представлений. Внутри контроллера у меня есть простой метод create(), который я просто хочу использовать для вызова формы при использовании модели "Видео", которую я определил. Проблема в том, что когда я пытаюсь вызвать эту функцию, я продолжаю получать ошибку "Создание объекта по умолчанию из пустого значения".
Контроллер (приложение\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);
}
}
Модель (приложение/модель/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-layouts.