【问题标题】:PHP | How would I include a specific CSS file if a variable equals a certain value?PHP |如果变量等于某个值,我将如何包含特定的 CSS 文件?
【发布时间】:2020-07-31 00:23:18
【问题描述】:

我对 PHP 还很陌生,我已经开始从事一个小项目。我希望我的代码有条理,所以我决定将文件 container.phtml 包含在我的 index.php 文件中。因此,当 $page = 'login' 时,它将包含 login.css 和 login.phtml 文件。我希望 login.css 应用于 login.phtml。相反,当我运行程序时 login.css 不会在控制台中加载或产生任何错误消息。 login.css 文件是否仅适用于 container.phtml?在保持我想要的工作方式的同时,我可以做些什么不同的事情?

编辑: $page 变量告诉 index.php 它应该包含什么文件。示例:$page = '登录';这告诉它获取 login.phtml 文件。然后,在 container.phtml 中,它会检查 $page = 'login' 是否包含 login.css

index.php

<?php

if(!isset($_GET['page'])){
    $page = 'home';
}else{
     $page = $_GET['page'];
}

/* Fetch needed files. */
require_once 'app/paths.php';
require_once THEME_LAYOUT_PATH . 'container.phtml';

$pages = array(
'home',
'login',
'register'
);

$layoutPath = 'themes/neutron/layout/' . $page . '/' . $page . '.phtml';

if(in_array($page, $pages)){
    require $layoutPath;
}else{
    require 'themes/neutron/layout/404/404.phtml';
}
?>

container.phtml

<html>
<title>Neutron</title>
<link rel = "stylesheet" type = "text/css" href = "<?php ASSETS_PATH . 'css/bootstrap.min.css' ?>">
<link rel = "stylesheet" type = "text/css" href = "<?php ASSETS_PATH . 'js/bootstrap.min.js' ?>">
<link rel = "stylesheet" type = "text/css" href = "<?php ASSETS_PATH . 'js/jquery.min.js' ?>">
<?php 
/* Include header, footer, etc */
require_once THEME_LAYOUT_PATH . 'partials/header.php';
require_once THEME_LAYOUT_PATH . 'partials/footer.php';
?>
<?php if($page == 'login'){ ?>
<link rel = "stylesheet" type = "text/css" href = "<?php ASSETS_PATH . 'css/login.css' ?>">
<?php } ?>


</html>

login.phtml

<div class="login-clean" style="background-color: rgb(255,255,255);">
    <form method="post">
        <h2 class="sr-only">Login Form</h2>
        <div class="illustration"><i class="icon ion-ios-navigate" style="color: #4777f4;"></i></div>
         <div class="form-group"><input class="border rounded form-control" type="email" name="email" placeholder="Username"></div>
         <div class="form-group"><input class="border rounded form-control" type="password" name="password" placeholder="Password"></div>
        <div class="form-group"><button class="btn btn-primary btn-block border rounded" type="submit" style="background-color: #4777f4;">Log In</button></div><a class="forgot" href="#">Forgot Password?</a></form>
</div>

【问题讨论】:

    标签: php html css variables organized


    【解决方案1】:
    $page = basename($_SERVER['PHP_SELF']); // Current page file name.
    

    这会将当前页面文件名返回给变量$page,如index.php、login.phtml等

    将此与if 语句结合使用,这样您就可以定义要导入的样式表。

    if ($page == "index.php")
    {
        echo '<link rel="stylesheet" type="text/css" href="css/style.css" />';
    }
    else
    {
        echo '<link rel="stylesheet" type="text/css" href="css/style.css" />';
    }
    

    【讨论】:

    • 我不确定你想在这里告诉我什么。 $page 变量告诉 index.php 它应该包含什么文件。示例:$page = '登录';这告诉它获取 login.phtml 文件。然后,在 container.phtml 中,它会检查 $page = 'login' 是否包含 login.css。
    【解决方案2】:

    您可以使用 switch 语句对某些值进行操作

    switch($page) {
       case 'login':
          include 'LOGIN-FILE';
          break;
       default:
          include 'index.php';
          break;
    }
    

    【讨论】:

      【解决方案3】:

      ASSETS_PATH 中有什么? 在我看来,您的错误可能是 ASSETS_PATH 不是 url?

      login.css 文件是否只适用于 container.phtml?

      任何加载的 css 都将应用于整个 html。

      【讨论】:

      • 这里是我定义的路径:define('ASSETS_PATH', THEME_PATH . 'assets/');问题不是资产路径,我很确定它不是一开始的。那么包含在 container.phtml 中的 CSS 会根据我的代码应用于 login.phtml 吗?它对我不起作用。
      • 你能在这里发布你提到的控制台错误的内容吗?
      • 附言。你应该把 $layoutPath = 'themes/neutron/layout/' 。 $页。 '/' 。 $页。 '.phtml';在 if (in_array()) 中避免警告
      • 我没有收到任何控制台错误,但 login.phtml 中没有样式生效
      • 在我看来像一个路径/url 问题你能打印 THEME_PATH 的结果吗
      猜你喜欢
      • 2012-05-25
      • 2019-09-13
      • 1970-01-01
      • 2017-11-22
      • 2013-04-28
      • 2011-10-01
      • 2011-12-06
      • 2015-09-23
      • 2021-12-09
      相关资源
      最近更新 更多