Chuyển tới nội dung chính
Phiên bản: 8.0.0

Option

File: packages/skilldo/cms/src/Support/Option.php
Namespace: SkillDo\Cms\Support\Option
Alias ngắn: \Option

Option là hệ thống lưu trữ cấu hình toàn cục của CMS, được lưu trong bảng system của database. Ngoài các cấu hình mặc định của CMS, bạn có thể thêm các tùy chọn riêng cho Plugin hoặc Theme.

Lưu ý kỹ thuật: Dữ liệu Option được cache vào bộ nhớ app('system') sau lần đọc đầu tiên, nên không ảnh hưởng đến hiệu suất khi gọi nhiều lần.


Option::add()

Thêm một option mới vào database. Nếu $optionValue là array hoặc object, sẽ được tự động serialize.

Option::add(string $name, mixed $value): false|int
ParamTypeMô tảBắt buộc
$namestringTên của option (phải là duy nhất trong DB)
$valuemixedGiá trị của option

Trả về: int (ID bản ghi vừa thêm) hoặc false nếu thất bại.

Option::add('my_plugin_api_key', 'sk-abc123xyz');
Option::add('my_plugin_settings', ['timeout' => 30, 'retries' => 3]);

Option::get()

Truy xuất giá trị của option dựa trên tên. Nếu option không tồn tại, trả về $default.

Option::get(string $name, mixed $default = null): mixed
ParamTypeMô tảBắt buộc
$namestringTên của option
$defaultmixedGiá trị mặc định nếu không tìm thấy
$apiKey = Option::get('my_plugin_api_key');
// 'sk-abc123xyz'

$settings = Option::get('my_plugin_settings');
// ['timeout' => 30, 'retries' => 3] (tự động unserialize)

// Với giá trị mặc định
$timeout = Option::get('my_plugin_timeout', 60);
// 60 (nếu option chưa được tạo)

Option::update()

Cập nhật giá trị của một option. Nếu option chưa tồn tại, hàm sẽ tự động gọi Option::add() để thêm mới.

Option::update(string $name, mixed $value): bool|int
ParamTypeMô tảBắt buộc
$namestringTên của option
$valuemixedGiá trị mới của option

Trả về: true nếu cập nhật thành công, int (ID) nếu được thêm mới, false nếu thất bại.

Option::update('my_plugin_api_key', 'sk-newkey456');

// Vừa update vừa add: an toàn gọi mọi lúc
Option::update('my_plugin_settings', ['timeout' => 60, 'retries' => 5]);

Option::delete()

Xóa một option khỏi database và làm mới cache.

Option::delete(string $name): bool
ParamTypeMô tảBắt buộc
$namestringTên của option

Trả về: true nếu xóa thành công, false nếu thất bại.

Option::delete('my_plugin_api_key');

Option::all()

Lấy toàn bộ cấu hình hệ thống dưới dạng object. Bao gồm cả cấu hình theme.

Option::all(): object
$config = Option::all();
echo $config->general_label; // Tên website
echo $config->my_plugin_api_key; // Option của plugin

Ví Dụ Thực Tế Trong Plugin

// Trong ActivatorService::up() của Plugin — khi kích hoạt
Option::add('my_plugin_smtp_host', 'smtp.gmail.com');
Option::add('my_plugin_smtp_port', 587);

// Trong trang cài đặt Plugin — khi admin lưu form
$smtpHost = request()->input('smtp_host');
Option::update('my_plugin_smtp_host', $smtpHost);

// Khi cần đọc cấu hình để dùng
$host = Option::get('my_plugin_smtp_host', 'smtp.gmail.com');
$port = Option::get('my_plugin_smtp_port', 587);

// Trong ActivatorService::down() — khi gỡ Plugin
Option::delete('my_plugin_smtp_host');
Option::delete('my_plugin_smtp_port');