FuelPHP:扩展 OrmAuth 用户模型(需要自定义配置文件字段)
FuelPHP: Extending OrmAuth user model (need custom profile fields)
我正在学习 FuelPHP 并尝试使用 OrmAuth 来处理身份验证和授权过程。我能够生成所有 "standard" 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
table,但是当您查询用户时,它将自动在该模型实例上可用。
但是,有时这还不够,例如当您想要使用这些属性构建高级查询时。您可能希望该字段出现在 users
table.
中
我为实现这一目标所做的是 documented under the extending the core part of the documentation。基本上我从 OrmAuth 包中扩展了 \Auth\Model\Auth_User
class,像这样:
namespace Model;
class Auth_User extends \Auth\Model\Auth_User
{
/**
* @var array model properties
*/
protected static $_properties = [
// your properties go here
];
}
现在,在您的应用 bootstrap.php
中,您必须告诉自动加载器使用这个 class 而不是 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 @ 第 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
);
我正在学习 FuelPHP 并尝试使用 OrmAuth 来处理身份验证和授权过程。我能够生成所有 "standard" 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
table,但是当您查询用户时,它将自动在该模型实例上可用。
但是,有时这还不够,例如当您想要使用这些属性构建高级查询时。您可能希望该字段出现在 users
table.
我为实现这一目标所做的是 documented under the extending the core part of the documentation。基本上我从 OrmAuth 包中扩展了 \Auth\Model\Auth_User
class,像这样:
namespace Model;
class Auth_User extends \Auth\Model\Auth_User
{
/**
* @var array model properties
*/
protected static $_properties = [
// your properties go here
];
}
现在,在您的应用 bootstrap.php
中,您必须告诉自动加载器使用这个 class 而不是 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 @ 第 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
);