编程语言
首页 > 编程语言> > php-Codeigniter-重定向

php-Codeigniter-重定向

作者:互联网

这个问题已经在这里有了答案:            >            How to fix “Headers already sent” error in PHP                                    11个
我从索引重定向到函数logotyp或tiskoviny时遇到问题.当我写入浏览器(localhost / my_page / sluzby / logotyp)时,它可以工作,但显示时没有CSS(这是第二个问题). URL Helper将自动加载.

class Sluzby extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->library('uri');
        $this->load->model('sluzby_model');
        $this->load->model('pages');
    }

    public function index()
    {
        redirect('sluzby/logotyp');
    }

    public function logotyp()
    {
        $data['nadpis'] = "SomeText";
        $this->basic_template->view('basic', 'sluzby_view',$data);
    }

    public function tiskoviny()
    {
        $data['nadpis'] = "SomeText";
        $this->basic_template->view('basic', 'sluzby_view',$data);
    }
}

当我想从索引重定向时,浏览器显示此错误:

<p>Severity: Warning<br>
Message:  Cannot modify header information - headers already sent by (output started at C:\Program Files\VertrigoServ\www\dsvision\application\controllers\sluzby.php:1)<br>
Filename: helpers/url_helper.php<br>
Line Number: 542</p>

感谢帮助.

解决方法:

如前所述,请确保在控制器中的<?php标签前没有空格(空格,制表符,换行等).如果您有休息时间?标签,则可以将其删除,因为它通常会导致重定向问题. 在这种情况下,如果您不关心URL中是否包含函数名称(这不会更改URL以显示URL中正在调用的函数(logotyp()),而重定向函数会)/刷新页面,那么您可以直接在index()函数中调用相关函数:

public function index()
{
    $this->logotyp();
}

对于第二个问题(CSS未加载);可能是因为指向其路径的链接不正确.使用CodeIgniter的URL Helper中的base_url函数,您可以轻松生成正确的路径.我不知道您的CSS文件位于何处,但是对于本示例,我假设相对于站点根目录,它位于:assets / css / style.css.只需添加相对于Web根的路径,如下所示:

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

HTML Helper中的link_tag()还可以帮助样式表链接的生成.

标签:php,codeigniter,redirect,codeigniter-url
来源: https://codeday.me/bug/20191013/1909131.html