到目前为止,我为每个页面的方法创建了一个站点部分的控制器 - 大多数是静态页面,不需要太多的逻辑或模型。代码点火器:放入单独的控制器或一个?
但是,其中一些页面功能复杂,需要自己的模型,我是否需要将它们分解到自己的控制器中?或者是否有办法让他们保持在一个控制器中,并按照每种方法加载模型......可能是错误的做法
到目前为止,我为每个页面的方法创建了一个站点部分的控制器 - 大多数是静态页面,不需要太多的逻辑或模型。代码点火器:放入单独的控制器或一个?
但是,其中一些页面功能复杂,需要自己的模型,我是否需要将它们分解到自己的控制器中?或者是否有办法让他们保持在一个控制器中,并按照每种方法加载模型......可能是错误的做法
完全同意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
。然后,您可以在没有动态数据的情况下将其用于所有静态页面。您可以进一步深入研究,但这是您可以选择避免为每个静态页面编写新方法的一个选项示例。
您可以按每种方法加载模型。这样做不是不好的做法。
$this->load->model('your_model');
模型通常不是太密集的加载。除非您尝试保存单一咬合,否则您不应该过多担心加载模型。
由于Codeigniter是非常传统的,它确实会导致类似的问题。
虽然在一般我会永远提醒,更模块化比少模块化更好,你永远无法过组织。
只因为有些东西不是“”错误“不会让它最好。
只有你可以在最后决定,因为你将是一个维护它。
它很好地为每个页面使用特定的控制器,以便应用程序变得轻量化,并且还需要创建它的模型。因此,应用程序扩展其功能变得容易开发:
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);
}
}
“你永远不能过度组织”必须记住! – 2015-08-12 16:52:40