我正在努力学习这些日子里的codeigniter,我正在努力根据路线了解视图,控制器和模型的结构,以保持安全。
那么,我们应该如何构建管理员后端和用户后端的视图,控制器和模型,我的意思是文件夹,子文件夹和路由?
首先,我想提一下我的文件是如何按顺序排列的: 我的路线:
$route['default_controller'] = 'site/home';
$route['home'] = 'site/home';
所以这里的默认控制器是Site.php:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Site extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see https://codeigniter.com/user_guide/general/urls.html
*/
public function index()
{
$data['body']='site/home';
$this->load->view('includes/template',$data);
}
public function home(){
$data['body']='site/home';
$this->load->view('includes/template',$data);
}
public function AnotherMethod(){
$data['body']='site/AnotherPage';
$this->load->view('includes/template',$data);
}
我的视图模板是(views / includes / template.php):
<?php
//load head
$this->load->view('includes/header');
//load body
$this->load->view($body);
//load footer
$this->load->view('includes/footer');
?>
所以如果我这样做,我就有问题从子文件夹访问视图。例如,
directory : views/site/userbackend/index.php
or views/site/adminbackend/index.php
根据管理员后端和用户后端,子文件夹中还有控制器和模型。
我将如何访问它们?
我在这里只是想表明我遇到了什么样的问题.. 所以现在,如果您只是指导专家如何处理和构建组件以及最佳实践是什么,那么问题的所有答案都可以得到解决。
我知道我一次把这个问题复杂化了很多事情,我很抱歉,如果你想让我更清楚地了解一个主题,请告诉我,我会更新我的问题。
在这里需要帮助。 在此先感谢!
答案 0 :(得分:0)
所有控制器都可以使用所有视图,如果:
views/site/userbackend/index.php
应为$data['body'] = 'site/userbackend/index';
如果我的简单项目有这个结构:
controllers
backend
Admin.php
Admin_users.php
...
Main.php
News.php
...
views
backend
main
header.php
footer.php
users
view_list.php
view_form.php
frontend
main
header.php
footer.php
sidebar.php
news
view_list.php
view_item.php
mainpage.php
...
在view_list.php中:
$this->load->view('frontend/main/header');
<news list>
$this->load->view('frontend/main/footer');
我练习HMVC。
答案 1 :(得分:0)
我遇到了类似的问题,并通过在视图路径中添加.php
使其在子文件夹中起作用,就像这样:
$this->load->view('includes/template.php',$data);