如何在CodeIgniter中创建相对链接?

时间:2011-04-17 20:12:59

标签: codeigniter

示例我在Controller中有以下代码:

class Main extends CI_Controller {

    public function index()
    {
        $this->load->view('main_view');
    }

    public function create ()
    {
        $this->load->view('create_view');

    }
}

如果我想创建create的相对链接,我该如何实现?视图中的以下链接并不总是有效。什么是在CodeIngiter中创建相对链接的apporpiate方式?

<a href="create"> Create </a>

4 个答案:

答案 0 :(得分:4)

<a href="<?= site_url('/main/create'); ?>"> Create </a>

或简单地说:

<?= anchor('/main/create', 'Create'); ?>

确保您已加载URL Helper

答案 1 :(得分:3)

您不必执行任何特殊操作或加载任何帮助程序,只需记住路径将相对于URL而不是文件系统或控制器。

假设您的安装位于域的根目录中,请假设您当前的网址为http://localhost/class/method/var

<a href="/main/create">Will work from anywhere</a>
<a href="create">Will go to http://localhost/class/method/var/create</a>
<a href="../create">Will go to http://localhost/class/method/create</a>

相对路径不是你在Codeigniter中的朋友,你最好坚持使用完整的URL(通常使用辅助函数,如base_url()site_url()),或者使用正斜杠(相对于root) )。人们提到使用<base> html标签,但我个人并不推荐。如果您在深入了解网址段时使用../../relative路径,则会有一些非常古怪的网址。例如:

如果你在这里: http://localhost/controller/method/var1/var2/var3

链接可能如下所示: <a href="../../../../controller2/method/othervar"></a>

可能不是你想要的,但你可以选择它。我建议使用另外两个中的一个。

答案 2 :(得分:0)

以下是有关其工作原理的完整说明。

Relative URLs with CodeIgniter

希望它有所帮助。

答案 3 :(得分:0)

只是指出另一种选择,如果你不喜欢在每个href中编写php片段的想法,以及其他方法是否不满足你。您可以在html标头中使用常见的<BASE >标记(例如,指向应用程序的根目录),然后记住您网页中的每个相对网址都与该网址相关。