为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
largeQ 2022-01-14 15:33:06
我创建了一个简单的超薄应用程序,其中包含登录表单、仪表板、注册页面和帐户页面。每个页面都有自己的路线。所有页面都使用相同的页眉和页脚,它们分别通过在每个页面模板的开头和结尾添加<?php include __DIR__ . '/header.phtml' ?>和来包含,页面内容放置在它们之间。<?php include __DIR__ . '/footer.phtml' ?>我想根据查看的页面动态包含不同的样式表,但我不想只是懒洋洋地将它们放在我的 .phtml 文件中并让它们呈现在网页中间。我想开发一些 if/switch 函数来放置在header.phtml文件中,它可以识别当前路由并呈现到适当样式表的链接。类似于以下代码,放置在文档头中:<?phpif($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在没有一些复杂的正则表达式、任何其他语言、类库等的情况下,是否有任何解决方案可以获取上述示例中的值?
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我没有尝试检索当前路由,而是在每个路由回调中创建了一个包含路由名称的字符串变量,然后将该名称作为参数传递给渲染器(在这种情况下,我使用的是 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>


查看完整回答
反对 回复 2022-01-14
  • 1 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信