2013-09-07 5 views
3

В папке Layouts, у меня есть макет под названием signup.blade.phpМакеты метательный «Попытка присвоить свойство не-объекта» В Laravel 4

В мой контроллер, я задаю раскладку к нему, как так:

protected $layout = 'layouts.signup'; 

В отдельной папке, названной «регистрация» у меня есть файл под названием «signup1.blade.php» Он содержит ваш типичный шаблон лезвия материала. Это раздел под названием «контент». Перед кодом у меня есть

@section('content') 

и у него есть @stop в конце.

Моего контроллер выглядит следующим образом:

public function SignUp() 
{  
    $this->layout->content = View::make('signup.signup1'); 
} 

расстраивает часть является то, что это работает с кириллицей и контроллером. Я дважды проверял, что они одинаковые, и этот не работает. Любые предложения будут ценны. Спасибо.

+0

Cn вы показываете сообщение об ошибке? – fideloper

+0

http://imgur.com/wZIr4WW –

ответ

4

Итак, предполагая, что этот контроллер расширяет BaseController (он должен работать для $ layout), code execution sets$this->layout - View::make($this->layout).

Ваша ошибка, кажется, показывает, что $this->layout не получает установленный объект View правильно.

Попробуйте запустить это и посмотреть, является ли объект $this->layout объектом/классом, и если да, то какой класс он есть.

public function SignUp() 
{  
    echo gettype($this->layout); 
    echo get_class($this->layout); 
} 

Зная, что $this->layout не переодеваться в View объекта означает, что метод setupLayout() либо не называется, или, скорее, не результат View::make($this->layout) не правильный взгляд (возможно, он молча неудачу по какой-то причине).

Вышеуказанные шаги, надеюсь, дают вам ключ к тому, что происходит там. Возможно, layouts.signup - это не макет, который находит приложение?

Как выглядят ваши маршруты?

+0

Хорошо, выяснил причину. Если ваше имя класса совпадает с именем вашего макета, вы получаете эту ошибку. –

+1

Я могу поручиться за это решение, потому что у меня была такая же проблема. Я не расширил «BaseController», а просто «Контроллер», но после исправления ошибки (т. Е. Расширения «BaseController») он работал. Благодарю. – racl101

1

Изменить

class UsersController extends Controller 

в

class UsersController extends BaseController 

Надеюсь, автор Confide исправляет эту :-)

Смежные вопросы