Laravel Blade - @if (false) приводит к ошибке «Попытка получить свойство необъекта» - PullRequest
0 голосов
/ 04 декабря 2018

В моем шаблоне блэйда есть проверка @if, которая, если она оказывается ложной, приводит к ошибке "Trying to get property of non-object".

В @if я просто вызываю метод дляпосмотрите, есть ли какие-либо результаты, которые возвращают логическое значение:

@if( Book::isUserCoauthor($book, Auth::user()->id) )

@else

Но если оно возвращает false, я получаю ошибку.Разве @if не сможет обработать условие false?

Если я сделаю следующее, произойдет та же ошибка:

@if ( false )

Я использую Laravel 4.2.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Если существует только ошибка, когда условие в предложении if() переводится в false, вы, скорее всего, обращаетесь к свойству в блоке else, которое не следует делать.

@if( !Book::isUserCoauthor($book, Auth::user()->id) )
   // this seems fine
@else
   // here you are doing something bad
@endif
0 голосов
/ 04 декабря 2018

Я думаю, что ваша проблема в том, что вы пытаетесь получить идентификатор пользователя, даже если он не аутентифицирован.

Таким образом, вы можете улучшить проверку, сначала проверив, аутентифицирован ли пользователь илинет, если только весь этот вид не защищен промежуточным программным обеспечением auth.

@if( Auth::check() && Book::isUserCoauthor($book, Auth::user()->id) )
...