我是Laravel 4
和Sentry 2
的新手,但到目前为止我还能活下来。我现在遇到了一个问题,因为当我以userid(1)
身份登录时我想要查看userid(2)
的个人资料我只是看到了用户ID(1)的信息。用户ID(2)。
我知道使用过滤器可能会派上用场,但如果我必须诚实。我不知道我应该看什么等等。
我知道这个网站不是为了给出答案。但是,如果有人可以给我一些答案,在哪里看,我应该记住的等等,非常感谢。
--- --- EDIT
路线:
Route::group(array('before'=>'auth'), function(){
Route::get('logout', 'HomeController@logout');
Route::get('profile/{username}', 'ProfileController@getIndex');
});
Route::filter('auth', function($route)
{
$id = $route->getParameter('id');
if(Sentry::check() && Sentry::getUser()->id === $id) {
return Redirect::to('/');
}
});
ProfileController可
public function getIndex($profile_uname)
{
if(Sentry::getUser()->username === $profile_uname) {
// This is your profile
return View::make('user.profile.index');
} else {
// This isn't your profile but you may see it!
return ??
}
}
查看
@extends('layouts.userprofile')
@section('title')
{{$user->username}}'s Profile
@stop
@section('notification')
@stop
@section('menu')
@include('layouts.menus.homemenu')
@stop
@section('sidebar')
@include('layouts.menus.profilemenu')
@stop
@section('content')
<div class="col-sm-10 col-md-10 col-xs-10 col-lg-10">
<div class="panel panel-info">
<div class="panel-heading"><h3>{{ $user->username }}</h3></div>
</div>
</div>
@stop
@section('footer')
@stop
答案 0 :(得分:1)
这可能对您有用:
<?php
public function getIndex($profile_uname)
{
if(Sentry::getUser()->username === $profile_uname) {
// This is your profile
return View::make('user.profile.index');
} else {
// This isn't your profile but you may see it!
return View::make('user.profile.index')->with('user', Sentry::findUserByLogin($profile_uname));
}
}
如果用户名不是您的登录列,那么您可以分两步完成:
$userId = \Cartalyst\Sentry\Users\Eloquent\User::where('username', $profile_uname)->first()->id;
return View::make('user.profile.index')->with('user', Sentry::findUserById($userId));
如果您的用户模型与用户表关联,则可以执行以下操作:
$userId = User::where('username', $profile_uname)->first()->id;
return View::make('user.profile.index')->with('user', Sentry::findUserById($userId));
在最后一种情况下,您可能会使用相同的模型,因为它们在Sentry和纯粹的Eloquent中是相同的:
$user = User::where('username', $profile_uname)->first();
return View::make('user.profile.index')->with('user', $user);
另外,为了避免与当前登录用户相关的观看次数之间发生冲突,您应该通过$user
或View::share()
View::composer()
重命名您要实例化的$user
变量到$loggedUser
或类似的东西。