Начнем создание контроллера настройки с создания таблицы в cm_nastr. Обратимся кописанию функционала нашей CMS.
В настройках нам необходимо указывать количество фотографий и количество новостей на странице.
Создадим таблицу cm_nastr.
DROP TABLE IF EXISTS `cm_nastr`;
CREATE TABLE `cm_nastr` (
`id` INT(2) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
`value` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of cm_nastr
-- ----------------------------
INSERT INTO `cm_nastr` VALUES ('1', 'Количество новостей', '5');
INSERT INTO `cm_nastr` VALUES ('2', 'Количество фотографи', '5');
Создадим модель mdl_nastr
<?php
/**
* @author allexe
* @copyright 2010
* 26.8.2010
* Описание файла: Модель для работы с таблицей новостей
*/
if (!defined('BASEPATH')) exit('No direct script access allowed');
class mdl_nastr extends CRUD
{
var $table = 'nastr'; //Имя таблицы
var $idkey = 'id';
var $edit_rules = array(array('field' => 'name', 'label' => 'Имя настройки',
'rules' => 'required|max_length[255]'), array('field' => 'value', 'label' =>
'Значение настройки', 'rules' => 'required'));
}
?>
В правилах валидации мы описываем только правила для редактирования. Ручное добавление настроек мы не делаем.
Создадим файлы видов admin/nastr_list (вывод списка настроек), admin/nastr (редактирование настройки).
Файл admin/nastr_list
<h2>Список настроек</h2>
<table border="0" width="400" cellspacing="4">
<tr><td>Имя настройки</td><td>Значение</td></tr>
<?php foreach($list as $one):?>
<tr><td><?=$one['name'];?></td><td><?=anchor(base_url().'admin/nastr/edit/'.$one['id'],$one['value']);?></td></tr>
<?endforeach;?>
</table>
Файл вида admin/nastr
<?=$validation_errors;?>
<?=form_open ('admin/nastr/edit/'.$one['id']); ?>
<table border="0" width="400" cellspacing="4">
<tr>
<td>Имя настройки</td><td><input name="name" value="<?=set_value ('namr',$one['name'])?>"></td>
</tr>
<tr>
<td>Значение</td><td><input name="value" value="<?=set_value ('value',$one['value'])?>"></td>
</tr>
<tr>
<tr>
<td align="left">
<input type="submit" value="Изменить">
</td>
<td></td>
</tr>
</table>
</form>
Создание котнроллера admin/nastr
<?php
/**
* @author allexe
* @copyright 2010
* 26.8.2010
* Описание файла: Контроллер Настройки
*/
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class nastr extends Controller
{
function nastr()
{
parent::Controller();
if (!($this->userlib->logged_in())) {
redirect(base_url() . 'users/login/');
}
}
/**
* Список настроек
*/
function index()
{
$header_data['page_title'] = 'Раздел настройки';
$this->load->view('admin/header.php', $header_data);
$this->load->model('mdl_nastr');
$data['list'] = $this->mdl_nastr->getlist();
$this->load->view('admin/nastr_list.php', $data);
$this->load->view('admin/footer.php');
}
/**
* Редактирование новости
*/
function edit($id)
{
$CI = &get_instance();
$CI->load->model('mdl_nastr'); //Загрузка модели
if ($CI->mdl_nastr->edit($id) !== false) {
//Делаем редирект на список настроек
redirect('admin/nastr');
} else {
//Выводим форму добавления
$header_data['page_title'] = 'Редактирование настройки';
$this->load->view('admin/header.php', $header_data);
//Теперь готовим вывод серединки
$data = array();
$data['validation_errors'] = validation_errors();
$CI->load->model('mdl_nastr');
$data['one'] = $CI->mdl_nastr->get($id);
$this->load->view('admin/nastr', $data);
//Здесь вывод футера
$this->load->view('admin/footer.php');
}
}
}
?>