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