【问题标题】:Code Igniter - how would you structure this site?Codeigniter - 你将如何构建这个网站?
【发布时间】:2011-04-15 20:16:03
【问题描述】:

我将在代码点火器中创建我的第一个站点,一个相当基本的站点,如下所示:

首页 登录/注册

members area
protected page 1 
protected page 2
protected page 3

general info section
page 1
page 2
page 3 (dynamic table of reports)

about section
page 1
page 2

blog section
listing
article page

我已经阅读了一些基本的 tuts 并阅读了一些文档,但仍然不确定什么是构建它的最佳方式。任何有 CI 经验的人可以告诉我他们是如何做到的吗?

一些具体的问题是:

  1. 带有导航面板的标题在所有页面上都相同。通常我会将其编码为包含 if/else 以显示突出显示的当前部分。我想我只是将其保留为包含(视图)并首先通过控制器加载它还是将其包含在每个视图中?

  2. 我设想有一个名为“用户”的模型将处理登录和注册,一个名为“博客”的模型和一个名为“报告”的模型。听起来对吗?

  3. 对于像 about 这样的静态部分,我想应该没有模型,我只需要一个控制器,每个静态页面都有一个功能?即带有 page1()、page2() 的 about.php,它们所做的只是加载静态视图?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    1 -> 为了解决这个问题,我决定像这样使用我自己的控制器 使用 CI 2.x,在 app/core 下创建一个名为 MY_Controller.php 的文件,如下所示:

    <?php
    
     class MY_Controller extends CI_Controller {
    
        function __construct() {
            parent::__construct();
        }
    
        public function loadView($view) {
            $this->load->view('header');
            $this->load->view($view);
            $this->load->view('footer');
        }
    }
    

    然后我扩展了这个控制器而不是 CI 控制器。确保您的$config['subclass_prefix'] = 'MY_'; 在 config.php 文件中。

    2-> 是的

    3-> 就是这样:D

    【讨论】:

      【解决方案2】:

      我是这里的新手(codeigniter)但是:

      1. 对于页眉/页脚,我采用了here 的模板策略(第一种选择)。效果不错。

      2. 在模型之前,我会计划控制器 - 每个部分大约一个。我让它们都继承自 MY_controller 在这里我放置了共同的功能。你的模型对我来说似乎是正确的。我认为它们作为 DAO 或“服务对象”提供对数据库的访问,仅此而已。站点的通用智能(如果需要)应该在自定义库中,或者在控制器中。

      3. 是的。

      【讨论】:

        【解决方案3】:

        您应该使用 CI 库来处理您的用户注册和每页授权。 这是一个非常简单的示例,说明如何做到这一点。请记住,CI 使用 MVC pattern

            class Reports extends CI_Controller {
        
                public function __construct() {
                   parent::__construct();
                   // load database if needed
                   // load a model if needed
        
                }
        
                public function page() {
                    //get the page requested
                    $page_id = $this->uri->segments(2);
                    // based on the page_id do something.
        
                    $data['somedata'] = 'About us data here';
        
                    // this is an actual file loaded from the template view
                    $data['maincontent'] = 'my_page';
                    $this->load->view('template',$data);
                }
        
            }
        
            class About extends CI_Controller {
        
                public function __construct() {
                   parent::__construct();
                   // load database if needed for this page
                }
        
                public function page() {
                    // same here
                    //get the page requested
                    $page_id = $this->uri->segments(2);
                    // based on the page_id do something.
        
                    $data['somedata'] = 'About us data here';
        
                    // this is an actual file loaded from the template view
                    $data['main_content'] = 'my_about_page';
                    $this->load->view('template',$data);
                }
            }
        

        在模板文件中

            $this->load->view('template/header');
            $this->load->view('template/nav');
            $this->load->view($main_content);
            $this->load->view('template/footer');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-19
          • 2012-03-28
          • 1970-01-01
          • 2011-12-04
          • 2023-03-26
          • 2013-04-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多