Извините, я не смог найти лучшего заголовка для этого вопроса.
Я хочу показать ссылку «Подписаться» или «Редактировать профиль», в зависимости от того, просматривает ли аутентифицированный пользователь свой профиль или профиль другого пользователя.
Вот мой код блейда:
@if(isLogedIn())
@if($authedUser->id !== $profile->user()->find(1)->id)
{{link_to_action('RelationshipsController@add', 'Follow', $profile->user()->find(1)->id, ['class' => 'button radius'])}}
@else
{{link_to_action('ProfilesController@edit', '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@show:
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
. А зачем тебеfind(1)
? - person lukasgeiter   schedule 17.12.2014{{dd($profile->user()->find(1)->id)}}
передif
вызывает такое же исключение. Я думаю, что с моим ProfileController что-то не так, но я не могу понять, что это такое. - person artronics   schedule 17.12.2014id
.$profile->user()
возвращает объект BelongsTo, поэтому я использовалfind(1)
для получения объекта User. - person artronics   schedule 17.12.2014$authedUser
в этом контексте? - person Volvox   schedule 17.12.2014find
методы, которые ищутid=1
- person artronics   schedule 17.12.2014