.. / Codeigniter Step0: Собираем стенд для дальнейших экспериментов.

    Долгая прелюдия, потаенное осознанное внимание
    к эволюции женского возбуждения - все это необходимые
    компоненты успешной любовной игры.

    «Культ энергии оргазма» Т.Клири

    Прелюдия

    Для того чтобы двигаться дальше все предыдущие наработки не подходят. Много лишнего. Сделаем самую простую заготовку блога, в которой будет только отображение статей и возможность их ввода и редактирования. Для большего пафоса назовем это "Codeigniter CMS Embrio "™

    Все тексты заготовки сложем в архив. А после этого будет как в известной школе танцев "шаг вперед и поворот".

    Практически коды повторяют предыдущий выпуск "Codeigniter Blog шаг за шагом", поэтому комментарии будут минимальными. Все исходники как обычно складываем в архив, который можно скачать здесь (в директории step0)

    1. Разворачиваем дистрибутив

    Дистрибутив берем на официальном сайте разархивируем и копируем содержимое директории Codeigniter_N.N.N в корневую директорию сайта.

    2. Правим конфигурационные файлы

    Все конфигурационные файлы лежат в директории /system/aplication/config поочередно правим:

    • config.php

      $config['base_url'] = "/"; // сюда скинул проект
      $config['index_page'] = ""; // сбросим правило умолчания CI
    • database.php

      Находим строки отвечающие за соединение с БД:
      $db['default']['hostname'] = "localhost";
      $db['default']['username'] = "root"; // логин БД
      $db['default']['password'] = ""; // пароль БД
      $db['default']['database'] = "c3"; // название базы данных
    • autoload.php

      Находим строки отвечающие за подгрузку библиотек и хелперов
      $autoload['libraries'] = array('database','parser');
      $autoload['helper'] = array('url');
    • rootes.php

      $route['default_controller'] = "blog";

    3. Настраиваем htaccess

    Текст .htaccess:

    Options +FollowSymLinks
                Options -Indexes
                DirectoryIndex index.php
                RewriteEngine on
                RewriteCond $1 !^(index\.php)
                RewriteCond %{REQUEST_URI} !\.(css¦js¦jpg¦gif)$
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ index.php/$1 [L,QSA]

    4. Создаем БД

    CREATE TABLE entries (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    title VARCHAR( 255 ) NOT NULL ,
    author VARCHAR( 255 ) NOT NULL ,
    mail VARCHAR( 255 ) NOT NULL ,
    anounce TEXT NOT NULL ,
    content TEXT NOT NULL
    ) ENGINE = MYISAM ;
    INSERT INTO entries (title,content,anounce,mail,author) VALUES ('Text1', 'Text1 Text1 Text1', 'Anounce1 ','info@mail.ru','Zalkind');
    INSERT INTO entries (title,content,anounce,mail,author) VALUES ('Text2', 'Text2 Text2 Text2', 'Anounce2 ','info@mail.ru','Zalkind');
    INSERT INTO entries (title,content,anounce,mail,author) VALUES ('Text3', 'Text3 Text3 Text3', 'Anounce3 ','info@mail.ru','Zalkind');
    INSERT INTO entries (title,content,anounce,mail,author) VALUES ('Text4', 'Text4 Text4 Text4', 'Anounce4 ','info@mail.ru','Zalkind');
    INSERT INTO entries (title,content,anounce,mail,author) VALUES ('Text5', 'Text5 Text5 Text5', 'Anounce5 ','info@mail.ru','Zalkind');
    INSERT INTO entries (title,content,anounce,mail,author) VALUES ('Text6', 'Text6 Text6 Text6', 'Anounce6 ','info@mail.ru','Zalkind');


    5. Создаем Модель

    В прошлый раз, следуя дурной традиции авторов CI туториала, обходились без модели. Для Codeigniter, который с самого начала задумывался в концкпции Модель-Вьюер-Контроллер (MVC).

    Теперь мы как порядочные создадим модель, которая выполняет основные операции с БД - выборку и модификацию данных. На удалении и вставке данных сэкономим. Модель в файле S:\system\application\models\mblog:

    <?php
                class Mblog extends Model {
    
                 var $data=Array();
    
                 function Mblog()
                    {
                        parent::Model();
                    }
                 function getAll()
                    {
                        $query = $this->          db->          get('entries');
                        return $query->          result_array();
                    }
                 function getOne($id)
                    {
                        $query = $this->          db->          getwhere('entries', array('id' =>           $id))->          result_array();
                        return $query[0];
                    }
                 function update()
                    {
                        $this->          db->          update('entries', $this->          data, "id = ".$this->          data['id']);
                    }
                }
    ?>          

    6. Создаем контроллер

    В отличие от серии "Codeigniter Шаг за шагом" контроллер все операции по выборке и модификации данных выполняет через обращение к модели. Контроллер в файле S:\system\application\controllers\blog.php:

    <?php
    
                class Blog extends Controller {
    
                  function Blog()
                    {
                        parent::Controller();
                        $this->          load->          model('mblog');
                    }
                  function index()
                    {
                        $data['entries'] = $this->          mblog->          getAll();
                        $this->          parser->          parse('index.php',$data);
                    }
                  function view()
                    {
                        $id=$this->          uri->          segment(3);
                        $this->          parser->          parse('one.php',$this->          mblog->          getOne($id));
                    }
                  function edit()
                    {
                       $id=$this->          uri->          segment(3);
                       $this->          parser->          parse('edit.php',$this->          mblog->          getOne($id));
                    }
                  function save()
                    {
                        $this->          mblog->          data=$_POST;
                        $this->          mblog->          update();
                        $this->          view();
                    }
    }?>          

    7. Создаем вьюеры (views)

    Во вьюерах я использую класс темплейтов Codeigniter. Для базовой заготовки их нужно три:

    • вьюер ленты S:\system\application\views\index.php:

      <html>
      <head>          <link rel="stylesheet" href="/css.css" type="text/css" />          </head>      
      <body>      
      {entries}
      <div class="entries">      
         <h1>          {title}</h1>      
         <div class="content">           { anounce } </div>      
          <a  class="right" href="/blog/view/{id}">          more</a>      
      </div>      
      {/entries}
      </body>      
      </html>          
    • вьюер отдельной записи S:\system\application\views\one.php:

      <html>
      <head>          <link rel="stylesheet" href="/css.css" type="text/css" />          </head>      
      <body>      
      <div class="entries">      
         <h1>          {title}</h1>      
         <div class="content">          {content}</div>      
         <a class="right" href="mailto:{mail}">          {author}</a>      
         <a class="home" href="/">          Home</a>      
        
      <a class="home" href="/blog/edit/{id}">          Edit</a>      
      </div>      
      </body>      
      </html>          
    • вьюер редактирования: S:\system\application\views\edit.php:

      <html >
      <head>          <link rel="stylesheet" href="/css.css" type="text/css" />          </head>      
      <body>      
      <div class="entries">      
      <form action="/blog/save/{id}" method="post">      
      <input type="hidden" name="id" value="{id}"/>      
      Title
      <input type="text" name="title" value="{title}"/>      
      Author
      <input type="text" name="author" value="{author}" />      
      Mail
      <input type="text" name="mail" value="{mail}" />      
      Anounce
      <textarea name="anounce">       { anonunce }  </textarea>      
      Text
      <textarea name="content">          {content}</textarea>      
      <input type="submit" class="submit"/>      
      </form>      
      </div>      
      </body>      
      </html>          
    • для красоты создаем стилевую таблицу css.css в корневой диретории

    8. THE END

    Все исходники можно взять здесь ( директория step0 архива). На этом прелюдия закончена, далее можно перейти непосредственно к процессу.

    1. 2007-09-03
    1. erum.ru/tags/codeigniter-blog - Codeigniter Шаг за Шагом. Туториал по созданию примитивного блога на CI
Go Index Test