【问题标题】:Codeigniter: files not found within header when included in viewCodeigniter:包含在视图中时在标题中找不到文件
【发布时间】:2014-08-26 19:00:37
【问题描述】:

我的管理控制器中有一个名为“login”的函数,它使用 application/views/admin/ 中的“login.php”视图。我在该文件的顶部和底部包含了“header.php”和“footer.php”视图,如下所示:

 <?php include ('/application/views/layout/header.php'); ?>

页眉和页脚正确包含在我的所有其他视图中,但是当包含在“login.php”视图中时,找不到资产文件。这是我的“header.php”视图:

 <!DOCTYPE html>
    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="./application/assets/bootstrap/css/bootstrap.min.css" >
        <link rel="stylesheet" type="text/css" href="./application/assets/style.css" >
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script src="./application/assets/bootstrap/js/bootstrap.min.js" ></script>
        <title><?php echo $page_title; ?></title>
    </head>
    <body>
        <div class="container-fluid text-center">
            <div class="row">
                <div class="span12">
                    <img src="./application/assets/signature.jpg" class="img-responsive center-block" style="margin-top: 20px;">  
                </div>
            </div>
        </div>

这是我的应用程序的文件结构:

application

-+assets    
---+css    
------style.css 

-+controllers    
----admin.php    
----page.php  

-+views    
---+layout    
------header.php    
------footer.php    
---+admin    
------home.php    
------login.php    
----home.php

我已使用 firebug 尝试解决问题,但控制台显示 404 错误。由于某种原因,它正在将控制器名称“Admin”添加到 css 文件的文件路径中,如下所示,以及我的 .js 文件和图像:

/my_project/admin/application/assets

关于为什么会这样的任何想法?我在我的 .htaccess 文件中的项目上使用了 mod_rewrite。

【问题讨论】:

标签: php html codeigniter


【解决方案1】:

对于包含页眉和页脚,我认为这个答案更好: adding header and footer codeigniter to controller ... 而要引用 CSS 和 JS 文件,请使用 CodeIgniter URL 助手。您必须加载帮助程序并使用此帮助程序: https://ellislab.com/codeigniter/user-guide/helpers/url_helper.html。 在 config.php 文件中配置 base_url()。然后像这个答案一样链接到你的 CSS 和 JS: Code Igniter simple base url css

【讨论】:

  • 这仍然不起作用,我仍在将“管理员”控制器添加到路径名中,如下所示:/my_project/admin/application/assets
【解决方案2】:

如果您使用 Codeigniter 框架,我建议使用标准函数加载视图而不是 include() 函数。

例如,Codeigniter 支持函数 View() 在网页上加载您的 HTML 代码。

调用函数如下:

$this->load->view(template);

在您的情况下,您需要将下一个代码放在您的控制器文件 login.php 中,您需要在其中加载标头模板。看起来像:

$this->load->view("layout/header.php");

另外,不要使用 incude();更好的写法:include_once(); 如果您将进一步使用继承类,您就会遇到问题。 在此处阅读更多信息:enter link description here

【讨论】:

  • 我不确定哪个白痴给了你反对票,哈哈。我认为这个网站需要好好管理。
  • 我也是,不明白你的答案投反对票的原因是什么:/
  • 这仍然不起作用,我仍在将“管理员”控制器添加到路径名中,如下所示:/my_project/admin/application/assets
猜你喜欢
  • 1970-01-01
  • 2014-08-24
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
相关资源
最近更新 更多