是否有一种在CakePHP应用程序中存储用户首选项的首选方法?

时间:2011-08-14 18:24:15

标签: php cakephp settings preferences

我想知道是否有一种广泛接受的方法可以在CakePHP应用程序中存储用户的首选项。例如,我能想到的一些方法是:

  1. 将用户模型中的各个设置作为字段。
  2. 拥有一个带有键和值字段的首选项表。
  3. 拥有一个首选项表,每个用户有一个条目,首选项为字段。 (与我想的第一类似)
  4. 对于可能会更改或扩展的应用程序(即可能会考虑添加或删除首选项的应用程序),是否有更好的方法?

3 个答案:

答案 0 :(得分:2)

您可能希望查看CakeDC KeyvalueBehavior中的Utils plugin作为起点。

将插件解压缩到Plugin/Utils/并创建一个名为preferences的数据库表,其中包含以下字段:user_idfieldvalue

<?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');

答案 1 :(得分:0)

如果要在Web界面上添加或删除首选项(不更改数据库模式),则需要第二个选项(EAV模型)。缺点是,查询会非常复杂。

但如果偏好变化很少,那就做第3次。

答案 2 :(得分:-2)

您还可以考虑在Cookie中存储依赖于用户的非关键信息。寿命很长,这可能就足够了。