Есть ли предпочтительный способ сохранить настройки пользователя в приложении CakePHP? - PullRequest
1 голос
/ 14 августа 2011

Мне было интересно, есть ли общепринятый способ хранения пользовательских настроек в приложении CakePHP.Например, я могу придумать несколько способов:

  1. Наличие отдельных настроек в пользовательской модели в качестве полей.
  2. Наличие таблицы предпочтений с полем ключа и значения.
  3. Наличие таблицы настроек с одной записью на пользователя и настройками в качестве полей.(Полагаю, что аналогично первому)

Есть ли способ, который может быть лучше для приложения, которое может измениться или расшириться (т. Е. Тот, который может учитывать предпочтения для добавления или удаления)?1011 *

Ответы [ 3 ]

2 голосов
/ 15 августа 2011

Возможно, вы захотите взглянуть на KeyvalueBehavior в плагине CakeDC Utils в качестве отправной точки.

Извлечь плагин в Plugin/Utils/ и создать таблицу базы данныхВызывается preferences со следующими полями: user_id, field, value

<?php
class Preference extends AppModel {

    $actsAs = array('Utils.Keyvalue');

}

Затем вы можете сохранять и извлекать предпочтения следующим образом (при условии User hasMany Preferences):

$this->User->Preference->saveSection($this->Auth->user('id'), array(
    'Preference' => array(
        'dob' => 'mm/dd/yyyy',
        'gender' => 'm|f|n',
        'url' => 'http://www.example.com',
    )
), 'Profile');

$this->User->Preference->getSection($this->Auth->user('id'), 'Profile');
0 голосов
/ 15 августа 2011

Вы также можете хранить зависимую от пользователя некритическую информацию в Cookie. При длительном сроке службы этого может быть достаточно.

0 голосов
/ 14 августа 2011

Если вы хотите добавить или удалить предпочтение в веб-интерфейсе (без изменения схемы БД), вам потребуется второй вариант (модель EAV).Недостатком является то, что запросы будут довольно сложными.

Но если изменения предпочтений редки, сделайте третий.

...