Codeigniter -创建视图Q


Codeigniter - creating views Q

我不太懂技术,但我想知道,因为我的技术团队是这样实现的:我们是否需要为我们需要在网站上调用的每一组视图创建一个"控制器"文件,或者我们可以从一个控制器控制所有视图?让多个控制器控制所有视图似乎需要更多的工作。我想有一个控制器调用所有的视图,以减少项目时间,但不确定这是可能的,甚至是一个很好的做法?

这种做法既不好也不坏。重要的是你的代码要清晰且结构良好。之后,Code Igniter在如何使用控制器和视图方面为您提供了很大的灵活性。就我个人而言,我倾向于每个操作使用一个视图(因此控制器通常控制多个视图)。

这是可能的;您可以自己轻松地进行测试:

class Customcontroller extends CI_Controller {
    function index()
    {
      $data['test'] = 'test';
      $this->load->view('header', $data);
      $this->load->view('body');
      $this->load->view('footer');
    }    
}

你会注意到这样做$data将对所有视图可用,即使在加载时没有单独传递。

我发现这是一个很好的方式来建立页面,使用视图作为块。因此,您还可以根据一些约束来呈现视图:

  $this->load->view('header');
 if($this->form_validation->run() == FALSE)
 {
    $this->load->view('display_form');
 }
  else
 {
   $this->load->view('form_sent');
 }
 $this->load->view('footer');
例如

虽然MVC代表模型-视图-控制器,并建议一对一的相关性,使用不同的视图为同一个控制器我怀疑它可以被认为是"坏的做法";正如已经说过的,没有真正理想的方法来做到这一点,重要的是保持逻辑分离,并使您的代码结构良好和有组织,特别是在团队中工作时。

这真的取决于你的控制器应该做什么。例如,如果你只想显示博客文章或内容页面,你可以只使用一个名为"blog"或"pages"的控制器。控制器处理逻辑。如果你想运行许多功能(如帐户、事件、照片等),通常明智的做法是为每个功能提供自己的控制器,这样它们就可以根据自己的模型处理操作。

如果你使用像CodeIgniter这样的框架,你可以使用它们的路由特性来通过特定的控制器自动路由特定的url。例如,如果您希望页面的URL为http://example.com/page/page-title,则需要在路由配置文件中使用这一行:

$route['page/(:any)'] = 'page/get_page';

任何包含'page'的URI请求将由'page'控制器和'get_page'方法处理。您可以使用$this->uri->segment(2)获取页面标题或页面id。

我将有一个单一的控制器使用多个视图。方法如下。我的网页有共同的页眉,页脚和导航结构,所以这些视图对所有的网页调用都是共同的,因此控制器可以继承一个方法,该方法使用页眉/页脚/公共视图来获取内容并组装一个页面。为了显示网格,我可能有一个公共网格视图,我可以在多个控制器中使用它来显示表格数据。不同的用例可以重用一些视图。所以你可以在一个控制器中使用多个视图。

codeigniter本身并不限制你使用多少个控制器。

,但作为一个基本的想法,我倾向于把控制器分成模块。

例如,如果您的站点有前端和后端,我会将它们分开,所以我有2个控制器(每个控制器都有自己的视图)。

这样,如果你有超过一个人在网站上工作,你可以分配一个人负责前端,另一个人负责后端。

更进一步,你可以把它们拆分成更小的模块。例如,在前端,有一个主页页面和一个文章页面(当然您对这些页面有不同的看法),如果您觉得它们足够复杂,也可以将它们分解。但是如果你认为它们很简单,那么你可以为这些视图使用一个控制器。