Извините, я не мог найти лучшего заголовка для этого вопроса.Laravel blade: if..else заявление ведет себя неожиданно
Я хочу показать "follow" или Ссылка "Редактировать профиль", зависит от того, просматривает ли пользователь, прошедший проверку подлинности, свой профиль или профиль другого пользователя.
Вот мой код лезвия:
@if(isLogedIn())
@if($authedUser->id !== $profile->user()->find(1)->id)
{{link_to_action('[email protected]', 'Follow', $profile->user()->find(1)->id, ['class' => 'button radius'])}}
@else
{{link_to_action('[email protected]', 'Edit Profile', $authedUser->id, ['class' => 'button radius'])}}
@endif
@endif
Теперь, если я смотрю профили других пользователей все в порядке (if
заявления просто работает, и я могу видеть Follow
ссылки), однако, если я стараюсь следить за своими собственный профиль, laravel исключает исключение: Trying to get property of non-object
. Дело в том, что $profile->user()->find(1)->id
выбрасывает это исключение, потому что когда я жестко запрограммировал это целое число, все работало правильно.
Вот строка, которая вызывает исключение:
<?php if($authedUser->id !== $profile->user()->find(1)->id): ?>
PS1: Проблема не вложен if
с.
PS2: В этой ситуации мой код никогда не касается else
.
EDIT: Вот ProfileController @ шоу:
public function show($userId)
{
try{
$profile = $this->profileRepo->byForeignKey('user_id',$userId)->firstOrFail();
}catch(ModelNotFoundException $e){
throw new ProfileNotFoundException('profile not found');
}
return View::make('profiles.show')->with('profile', $profile);
}
Я уверен, что это потому, что '$ profile-> user() -> find (1)' возвращает 'null'. Зачем вам «найти (1)» в любом случае? – lukasgeiter
'{{dd ($ profile-> user() -> find (1) -> id)}}' перед 'if' вызывает одно и то же исключение. Я думаю, что что-то не так с моим ProfileController, но я не понимаю, что это такое. –
, потому что мне нужен идентификатор пользователя. '$ profile-> user()' возвращает объект BelongsTo, поэтому я использовал 'find (1)' для получения объекта User. –