2011-05-06 42 views
0

到目前为止,我为每个页面的方法创建了一个站点部分的控制器 - 大多数是静态页面,不需要太多的逻辑或模型。代码点火器:放入单独的控制器或一个?

但是,其中一些页面功能复杂,需要自己的模型,我是否需要将它们分解到自己的控制器中?或者是否有办法让他们保持在一个控制器中,并按照每种方法加载模型......可能是错误的做法

回答

3

完全同意jondavidjohn's answer。我建议现在就做适合你的工作,不要担心太多的开销或做“正确”的事情。你很快就会意识到你需要做什么以及如何组织,并且开销很大 - Codeigniter非常精简,不必担心在这一点上进行优化 - 只需让所有事情按照你想要的方式工作即可。

把你的第一个Codeigniter项目,并尽可能做到最好,但只是认为它是一个丢弃的应用程序。每次你使用它时,你都会学到更多关于如何使用它的知识,特别是如果你继续阅读和提问。

要回答你的字面问题:不,每种方法加载模型没有任何问题。事实上,它可以比控制器的__construct中的加载“更好”,因为它可以确保只加载所需的内容。所以不要担心。

到目前为止,我创建为每个页面的方法的网站部分一个控制器 - 大部分是静态网页

有没有错的,但为了方便起见,你可以使用同样的方法为你的每个静态页面,并保持你的网址相同。事情是这样的:

class Pages extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    function index($page) 
    { 
     $this->load->view("pages/$page"); 
    } 

} 

// config/routes.php 
$route['page/(:any)'] = 'pages/index/$1'; 

这将网址/page/my_first_page映射到页面控制器并调用index()与参数my_first_page。然后,您可以在没有动态数据的情况下将其用于所有静态页面。您可以进一步深入研究,但这是您可以选择避免为每个静态页面编写新方法的一个选项示例。

0

您可以按每种方法加载模型。这样做不是不好的做法。

$this->load->model('your_model'); 

模型通常不是太密集的加载。除非您尝试保存单一咬合,否则您不应该过多担心加载模型。

3

由于Codeigniter是非常传统的,它确实会导致类似的问题。

虽然在一般我会永远提醒,更模块化少模块化更好,你永远无法过组织

只因为有些东西不是“”错误“不会让它最好

只有你可以在最后决定,因为你将是一个维护它。

+0

“你永远不能过度组织”必须记住! – 2015-08-12 16:52:40

0

它很好地为每个页面使用特定的控制器,以便应用程序变得轻量化,并且还需要创建它的模型。因此,应用程序扩展其功能变得容易开发:

 class Location extends CI_Controller { 
public function __construct() 
{ 
parent::__construct(); 
$this->load->library('session'); 
    } 
public function index() 
{ 
$data['title'] = "Hello world"; 
$this->load->view('locale_view', $data);   
} 
    } 
相关问题