【发布时间】:2012-02-29 15:48:36
【问题描述】:
我正在使用 Codeigniter 构建一个 Web 应用程序,并且我正在尝试遵循正确的 OOP、MVC 和 Codeigniter 约定。有几件事肯定是在逃避我。下面是我困惑的简单解释。
我有一个“公司”表和一个 Companies_model。该模型具有私有变量,例如 id、name 和 url。该模型有一个名为 load_data( $id ) 的方法,它使用 id 将有关公司的所有数据加载到类变量中。这个 $id 来自 URL。最后,此模型具有返回值的公共 getter。
我的网站上有我系统中每个公司的个人资料页面。在我的 Companies 控制器中,我通过以下方式加载该公司的数据。
$this->load->model( 'Companies_model', 'Companies_profile' );
$this->Companies_profile->load_data( $this->uri_company_id );
当我的其他逻辑在控制器中完成时,我有以下代码来呈现视图:
$this->data['Companies_profile'] = $this->Companies_profile;
$this->load->view( 'profiles/companies_profile_view', $this->data );
在我看来,我这样渲染数据:
<p>This company's name is <?php echo $Company_profile->get_name(); ?>.</p>
所有这些似乎都是多余的。当数据在 Companies_method 的特定实例中已经可用时,为什么我要将数据传递给视图?我感到困惑,我做错了什么,但我不知道那是什么。也许我没有做错任何事情,但还没有遇到这种结构的一些原因。总的来说,我的应用程序相当简单。有人可以阐明如何正确组织数据并将数据传递给视图吗?为什么要传递数据,而不仅仅是在 CI 的基类 $this 中提供所有数据?
注意:我在渲染的每个页面上都有多个 Companies_model 实例,因为我在每个个人资料页面上都有相关公司的列表。
【问题讨论】:
标签: model-view-controller oop codeigniter