【问题标题】:When I load a view from my controller some html functionality is lost当我从控制器加载视图时,某些 html 功能会丢失
【发布时间】:2020-06-25 04:51:40
【问题描述】:

所以当我加载这样的视图时:

地址栏显示:

“http://localhost/Mywebsite/private_area”

视图是从控制器“private_area”的索引函数调用的,它工作正常。但是,当我使用函数“配置文件”调用页面时,地址栏显示为:

“http://localhost/Mywebsite/private_area/profile”

视图失去了某些功能,例如切换按钮不起作用,并且 src= 也不起作用。 index函数和profile函数的代码是一样的。

很困惑,有什么想法吗?

下面是一些相关代码:

控制器“登录”重定向使用:

redirect ('private_area');

这调用路由

$route['private_area'] = 'private_area';

这调用了控制器私有区域/索引,代码如下:

    $this->load->model("Profiles_model");  
    $profiledata["fetch_profiledata"] = $this->Profiles_model->fetch_profiledata();    
    $this->load->view('templates/header_pa');
    $this->load->view('pages/page-profile', $profiledata);
    $this->load->view('templates/footer');

这很好用,并且完美地显示了页面配置文件视图。

但如果我转到另一个视图,然后使用返回页面配置文件视图

    <a href="<?php echo base_url(); ?>private_area/profile" role="button">Profile</a>

调用控制器“Private_area”和函数“Profile”

    function profile() 
        {
        $this->load->model("Profiles_model");  
        $profiledata["fetch_profiledata"] = $this->Profiles_model->fetch_profiledata();  
        $this->load->view('templates/header_pa');
        $this->load->view('pages/page-profile', $profiledata);
        $this->load->view('templates/footer');
        }

主视图加载,但 src 标签不起作用,切换按钮也不起作用。

【问题讨论】:

    标签: html codeigniter view controller routes


    【解决方案1】:

    如果您将&lt;?=base_url();?&gt;添加到您的图像和任何其他路径,您会很好。

    如果您在函数中添加变量,您将再次遇到同样的问题。

    例如,您的图像应如下所示:

    &lt;img src="&lt;?=base_ur();?&gt;assets/img/demo/avatar1.jpg"&gt;

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我会说您正在为您的 CSS 和/或 Javascript 文件使用相对路径,而前面没有 base_url()。 您是否在开发人员工具中获得任何 404?他们通常会告诉你问题出在哪里。

      嵌入 JS 和 CSS 的正确方法是:

      <link rel="stylesheet" href="<?=base_url();?>/assets/css/bootstrap.min.css">
      <script src="<?=base_url();?>assets/js/bootstrap.min.js"></script>
      

      【讨论】:

      • 感谢@renegade999,但事实并非如此。这是 JS 和 CSS 与您建议的几乎相同。 &lt;link rel="stylesheet" type="text/css" href="&lt;?php echo base_url();?&gt;assets/css/plugins.min.css"&gt; &lt;link rel="stylesheet" type="text/css" href="&lt;?php echo base_url();?&gt;assets/css/style.light-blue-500.min.css"&gt; &lt;script src="&lt;?php echo base_url();?&gt;assets/js/bootstrap.min.js"&gt;&lt;/script&gt;
      • 您是否检查过是否有任何嵌入的 JS 文件没有被开发者工具正确加载。听起来很像一个文件没有正确加载。
      【解决方案3】:

      AnPS:所以我能够像这样解决至少部分问题:

      有问题的代码是:

      <img src="assets/img/demo/avatar1.jpg"> 
      

      会产生以下错误:

      GET http://localhost/Mywebsite/private_area/assets/img/demo/avatar1.jpg 404 (Not Found) 
      

      因为它正在读取控制器 - “Private_area”作为文件夹,所以我只是将 ../ 添加到有问题的代码中

      <img src="../assets/img/demo/avatar1.jpg"> 
      

      我使用类似的方法修复了切换按钮,方法是在脚本中添加 ../,如下所示:

      <script src="../assets/js/plugins.min.js"></script>
          <script src="../assets/js/app.min.js"></script>
      

      这行得通,但我做得对吗?或者这只是一个糟糕的“变通办法”?

      【讨论】:

        猜你喜欢
        • 2019-04-09
        • 1970-01-01
        • 1970-01-01
        • 2018-04-16
        • 1970-01-01
        • 2019-08-08
        • 2019-01-03
        • 2023-01-11
        • 1970-01-01
        相关资源
        最近更新 更多