破布/首选项

CodeIgniter 4 的持久用户特定设置

v1.0.0-rc.4 2021-11-23 21:16 UTC

This package is auto-updated.

Last update: 2024-09-23 10:41:56 UTC


README

CodeIgniter 4 的持久用户特定设置

Coverage Status

快速入门

  1. 使用 Composer 安装: > composer require --dev tatter/preferences
  2. 加载助手函数: helper('preferences');
  3. 使用函数获取和设置: $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。