CI-Engine запрограммирован на фреймворке CodeIgniter и подчиняется правилам его работы. Маршрутизация путей url организована по принципам этой несложной, но удобной технологии и является главным ее преимуществом. Для полноценной работы сайта нет необходимости в каких-либо дополнительных модулях для сервера, например в .htaccess для Apache. Скрипт ориентируется по сегментам адресной строки, в зависимости от их значений и последовательности. Так подключаются и инициируются классы и вызываются их методы (функции).

Значение адресной строки «/index.php/news/category/help/» по умолчанию приводит к инициализации класса-контроллера “news” и вызову его метода (функции) под названием «category» с первым его аргументом «help». Таким образом, с помощью url-адреса можно с легкостью и удобством задавать в методах значения аргументов, чтобы метод вызвался и отработал с необходимыми параметрами.

Также удобно использовать и классы моделей. Они предназначены уже не для вызова из адресной строки, а для срабатывания внутри классов-контроллеров преимущественно для работы с базой данных. Создание классов-моделей позволяет значительно упростить код внутри классов-контроллеров, отделив, таким образом, функциональности определенного рода друг от друга, а также позволяет обобщить функции для разных контроллеров, минимизировать «повторяемость» кода и добавить ему эффективности.

Файлы видов применяются для создания отделенной от основного кода функциональности, предназначенной исключительно для вывода информации. В различных методах классов контроллеров можно использовать для вывода одни и те же шаблоны (файлы видов). После подключения в контроллере файл вида автоматически обрабатывается и выводится имеющаяся в нем информация, а также выполняется php-код.

Создание контроллера (“/application/controllers/Addnews.php”)


defined('BASEPATH') OR exit('No direct script access allowed');

class Addnews extends CI_Controller {

public function __construct() {
parent::__construct();
session_start();
$this->load->helper(array('form', 'url', 'sort', 'array', 'string', 'settings'));
$this->load->library('form_validation');
$this->load->model('news_model');
$this->load->model('user_model');
}

public function index($id = false)
{
$data[‘errors’][] = “adding a news”;
$qlty = $this->news_model->get_quality();
//…
$this->load->view(“addnews”, $data);
}
}



Создание модели ("/application/models/News_model.php")


class News_model extends CI_Model {
public $data = array();

public function __construct() {
parent::__construct();
$this->load->database();
}

public function get_quality($where = "") {
if(!empty($where))
$where = " WHERE ".$where;
$query = $this->db->query("SELECT COUNT(*) as q FROM news {$where}");
$row = $query->row_array();
return $row['q'];
}
}
Добавлено: 24.09.2017, в 16:21:49
Отредактировано: 27.09.2017, в 15:12:31
Добавил: admin
Поиск