fix: theme('asset', path, name) 忽略指定主题的 bug
theme() 辅助函数 asset 分支只传了路径,丢弃第二个参数(主题名),导致主题管理页所有卡片都显示激活主题的截图。修复透传,并补回归测试
This commit is contained in:
@@ -24,7 +24,7 @@ if (! function_exists('theme')) {
|
|||||||
$manager = app(ThemeManager::class);
|
$manager = app(ThemeManager::class);
|
||||||
|
|
||||||
return match ($method) {
|
return match ($method) {
|
||||||
'asset' => $manager->assetUrl($args[0] ?? ''),
|
'asset' => $manager->assetUrl($args[0] ?? '', $args[1] ?? null),
|
||||||
'var' => $manager->variable($args[0] ?? '', $args[1] ?? null),
|
'var' => $manager->variable($args[0] ?? '', $args[1] ?? null),
|
||||||
'vars' => $manager->variables(),
|
'vars' => $manager->variables(),
|
||||||
'name' => $manager->active(),
|
'name' => $manager->active(),
|
||||||
|
|||||||
@@ -59,4 +59,11 @@ class ThemeTest extends TestCase
|
|||||||
Setting::set('active_theme', 'does-not-exist');
|
Setting::set('active_theme', 'does-not-exist');
|
||||||
$this->get('/')->assertOk();
|
$this->get('/')->assertOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_theme_asset_url_respects_explicit_theme(): void
|
||||||
|
{
|
||||||
|
// 回归:theme('asset', path, name) 必须用指定主题,而不是激活主题(否则主题管理页所有卡片显示同一张图)
|
||||||
|
$this->assertStringContainsString('/themes/sablog/assets/screenshot.png', theme('asset', 'screenshot.png', 'sablog'));
|
||||||
|
$this->assertStringContainsString('/themes/modern/assets/screenshot.png', theme('asset', 'screenshot.png', 'modern'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user