FuelPHP:扩展OrmAuth用户模型(需要自定义配置文件字段)


FuelPHP: Extending OrmAuth user model (need custom profile fields)

我正在学习FuelPHP,并尝试使用OrmAuth来处理身份验证和授权过程。我能够生成所有"标准"OrmAuth 表(用户、users_permissions、users_metadata等)。但是,我不明白将自定义字段添加到用户对象(例如,telefon_number)的正确方法是什么。有人可以在这里帮助我并举一些例子吗?

谢谢。

首先,使用已在用户模型中配置的 EAV 容器(来自 OrmAuth 包)可以轻松实现所需的内容。您只需要在模型上设置任何元数据,然后保存它,如下所示:

$user = Auth_User::find(1);
$user->telefon_number = '+36 30 taratatta-taratatta';
$user->save();

这会将telefon_number放在users_metadata表中,但当您查询用户时,它将在该模型实例上自动可用。

但是,有时这还不够,例如,当您想要使用这些属性构建高级查询时。您可能希望该字段出现在users表中。

我为实现这一目标所做的工作记录在文档的扩展核心部分下。基本上,我从 OrmAuth 包扩展了 'Auth'Model'Auth_User 类,如下所示:

namespace Model;
class Auth_User extends 'Auth'Model'Auth_User
{
    /**
     * @var array   model properties
     */
    protected static $_properties = [
        // your properties go here
    ];
}

现在,在应用程序的bootstrap.php中,您必须告诉自动加载器使用此类而不是 OrmAuth 包中的此类:

'Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
    'Auth_User' => APPPATH.'classes/model/auth/user.php',
    'Model''Auth_User' => APPPATH.'classes/model/auth/user.php',
));

注意:此示例同时设置 Auth_UserModel'Auth_User ,但根据您的需要,一个可能就足够了。

要扩展 fuelphp 中的用户配置文件字段,请访问。

PKGPATH//auth/

classes/auth/login/ormauth.php @ line 225更改行

public function create_user($username, $password, $email, $group = 1, Array $profile_fields = array())

到类似的东西

public function create_user($firstname, lastname, $username, $password, $email, $group = 1, Array $profile_fields = array())

继续您的代码并添加

$user = Auth::create_user(
    $firstname,
    $lastname,
    Input::post('username'),
    Input::post('password'),
    Input::post('email'),
    1,//group id
);