到目前为止,我为站点部分创建了一个控制器,每个页面都有一个方法 - 大多数是静态页面,不需要太多逻辑或模型。
但是,如果其中一些页面功能复杂且需要自己的模型,我是否需要将它们分解为自己的控制器?或者有没有办法将它们保存在一个控制器中并按方法加载模型......可能是错误的事情
答案 0 :(得分:3)
因为Codeigniter不那么常规,所以它确实引起了这样的意见问题。
总的来说,我总是建议更多模块化优于更少模块化,永远不会过度整理。
仅仅是因为某些事情不是“错误”并没有使它最好。
只有你最终才能决定,因为你将成为维持它的人。
答案 1 :(得分: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
映射到Page控制器,并使用参数index()
调用my_first_page
。然后,您可以将此用于没有动态数据的所有静态页面。您可以更进一步,但这是一个选项的示例,您可以选择避免为每个静态页面编写新方法。
答案 2 :(得分:0)
您可以按方法加载模型。这样做并不坏。
$this->load->model('your_model');
模型通常不会加载过于密集。你不应该担心加载模型,除非你试图保存单一的咬。
答案 3 :(得分: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);
}
}