我是代码新手。
我正试图创建一个控制器来控制网站中的每个网址;我将解释我的意思:
我具有以下视图文件夹结构:
-front
--parts
header.php
footer.php
index.php
login.php
register.php
因此,如果我要在我的网站example.com
上登录页面,只需进入example.com/login
。
到目前为止,在controllers文件夹中,我每个页面都有一个控制器(HomeController.php,LoginController.php,RegisterController.php)。现在,我想更改策略并有一个控制器来控制我的所有页面。
在对Google和Stack溢出进行了一些研究之后,我发现了这个线程:
Strategy to route to pages in codeigniter
因此,我决定遵循这些提示,并构建了Pages.php控制器:
defined( 'BASEPATH' ) OR exit( 'No direct script access allowed' );
class Pages extends CI_Controller {
function _remap( $method )
{
is_file( APPPATH . 'views/front/' . $method . '.php' ) OR show_404();
$this->load->view( $method );
}
}
和在我的route.php中:
$route['default_controller'] = 'welcome';
$route['pages'] = "pages/$1";
$route['(:any)'] = "pages/$1";
但是我无法使其正常工作。
简而言之,我想创建一个控制器,如果我在views/front
文件夹中创建新文件,则会自动创建url。
我已经阅读了CI文档和有关StackOverflow的一堆问题,已经测试了不同的提示,也许还在某个地方找到了答案,但是我还没有找到。
几天来我对此感到麻烦,也许我在这个概念上缺少了一些重要的东西。
有人可以帮助我澄清这个过程吗?
答案 0 :(得分:0)
您可以执行以下操作
$route['default_controller'] = 'welcome';
$route['pages']="pages/index";
$route['pages/login']="pages/login";
$route['pages/register']="pages/register";
您的控制器将是这样的:
defined( 'BASEPATH' ) OR exit( 'No direct script access allowed' );
class Pages extends CI_Controller {
function _remap( $method )
{
is_file( APPPATH . 'views/front/' . $method . '.php' ) OR show_404();
$this->load->view( $method );
}
public function index() {
$this->load->view('front/index', $data);
}
public function login() {
}
public function register() {
}
}
您的index.php视图应如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<title>XYZ</title>
<?php $this->load->view('front//header'); ?>
</head>
<body>
<!-- topbar starts -->
<?php $this->load->view('front/sections/top-nav.php'); ?>
<!-- topbar ends -->
<div class="ch-container">
<div class="row">
<!-- left menu starts -->
<?php $this->load->view('front/sections/leftmenu.php'); ?>
<!-- left menu ends -->
</div><!--/fluid-row-->
<!-- Ad ends -->
<?php $this->load->view('front/sections/footer.php'); ?>
</div><!--/.fluid-container-->
<!-- external javascript -->
<?php $this->load->view('front/sections/footerjs.php'); ?>
</body>
或者您可以加载:
public function index() {
$this->load->view('front/header');
$this->load->view('front/index', $data);
$this->load->view('front/footer')
}