Spec-Zone.ru › CodeIgniter 4

Ячейки представления

Ячейки представления позволяют вставлять 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API