繁体   English   中英

Codeigniter-创建视图Q

[英]Codeigniter - creating views Q

我的技术水平不是很高,但是想知道,因为我的技术团队正在以这种方式实施:我们是否需要为需要在网站上调用的每组视图创建一个“控制器”文件,还是可以控制1中的所有视图?控制器? 由多个控制器控制所有视图似乎需要更多工作。 我想让1个控制器调用所有视图以减少项目时间,但不确定是否可行或什至是一种好的做法?

这既不是好事,也不是坏事。 重要的是您的代码清晰且结构合理。 之后,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';

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

我将有一个使用多个视图的控制器。 这是怎么回事。 我的网页具有通用的页眉,页脚和导航结构,因此这些视图对于所有网页调用都是通用的,因此控制器可以继承采用页眉/页脚/通用视图的内容并组合页面的方法。 为了显示网格,我可能有一个通用的网格视图,可以在多个控制器中继续使用它们来显示表格数据。 不同的用例可以重用某些视图。 因此,可以在一个控制器中使用多个视图是有意义的。

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

但是作为一个基本思想,我倾向于将控制器分为模块。

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

这样,如果您在站点上工作的人数超过1,则可以将1个人分配给前端,将1个人分配给后端。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM