Ячейки представления
Ячейки представления позволяют вставлять HTML, который генерируется вне вашего контроллера. Они просто вызывают указанный класс и метод, который должен возвращать строку с допустимым HTML. Этот метод может находиться в любом вызываемом методе, в любом классе, который может найти автозагрузчик. Единственное ограничение состоит в том, что класс не может иметь параметров конструктора. Это предназначено для использования внутри представлений и является отличным инструментом для модулизации кода.
<?= view_cell('\App\Libraries\Blog::recentPosts') ?>
В этом примере загружается класс App\Libraries\Blog, и выполняется метод recentPosts(). Метод должен возвращать сгенерированный HTML как строку. Метод может быть статическим или нет. В любом случае это работает.
Параметры ячейки
Вы можете дополнительно уточнить вызов, передав список параметров во втором параметре методу. Передаваемые значения могут быть массивом пар ключ/значение или строкой пар ключ/значение, разделенных запятыми:
// Passing Parameter Array
<?= view_cell('\App\Libraries\Blog::recentPosts', ['category' => 'codeigniter', 'limit' => 5]) ?>
// Passing Parameter String
<?= view_cell('\App\Libraries\Blog::recentPosts', 'category=codeigniter, limit=5') ?>
public function recentPosts(array $params = [])
{
$posts = $this->blogModel->where('category', $params['category'])
->orderBy('published_on', 'desc')
->limit($params['limit'])
->get();
return view('recentPosts', ['posts' => $posts]);
}
Кроме того, вы можете использовать имена параметров, соответствующие переменным параметрам в методе, для лучшей читаемости. Когда вы используете это таким образом, все параметры должны всегда указываться в вызове ячейки представления:
<?= view_cell('\App\Libraries\Blog::recentPosts', 'category=codeigniter, limit=5') ?>
public function recentPosts(string $category, int $limit)
{
$posts = $this->blogModel->where('category', $category)
->orderBy('published_on', 'desc')
->limit($limit)
->get();
return view('recentPosts', ['posts' => $posts]);
}
Кэширование ячеек
Вы можете кэшировать результаты вызова ячейки представления, передав количество секунд для кэширования данных как третий параметр. Это будет использовать текущий конфигурированный движок кэширования.
// Cache the view for 5 minutes
<?= view_cell('\App\Libraries\Blog::recentPosts', 'limit=5', 300) ?>
Вы можете предоставить пользовательское имя вместо автоматически сгенерированного, если хотите, передав новое имя как четвертый параметр:
// Cache the view for 5 minutes
<?= view_cell('\App\Libraries\Blog::recentPosts', 'limit=5', 300, 'newcacheid') ?>
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/outgoing/view_cells.html