我正在学习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_User
和 Model'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
);