【问题标题】:CodeIgniter - Loading a view from another function in the controllerCodeIgniter - 从控制器中的另一个函数加载视图
【发布时间】:2014-04-10 15:13:08
【问题描述】:

问题来了:

如果我打电话给www.mysite.com/quizz,它会加载我的“测验”页面。

但是如果我调用www.mysite.com/quizz/start(包含相同的代码),视图会因为链接断开(图像、css、...)而混乱

这是内容:

public function index()
{
       $this->load->helper('quizzsettings');
       $data['questions'] = getSettings();
       $this->load->view('head'); 
       $this->load->view('quizz', $data);
}

如果我调用另一个函数 (www.mysite.com/quizz/start),布局将失败:

public function start()
{
       $this->load->helper('quizzsettings');
       $data['questions'] = getSettings();
       $this->load->view('head'); 
       $this->load->view('quizz', $data);
}

如您所知,CodeIgniter 读取的 URL 类似于 www.mysite.com/class/method,所以应该不错吧?

【问题讨论】:

  • 视图搞砸了?如果图像和 css 弄乱了,那么它们的 url 源是什么。查看网络控制台上的错误。
  • 你使用的是相对路径吗?

标签: php codeigniter view controller


【解决方案1】:

您想使用绝对路径调用您的 CSS、JS 和图像。我怀疑您使用的是相对路径。如果您还没有,最好创建一个通用标题视图并使用base_url()。例如

<!-- Load CSS -->
<link type="text/css" rel="stylesheet" href="<?php echo base_url(); ?>css/style.css" />

<!-- Load JS -->
<script type="text/javascript" src="<?php echo base_url(); ?>js/script.js"></script>

显然更改文件的路径以适合您的安装

【讨论】:

  • 我修复了它,但作为一个新用户,我无法回答我的问题:/ 这里是:“好的,知道了。我在我的 js 中使用 base_url(),但在我的 css 中没有,我为css添加了它,没关系。然后我在我的图像视图中添加了base_url(),它也已修复。感谢您向我展示正确的方式!;)"
【解决方案2】:

您可以在您的方法中调用$this-&gt;function();,但不建议这样做。据我了解,您所说的损坏的代码是加载良好的 HTML,但是由于您没有正确调用文件,因此图像/css 等已损坏。

您能否发布一个“损坏”的 HTML 示例? (来自浏览器,90% 的浏览器有查看源代码或ctrl+U' orcommand+U`)

我建议您查看视图的 html 以及如何加载图像和 css 文件,并且应该进行设置。

lookup please codeigniter URL helper(它可能是文档中的 URI helper,不记得了),他们有一个简单的 site_url() 函数,我建议你使用......你可以通过 site_url('controller /method') 或 site_url('3rdparty/jQuery/jQuery.min.js') - 很好的 hack,适用于控制器方法和文件,您不必关心软件的安装位置

【讨论】:

  • 我以这种方式调用我的 js/css,所有内容都放在 head.php 中:&lt;script type="text/javascript" src="&lt;?php echo base_url();?&gt;js/script.js"&gt;&lt;/script&gt; 在我的视图文件中,图像以这种方式调用:&lt;img src="./images/quizz/youtube.png"&gt; 当我将我的页面称为标准方式(/quizz),但如果我调用函数(/quizz/function)则不是。我应该在我的视图中到处使用 base_url() 吗?
  • 可能不是解决方案,因为我在 head.php 中使用 base_url() 调用我的 css,但这里是我分析源代码时的链接:http://localhost:8888/sanofi/**quizz/**css/style.cssquiz/ 被添加到了路径中,不知道为什么,去掉它就可以了...
  • 正如您在上面指出的,是的,您应该使用 base_url() 来创建资源的绝对路径。这样一来,无论您从哪里调用它都无关紧要。
  • lookup please codeigniter URL helper(它可能是文档中的 URI helper,不记得了),他们有一个简单的 site_url() 函数,我建议你使用......你可以调用它通过 site_url('controller/method') 或 site_url('3rdparty/jQuery/jQuery.min.js') - 很好的 hack,效果很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 2015-12-02
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多