Быстрый старт
Пути в CodeIgniter
http://example.com/news/latest/10
Расшифровка этого пути следующая http://example.com/[controller-class]/[controller-method]/[arguments]
Пример простейшего контроллера в файле news.php application/controllers
<?php
class Pages extends CI_Controller {
        public function view($page = 'home'){
        }
}
Т.е. данный контроллер будет работать по пути
http://example.com/index.php/pages/view
Тогда нужно добавить функцию index в контроллер
<?php
class Pages extends CI_Controller {
        public function view($page = 'home'){
        }
        public function index($page = 'home'){
        }
}
Подгружаем вьюхи
В application/views создадим файлы header.php и footer.php
   $this->load->view('templates/header', $data);
   $this->load->view('pages/'.$page, $data);
   $this->load->view('templates/footer', $data);
Настройка путей
Заходим в config/routes.php
$route['default_controller'] = 'pages/view';
Сейчас все запуски происходят через index.php
example.com/index.php/news/view/home2
Для того, чтобы убрать index.php из адресов создаем .htaccess в корне (а не в папке application)
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]
Передадим данные во вьюху
Дописываем в контроллер до загрузки вьюхи
$data["x"] = 'test';
А во view добавляем
<?php echo $x ?>
или можем записать короче
<?=$x?>
Работа с моделями
Не так вы ее себе представляли!? :)
Создаем таблицу news
В PHPMyAdmin создаем
CREATE TABLE news (
        id int(11) NOT NULL AUTO_INCREMENT,
        title varchar(128) NOT NULL,
        slug varchar(128) NOT NULL,
        text text NOT NULL,
        PRIMARY KEY (id),
        KEY slug (slug)
);
class News_model extends CI_Model {
        public function __construct()
        {
                $this->load->database();
        }
}
application/config/database.php
Нам необходимо прописать
   'hostname' => 'localhost',
   'username' => 'root',
   'password' => '',
   'database' => 'database_name',
Добавим метод в news_model
public function get_news($slug = FALSE)
{
        if ($slug === FALSE)
        {
                $query = $this->db->get('news');
                return $query->result_array();
        }
        $query = $this->db->get_where('news', array('slug' => $slug));
        return $query->row_array();
}
Модифицируем наш контролер
class News extends CI_Controller {
        public function __construct()
        {
                parent::__construct();
                $this->load->model('news_model');
                $this->load->helper('url_helper');
        }
        public function index()
        {
                $data['news'] = $this->news_model->get_news();
        }
        public function view($slug = NULL)
        {
                $data['news_item'] = $this->news_model->get_news($slug);
        }
}
Поменяем метод index на
public function index()
{
        $data['news'] = $this->news_model->get_news();
        $data['title'] = 'News archive';
        $this->load->view('header', $data);
        $this->load->view('index', $data);
        $this->load->view('footer');
}
Создаем во views index.php
<h2><?php echo $title; ?></h2>
<?php foreach ($news as $news_item): ?>
        <h3><?php echo $news_item['title']; ?></h3>
        <div class="main">
                <?php echo $news_item['text']; ?>
        </div>
        <p><a href="<?php echo 'news/'.$news_item['slug']; ?>">View article</a></p>
<?php endforeach; ?>
Теперь вернемся к нашему контроллеру и изменим у него метод views
public function view($slug = NULL)
{
        $data['news_item'] = $this->news_model->get_news($slug);
        if (empty($data['news_item']))
        {
                show_404();
        }
        $data['title'] = $data['news_item']['title'];
        $this->load->view('header', $data);
        $this->load->view('view', $data);
        $this->load->view('footer');
}
Как видите нам нужна новая вьюха view, придется создать и ее
Добавим в нее следующий код
<?php
echo '<h2>'.$news_item['title'].'</h2>';
echo $news_item['text'];
Возвращаемся к путям application/config/routes.php
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['default_controller'] = 'news/index';
Теперь если все указали правильно – должно работать
////////////////////////////////////////
Работа с формами $config['base_url'] = 'http://localhost/sms/';
Загрузка картинок
Практика:
Сделать контроллер, который бы считал сумму двух чисел.
Используя views собрать сайт с хедером и контентом.
Сделать контроллер, который бы выводил список работников с их заработной платой.