[英]PHP + Slim PHP Framework: How to dynamically add stylesheets to the document head?
我用登錄表單,儀表板,注冊頁面和帳戶頁面創建了一個簡單的苗條應用程序。 每個頁面都有自己的路線。 所有頁面使用相同的頁眉和頁腳,通過添加<?php include __DIR__ . '/header.phtml' ?>
來包含這些頁眉和頁腳<?php include __DIR__ . '/header.phtml' ?>
<?php include __DIR__ . '/header.phtml' ?>
和<?php include __DIR__ . '/footer.phtml' ?>
<?php include __DIR__ . '/footer.phtml' ?>
到每個頁面模板的開頭和結尾,頁面內容放置在它們之間。
我想根據查看的頁面動態地包含不同的樣式表,但是我不想只是懶惰地將它們放置在我的.phtml文件中,並將它們呈現在網頁的中間。
我想開發一些if / switch函數,將其放置在header.phtml
文件中,該文件可以識別當前路由並提供指向適當樣式表的鏈接。 將以下代碼放置在文檔頭中:
<?php
if($currRoute === "/dashboard") {
?>
<link rel="stylesheet" type="text/css" href="assets/css/dashboard.css">
<?php
} else if($currRoute === "/register") {
?>
<link rel="stylesheet" type="text/css" href="assets/css/register.css">
<?php
} else if ($currRoute === "/account") {
?>
<link rel="stylesheet" type="text/css" href="assets/css/account.css">
<?php
}
?>
在上面的示例中,是否有任何解決方案來獲取$currRoute
的值,而無需一些復雜的正則表達式,任何其他語言,類庫等?
我沒有嘗試檢索當前路由,而是在每個路由回調中創建了一個包含路由名稱的字符串變量,然后將該名稱作為參數傳遞給渲染器(在這種情況下,我使用的是Slim的php-view包)。 這是一個示例,將字符串"dashboard"
作為參數傳遞給dashboard.phtml
模板文件:
$app->get('/dashboard', function (Request $request, Response $response, array $args) {
$args['pageTitle'] = "dashboard";
return $this->renderer->render($response, 'register.phtml', $args);
});
根據路由名稱,為$args['pageTitle']
鍵分配了一個字符串形式的關鍵字標識符。
然后,在header.phtml
文件中,我創建了一個switch語句,該語句將$args['pageTitle']
與一組硬編碼的字符串進行比較,以確定要加載的適當樣式表:
<head>
<title>Slim 4 PHP Template</title>
<?php
if(isset($pageTitle)) {
switch($pageTitle) {
case "dashboard":
echo "<link rel='stylesheet' type='text/css' href='assets/css/dashboard.css'>";
break;
case "register":
echo "<link rel='stylesheet' type='text/css' href='assets/css/register.css'>";
break;
}
}
?>
</head>
在“ http://example.domain.com/dashboard ”上訪問路由時,將呈現到相應樣式表的鏈接,如下所示:
<head>
<title>Slim 4 PHP Template</title>
<link rel="stylesheet" type="text/css" href="assets/css/dashboard.css">
</head>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.