Как иметь дело с шаблонами Codeigniter?

Это невозможно в PHP - как вы сказали, вы можете получить текущий обработчик ошибок при вызове set_error_handler и восстановить его с помощью restore_error_handler

27
задан Chuck Burgess 19 January 2013 в 19:53
поделиться

5 ответов

В отличие от других фреймворков CodeIgniter не имеет глобальной системы шаблонов. Каждый контроллер управляет своим собственным выводом независимо от системы, и представления являются FIFO, если не указано иное.

Например, если у нас есть глобальный заголовок:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<html>
    <head>
        <title><?=$title?></title>
        <!-- Javascript -->
        <?=$javascript ?>
        <!-- Stylesheets -->
        <?=$css ?>
    </head>
    <body>
        <div id="header">
            <!-- Logos, menus, etc... -->
        </div>
        <div id="content">

и глобальный нижний колонтитул:

        </div>
        <div id="footer">
            <!-- Copyright, sitemap, links, etc... -->
        </div>
    </body>
</html>

, то наш контроллер должен выглядеть как

<?php
class Welcome extends Controller {

    function index() {
        $data['title'] = 'My title';
        // Javascript, CSS, etc...

        $this->load->view('header', $data);

        $data = array();
        // Content view data
        $this->load->view('my_content_view', $data);

        $data = array();
        // Copyright, sitemap, links, etc...
        $this->load->view('footer', $data);
    }
}

Существуют и другие комбинации, но лучшие решения существуют через пользовательские библиотеки, например:

См. Комментарии ниже

25
ответ дан 28 November 2019 в 04:37
поделиться

Шаблон Codeigniter обычно представляет собой просто файл PHP. Вы можете использовать весь обычный синтаксис PHP для вывода переменных, выполнения циклов и вызова другого кода PHP.

Пример контроллера:

<?php
class Blog extends Controller {

    function index()
    {
        $data['title'] = "My Real Title";
        $data['heading'] = "My Real Heading";

        $this->load->view('blogview', $data);
    }
}
?>

Пример представления:

<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
    <h1><?php echo $heading;?></h1>
</body>
</html>

Подробнее читайте в документации здесь: Руководство пользователя CodeIgniter: Просмотры

0
ответ дан 28 November 2019 в 04:37
поделиться

Я использую CodeIgniter с Smarty, и это здорово (если вам нравится Smarty, я люблю).

Скажите у вас есть контроллер статьи, вы можете сделать в нем что-нибудь вроде этого:

class Article extends Controller {
  function show_all() {
    $articles = $this->article_model->get_all();
    $this->smarty->assign('entities', $articles);
    $this->smarty->view('list');
  }
}

А затем в вашем шаблоне:

{include file="header.tpl"}
  <ul>
  {foreach from=$entities item=entity}
  <li>{$entity.title}</li>
  {/foreach}
  </ul>
{include file="footer.tpl"}

Хорошая часть этого состоит в том, что контроллеру действительно не нужно знать о верхних и нижних колонтитулах. Он просто знает, что группа статей должна отображаться в виде списка. Оттуда это просто шаблоны, которые отвечают за определение того, как отображается список вещей, в данном случае в ul между верхним и нижним колонтитулами.

Еще одна интересная вещь, которую вы можете сделать, - это использовать этот шаблон списка для вещей, которые не статьи. У вас может быть список пользователей или страниц или что-то еще. В некоторых случаях может оказаться полезным повторное использование такого шаблона. Не всегда, но иногда.

Настроить CodeIgniter для умных пользователей довольно просто. Дело в том, чтобы скопировать файлы Smarty в папку вашей библиотеки и создать для нее простую оболочку. Вы можете найти инструкции здесь:

http://devcha.blogspot.com/2007/12/smarty-as-template-engine-in-code.html

Как только вы настроите, все отлично.

4
ответ дан 28 November 2019 в 04:37
поделиться

Я предвзято отношусь к этой библиотеке шаблонов, созданной Кармело Капинпином, потому что она очень проста в использовании: текст ссылки . Просто скопируйте файл в свою библиотеку, и все готово. Инструкции по его использованию приведены в предоставленной мной ссылке.

1
ответ дан 28 November 2019 в 04:37
поделиться

Эта библиотека , проста в использовании и настройке, делает именно то, что вы ожидаете:

  • избегает дублирования HTML (верхний, нижний колонтитул ..)
  • нет необходимости изучать новый язык (!)

Самая простая библиотека шаблонов для CodeIgniter

5
ответ дан 28 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: