FuelPHP: расширение пользовательской модели OrmAuth (требуются настраиваемые поля профиля)

Я изучаю FuelPHP и пытаюсь использовать OrmAuth для обработки процессов аутентификации и авторизации. Мне удалось сгенерировать все «стандартные» таблицы OrmAuth (user, users_permissions, users_metadata и так далее). Однако я не понимаю, как правильно добавлять пользовательские поля в объект пользователя (например, telefon_number). Может ли кто-нибудь помочь мне здесь и привести несколько примеров?

Спасибо.

0

Решение

Во-первых, то, что вы хотите, легко достигается с помощью контейнера 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, но одного может быть достаточно, в зависимости от ваших потребностей.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]