На мен понякога ми харесва Изгледът да има пълен достъп до Модела ... всичко зависи от случая.
Пример:
Controller
GeSHi (PHP):
class User extends CollectionController
{
...
public function getUsers
{
$this->model = new UserCollectionModel();
$this->view('getUsers', $this->model);
}
}
View:
GeSHi (PHP):
$model = new GridCollection($this->model);
$users = $model->getAll();
...
(... DO SOMETHING WITH $users ...)
Изненада:
GeSHi (PHP):
class GridCollection extends DecoratorCollection_Model
{
public function __construct($model, $conf = null)
{
parent::__construct(new FilteredCollection(new OrderedCollection(new LimitedCollection($model, $conf), $conf), $conf), $conf);
}
}
Моделът се подавя на Изгледа, който решава какъв декоратор ще му сложи. Все пак странициране, подреждане и т.н. са функции на Изгледа, не на Модела или Контролера... Пример: csv, excel изгледите не се нуждаят от странициране/филтриране(по принцип)/подреждане, докате html/pdf и други такива се нуждаят от някои от тези функции.
Та ... MVP концепцията не би свършила работа в този случай.