Я изучаю FuelPHP и пытаюсь использовать OrmAuth для обработки процессов аутентификации и авторизации. Мне удалось сгенерировать все «стандартные» таблицы OrmAuth (user, 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
Таблица.
Что я сделал, чтобы добиться этого, документировано в рамках расширения основной части документации. В основном я продлил \Auth\Model\Auth_User
класс из пакета OrmAuth, например так:
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
, но одного может быть достаточно, в зависимости от ваших потребностей.
Других решений пока нет …