我是CodeIgniter的新手。我有一个主页链接。我知道如何将主页链接到另一个页面,但我认为我在routes.php中做错了什么 我查看了教程,但仍然无法找到问题。我尝试用不同的方式编写路线。有人能帮我吗?
查看home.php
<ul>
<li><a href="home.php">Homepagina</a></li>
<li><a href="about.php">Over</a></li>
<li><a href="<?php echo site_url('login/login'); ?>">Inloggen</a></li>
<li><a href="register.php">Registreren</a></li>
<li><a href="<?php echo site_url('myprofile/myuserprofile'); ?>">Profiel</a></li>
<li><a href="matches.php">Matches</a></li>
<li><a href="config.php">Config</a></li>
</ul>
home.php的控制器
class Pages extends CI_Controller {
public function view($home ='home')
{
$this->load->helper('html');
$this->load->helper('url');
if (! file_exists(APPPATH.'views/pages/'.$home.'.php'))
{
show_404();
}
$data['title'] = ucfirst($home);
$this->load->view('templates/header',$data);
$this->load->view('templates/slideshow', $data);
$this->load->view('pages/'.$home, $data);
$this->load->view('templates/footer',$data);
} }
routes.php文件
$route['default_controller'] ='pages/view';
$route['login'] = 'login/view/login';
登录控制器
class Login extends CI_Controller {
public function view($login ='login')
{
$this->load->helper('html');
$this->load->helper('url');
if (! file_exists(APPPATH.'views/pages/'.$login.'.php'))
{
show_404();
}
$data['title'] = ucfirst($login);
$this->load->view('templates/header',$data);
$this->load->view('pages/'.$login, $data);
$this->load->view('templates/footer',$data);
}
提前感谢您的帮助!
答案 0 :(得分:1)
只需调用控制器和方法
<li><a href="login/login">Inloggen</a></li>
如果不起作用
<li><a href="index.php/login/login">Inloggen</a></li>
试试这个
答案 1 :(得分:0)
扩展具有构造函数的类时,需要从要扩展它的类中调用该构造函数...即
class Controller_name extends CI_Controller {
public function __construct(){
parent::__construct(); // Call the CI_Controller __construct();
}
请注意,__实际上是两个下划线,但在此处显示为一行。
使用您的路线
<强> routes.php文件强>
$route['default_controller'] ='pages/view';
$route['login'] = 'login/view/login';
请记住CI网址的格式为domainname.com/controller/method
如果您不提供控制器/方法,则default_controller是浏览器重定向到的位置,即 - 只是domainname.com。使用默认控制器路由,您将重定向到页面控制器并访问视图方法。你的代码应该没问题。
如果您将domainname.com/login作为您的网址访问,您的登录路线也应该没问题 - 这将被发送到您的登录控制器,查看方法并将登录作为页面名称传递。
<强> home.php 强>
<ul>
<li><a href="home.php">Homepagina</a></li>
<li><a href="about.php">Over</a></li>
<li><a href="<?php echo site_url('login/login'); ?>">Inloggen</a></li>
<li><a href="register.php">Registreren</a></li>
<li><a href="<?php echo site_url('myprofile/myuserprofile'); ?>">Profiel</a></li>
<li><a href="matches.php">Matches</a></li>
<li><a href="config.php">Config</a></li>
</ul>
通过指向home.php的链接,您可能希望创建一个名为Home.php的控制器并定义index()方法。所以改变
<a href="home.php">Homepagina</a>
到
<a href="home">Homepagina</a>
然后该链接变为domainname.com/home - 指向主页控制器及其索引方法。
然后我们来到这个
<a href="<?php echo site_url('login/login');
这将创建 domainname.com/login/login 。您的登录路线仅寻找 domainname.com/login 。因此,当前链接 domainname.com/login/login 正在寻找一个名为login的Controller,其方法名为login。
您与myprofile / myuserprofile的链接将寻找名为 myprofile 的控制器和名为 myuserprofile 的方法。你的routes.php中没有任何东西可以解决这个问题。因此,如果这不起作用,则与路线无关。
所以这一切都指向你(可能)没有像我在开始时讨论的那样定义__construct方法。
答案 2 :(得分:0)
<li><a href="index.php/login/login">Inloggen</a></li>
如果可行,您可以删除index.php。 请按照此文档删除index page
答案 3 :(得分:0)
如果你没有使用url的完整路径,即以http[s]://
开头,那么它始终是带有前斜线的智能启动链接:
<li><a href="/pages/about">Over</a></li>
你可以使用CI网址助手,如果你正在努力与.htaccess和index.php一起使用,那么你会更加安全:
echo base_url('pages/about')
另外,练习静态页面教程,注意文档的Loader lybrary页面,这样你就可以找到如何将所有数据传递给所有视图页面,让它查看文件,在这种情况下你不需要设置第二个参数在这里:
$this->load->vars($data);
$this->load->view('templates/header');
$this->load->view('templates/slideshow');
$this->load->view('pages/'.$home);
$this->load->view('templates/footer');
所有$ data数组都将传递给所有视图文件,您将能够输出这些数据。 也许你发现它有用一次。 ;)