Итак, вы хотите убедиться, что вы понимаете маршруты, чтобы убедиться, что все отображается на первый сегмент вашего URL, поскольку вам действительно нужен только один контроллер.Это находится в папке application / config в файле с именем rout.php
. Вы можете настроить его следующим образом:
$route['(:any)'] = "home/$1";
$route['default_controller'] = "home";
, чтобы оно совпадало с любым (: любым) впервый сегмент и направляет его к home / $ 1 (контроллер / функция) ... и затем, если в первом сегменте ничего нет, он сопоставляет его с home / (подразумевается индексная функция).Посмотрите документацию для файла маршрутов, чтобы вы могли понять, что все, что вы можете с ним сделать (вы можете запускать регулярные выражения, расширенную маршрутизацию и т. Д.), Очень важно знать.
Таким образомв вашем контроллере home.php (controllers / home.php или как вы хотите его называть) вы можете просто иметь функции, которые соответствуют вашему URL-адресу
То, что упоминается в других постах о расширении базового контроллера,действительно не нужно в этом случае.Но хорошо иметь функцию, которая просматривает загрузку для вас, чтобы вам не приходилось повторять $this->load->view(header)
, $this->load->view(footer)
и т. Д. Для каждой функции.
Что мне нравится делать, так это создаватьпапка включает в себя мой заголовок, нижний колонтитул, навигацию и т. д. создайте функцию, которая делает именно это ... с частной доступностью:функция, которая делает его недоступным через URL
function _viewloader($view, $data) {
$this->load->view('includes/header', $data);
$this->load->view($view, $data);
$this->load->view('includes/footer', $data);
}
Тогда ваши функции для каждой страницы будут выглядеть примерно так:
function about()
{
/* put any application logic here */
$this->viewloader('about', $data);
/* or $this->_viewloader('about', $data);
if you went with CI's style visibility */
}
function contact()
{
/* put any application logic here */
$this->viewloader('contact', $data);
/* or $this->_viewloader('contact', $data);
if you went with CI's style visibility */
}
Так что теперь, как вы можете видеть, эта функция viewloaderтеперь загружает представления заголовка, nav, независимо от того, что является $ view, а затем нижний колонтитул все сразу ... довольно приятно.
Вы также можете помнить, что в сами файлы представлений можно загружать любые представления, которые вам нужны (вложенные представления), их не всегда нужно загружать из контроллера, хотя это полезно сохранитьтаким образом, вам не нужно редактировать отдельные файлы вида, если вы хотите внести существенные изменения.
Вот как это может выглядеть в конце:
<?php
if (! defined('BASEPATH')) exit('No direct script access');
class home extends CI_Controller {
//php 5 constructor
function __construct() {
parent::__construct();
}
function index() {
$data['title'] = "Welcome To Our Site"
$this->viewloader('home', $data);
}
function contact() {
$data['title'] = "Contact Us"
$this->viewloader('contact', $data);
}
function about() {
$data['title'] = "About Us"
$this->viewloader('about', $data);
}
private function viewloader($view, $data) {
$this->load->view('includes/header', $data);
$this->load->view('includes/nav', $data);
$this->load->view($view, $data);
$this->load->view('includes/footer', $data);
}
}