破布 / 首选项
CodeIgniter 4 的持久用户特定设置
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.3 || ^8.0
- codeigniter4/settings: ^2.1
Requires (Dev)
- codeigniter4/codeigniter4: dev-develop
- tatter/imposter: ^1.0
- tatter/tools: ^1.15
Suggests
- codeigniter4/authentication-implementation: Required to enable database persistence.
This package is auto-updated.
Last update: 2024-09-23 10:41:56 UTC
README
CodeIgniter 4 的持久用户特定设置
快速入门
- 使用 Composer 安装:
> composer require --dev tatter/preferences
- 加载助手函数:
helper('preferences');
- 使用函数获取和设置:
$theme = preference('theme'); preference('theme', 'dark');
描述
Preferences
是一个包装 CodeIgniter 设置 的工具,为每个设置提供用户上下文。这允许您通过单个命令以每个用户为基础获取和设置首选项。
安装
通过 Composer 轻松安装,以利用 CodeIgniter 4 的自动加载功能,并始终保持最新状态
composer require tatter/preferences
或者,通过下载源文件并将其添加到 app/Config/Autoload.php
中手动安装。
下载文件后将其包含在自动加载中,运行任何库迁移以确保数据库正确设置
> php spark migrate -all
Preferences
建议按照 CodeIgniter 认证指南 中的描述使用 Composer 提供的 codeigniter4/authentication-implementation
。如果没有此依赖项,则每个首选项都将仅限于会话持续时间,因此强烈建议您安装和配置一个 支持的包。
用法
Preferences
需要 CodeIgniter 设置,因此您可以使用其文档中描述的所有相同的类和函数。要访问特定于用户的上下文设置,在您通常使用 setting()
的任何地方调用 preference()
函数。
class Home extends Controller { public function index() { return view('welcome', [ 'icon' => preference('Users.avatar'), ]; } public function update_avatar() { if ($icon = $this->request->getPost('icon')) { preference('Users.avatar', $icon); } return redirect()->back(); } }
注意:在使用助手函数之前,务必加载助手文件(
helper('preferences')
)。
preference()
将检索和存储当前认证用户的上下文设置。如果没有用户认证,则将回退到 Session
类,提供半持久性设置,会话持续多久就持续多久。
占位符配置
在大多数情况下,每个设置都应该有一个相应的配置文件。有时这些设置可能不适合现有的逻辑分组,因此此库提供了一个 "占位符" 配置(Tatter\Preferences\Config\Preferences
)。您可以在 *app/ 中添加自己的版本以提供默认值。
<?php namespace Config; class Preferences extends \Tatter\Preferences\Config\Preferences { /** * Slug for the current user theme. */ public string $theme = 'midnight'; }
未指定类的任何函数调用都将引用 Preferences
类。
// Identical calls: $theme = preference('Preferences.theme'); $theme = preference('theme');
提示:不要忘记库和模块可以通过 注册器 提供配置属性。
故障排除
Preferences
是一个非常 "薄" 的库,连接了 Settings
和您选择的认证库。大多数问题可能是与底层库相关,应将其指向那里,但如果您认为此存储库中存在问题或功能请求,请随时打开 Issue 或 Pull Request。