CodeIgniter - 从控制器中的另一个函数加载视图

时间:2014-04-10 15:13:08

标签: php codeigniter view controller

问题在于:

如果我拨打www.mysite.com/quizz,则会加载我的'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会读取www.mysite.com/class/method之类的网址,所以它应该是好的,对吗?

2 个答案:

答案 0 :(得分:1)

您可以在方法中调用$this->function();,但不建议这样做。你所说的破碎的代码,根据我的理解是HTML加载得很好,但图像/ css等因为你没有正确调用文件而被破坏。

你能发布一个你得到的HTML样本吗?#34;破坏"请? (来自浏览器,在90%的浏览器中使用视图源或ctrl+U' or命令+ U`)

我建议您查看您的视图的HTML以及如何加载图片和CSS文件,并且您应该设置。

查询请使用codeigniter URL帮助程序(它可能是文档中的URI帮助程序,不要记得),并且它们有一个简单的site_url()函数,我建议你使用...你可以通过site_url调用它( ' controller / method')或site_url(' 3rdparty / jQuery / jQuery.min.js') - 适用于控制器方法和文件的优秀黑客,你不会我必须关心你安装软件的位置

答案 1 :(得分: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>

显然,将文件的路径更改为正确的安装