PHP + Slim PHP 框架:如何将样式表动态添加到文档头部?

我创建了一个简单的超薄应用程序,其中包含登录表单、仪表板、注册页面和帐户页面。每个页面都有自己的路线。所有页面都使用相同的页眉和页脚,它们分别通过在每个页面模板的开头和结尾添加<?php include __DIR__ . '/header.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在没有一些复杂的正则表达式、任何其他语言、类库等的情况下,是否有任何解决方案可以获取上述示例中的值?


largeQ
浏览 160回答 1
1回答

繁花不似锦

我没有尝试检索当前路由,而是在每个路由回调中创建了一个包含路由名称的字符串变量,然后将该名称作为参数传递给渲染器(在这种情况下,我使用的是 Slim 的 php-view 包)。这是一个示例,将字符串作为参数传递"dashboard"给模板文件:dashboard.phtml$app->get('/dashboard', function (Request $request, Response $response, array $args) {&nbsp; $args['pageTitle'] = "dashboard";&nbsp; return $this->renderer->render($response, 'register.phtml', $args);});根据$args['pageTitle']路由的名称,键被分配一个关键字标识符作为字符串。然后,在我的header.phtml文件中,我创建了一个 switch 语句,它将 的值$args['pageTitle']与一组硬编码的字符串进行比较,以确定要加载的适当样式表:<head>&nbsp; <title>Slim 4 PHP Template</title>&nbsp; <?php&nbsp; &nbsp; if(isset($pageTitle)) {&nbsp; &nbsp; &nbsp; switch($pageTitle) {&nbsp; &nbsp; &nbsp; &nbsp; case "dashboard":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<link rel='stylesheet' type='text/css' href='assets/css/dashboard.css'>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; case "register":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<link rel='stylesheet' type='text/css' href='assets/css/register.css'>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; ?></head>在“ http://example.domain.com/dashboard ”访问路由时,会呈现相应样式表的链接,如下所示:<head>&nbsp; <title>Slim 4 PHP Template</title>&nbsp; <link rel="stylesheet" type="text/css" href="assets/css/dashboard.css"></head>
打开App,查看更多内容
随时随地看视频慕课网APP