在laravel&中获取基于用户名的个人资料哨兵2而不是用户ID

时间:2013-11-29 16:22:35

标签: php laravel user-interface laravel-4 cartalyst-sentry

我正在使用laravel。 用于身份验证哨兵2。 当用户访问我的网站时,他们将转到页面

http://dolovers.com/profile/13

这里13是用户ID。

我正在研究如何通过其用户名

找到更好的用户

我还希望通过以下方式减少链接:

http://dolovers.com/<username>

我应该如何从sentry2和laravel开始。谢谢您的帮助 :) 个人资料的路线:

# Profile
// Route::get('profile', array('as' => 'profile', 'uses' => 'Controllers\Account\ProfileController@getIndex'));
Route::get('profile', array('as' => 'profile', 'uses' => 'ProfilesController@index'));
Route::post('profile', 'Controllers\Account\ProfileController@postIndex');

1 个答案:

答案 0 :(得分:4)

这是您通过ID找到您的用户的方式:

$user = Sentry::findUserById(13);

或登录

$user = Sentry::findUserByLogin('john.doe@example.com');

$user = Sentry::findUserByLogin('sagiruddin-mondal');

要缩小链接,您需要修改路线:

Route::get('/{userId}', 
             array(
                    'as' => 'user.find.get', 
                    'uses' => 'ProfilesController@index'
                  ) 
           );

Route::post('/{userId}', 
             array(
                    'as' => 'user.find.post', 
                    'uses' => 'ProfilesController@postIndex'
                  ) 
           );

Route::get('/', 
             array(
                    'as' => 'home', 
                    'uses' => 'HomeController@index'
                  ) 
           );

应该让你使用像

这样的路线
http://dolovers.com/<userid>

还可以使用

创建网址
URL::route('user.find.get', array(13));

URL::route('user.find.post', array(13));

我还定义了第二条路线(home)指向

http://dolovers.com/

您的UsersController看起来像:

class UsersController extends Controller {

    protected function findUser($username)
    {
        if ( ! $user = Sentry::findUserByLogin('sagiruddin-mondal'))
        {
            return "user not found";
        }

         return $user->name;
    }

}