к эволюции женского возбуждения - все это необходимые
компоненты успешной любовной игры.
Прелюдия
Для того чтобы двигаться дальше все предыдущие наработки не подходят. Много лишнего. Сделаем самую простую заготовку блога, в которой будет только отображение статей и возможность их ввода и редактирования. Для большего пафоса назовем это "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 архива). На этом прелюдия закончена, далее можно перейти непосредственно к процессу.