0

嘿,View在我加载视图文件后在我的课堂上,我render()应该访问我的数据,例如:

$this->model;

或喜欢:

$this->data['model'];

或在我包含视图文件之前的 render() 方法中具有以下内容:

$model = $this->data['model'];

// and then in my view file I can access the data by just calling it locally
$model->getSomething();

从我的视图文件中?

这三种方式都有效,但我开始认为$this->data['model'];是从视图文件中访问数据的正确方式。

哪个是正确的方法?

谢谢。

4

1 回答 1

1

在正确实现的 MVC 中,视图不是哑模板。它是一个类的实例,能够从模型层请求数据。而且模型不是类或实例。它是一个层(MVC 由两层组成:表示层和模型层)。

MVC 设计模式中的视图负责所有的 UI 逻辑。这意味着他们(如有必要)从多个模板创建响应。在其他情况下,唯一的响应可能是 HTTP 位置标头。

基本上,当您的视图实例需要某些东西时,它会执行以下操作:

$library = $this->serviceFactory('Library');
$details = $library->getCurrentBookDetails();

$someTemplate->assign('title', $details['title']);
$someTemplate->assign('content', $details['content']);

在这种情况下,服务工厂在当前视图和控制器之间共享,并确保仅实例化单个Library服务实例。从而为两个实例提供与模型层的相同状态交互的能力。

于 2013-01-01T18:22:34.390 回答