*/ public static function options(): array { return [ self::LIST => '列表', self::FULL => '标准', self::CARD => '图文', ]; } public static function isValid(mixed $value): bool { return is_string($value) && in_array($value, [self::LIST, self::FULL, self::CARD], true); } public static function resolve(?Request $request = null): string { $request ??= request(); foreach ([ $request->query('view'), $request->cookie(self::COOKIE), blog_setting('home_view_mode', config('blog.home_view_mode', self::LIST)), ] as $value) { if (self::isValid($value)) { return $value; } } return self::LIST; } public static function current(): string { $request = request(); $mode = self::resolve($request); if (self::isValid($request->query('view'))) { cookie()->queue(cookie(self::COOKIE, (string) $request->query('view'), 60 * 24 * 30)); } return $mode; } public static function url(string $mode): string { return request()->fullUrlWithQuery(['view' => $mode]); } }