[b]Примечание[/b]: Ñта Ñтраница также доÑтупна на английÑком и иÑпанÑком Ñзыках.
ЕÑли вы только начинаете работать Ñ CodeIgniter'ом и еще не предÑтавлÑете, как Ñоздать ÑиÑтему ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñайтом, Ñто руководÑтво как раз Ð´Ð»Ñ Ð²Ð°Ñ. Ð’ нем мы шаг за шагом раÑÑмотрим, как уÑтановить библиотеку и наÑтроить работу grocery CRUD Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ проекта. Заметим, что вÑе приведенные здеÑÑŒ примеры применимы к верÑиÑм CodeIgniter'а 2.Ñ….Ñ….
[b]Шаг 1.[/b] Прежде вÑего, Ñкачайте CodeIgniter, уÑтановите его и убедитеÑÑŒ в том, что при поÑещении проекта у Ð²Ð°Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÐµÑ‚ÑÑ Ð¿Ñ€Ð¸Ð²ÐµÑ‚ÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ñтраница. ЕÑли на первом Ñкране вы видите то же, что на картинке ниже, то уÑтановка фреймворка прошла уÑпешно и можно двигатьÑÑ Ð´Ð°Ð»ÑŒÑˆÐµ.
[img]/uploads/monthly_07_2012/post-198-0-87389800-1342555094.png[/img]
[b]Шаг 2.[/b] Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¼Ñ‹ перейдем к наÑтройке базы данных Ð´Ð»Ñ Ð½Ð°ÑˆÐµÐ³Ð¾ проекта. Подключение к базе данных Ð´Ð»Ñ CodeIgniter'а наÑтраиваетÑÑ Ð² файле your_project/application/config/database.php, который выглÑдит Ñледующим образом:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| DATABASE CONNECTIVITY SETTINGS
| -------------------------------------------------------------------
|
| Bla, bla, bla...
*/
$active_group = 'default';
$active_record = TRUE;$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
/* End of file database.php */
/* Location: ./application/config/database.php */
ЗдеÑÑŒ необходимо указать параметры Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº вашей базе данных. Ðапример:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '1234'; // Ðадежный пароль, правда?
$db['default']['database'] = 'my_new_cms';
[b]Шаг 3.[/b] Теперь приÑтупим к Ñозданию нашего контроллера, уÑловно назовем его Main. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñделать Ñто, перейдите в папку your_project/application/controllers/ и Ñоздайте в ней новый файл main.php, а затем добавьте в него Ñледующие Ñтроки:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
}
public function index()
{
echo '<h1>Добро пожаловать в мир grocery CRUD!</h1>'; // ПроÑто, чтобы убедитьÑÑ, что наш контроллер работает
die();
}
}
/* End of file main.php */
/* Location: ./application/controllers/main.php */
ЕÑли вы ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¹Ð´ÐµÑ‚Ðµ на Ñтраницу http://localhost/you.../index.php/main и увидите Ñообщение: "Добро пожаловать в мир grocery CRUD!", значит, вÑе работает, как Ñледует. Ðо еÑли вмеÑто Ñтого вы видите ошибку, подобную Ñтой:
[img]/uploads/monthly_07_2012/post-198-0-14660500-1342555364.png[/img]
значит, в ваших наÑтройках Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных что-то не правильно. Проверьте Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð‘Ð” и пароль и попробуйте зайти на Ñтраницу Ñнова.
[b]Шаг 4.[/b] Теперь Ñоздайте в базе данных новую таблицу, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ называтьÑÑ employees. Вот SQL-код, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ которого Ñто можно Ñделать:
CREATE TABLE IF NOT EXISTS `employees` (
`employeeNumber` int(11) NOT NULL AUTO_INCREMENT,
`lastName` varchar(50) NOT NULL,
`firstName` varchar(50) NOT NULL,
`extension` varchar(10) NOT NULL,
`email` varchar(100) NOT NULL,
`officeCode` varchar(10) NOT NULL,
`file_url` varchar(250) CHARACTER SET utf8 NOT NULL,
`jobTitle` varchar(50) NOT NULL,
PRIMARY KEY (`employeeNumber`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1703 ;
INSERT INTO `employees` (`employeeNumber`, `lastName`, `firstName`, `extension`, `email`, `officeCode`, `file_url`, `jobTitle`) VALUES
(1002, 'Murphy', 'Diane', 'x5800', 'dmurphy@classicmodelcars.com', '1', '', 'President'),
(1056, 'Patterson', 'Mary', 'x4611', 'mpatterso@classicmodelcars.com', '1', '', 'VP Sales'),
(1076, 'Firrelli', 'Jeff', 'x9273', 'jfirrelli@classicmodelcars.com', '1', '', 'VP Marketing'),
(1088, 'Patterson', 'William', 'x4871', 'wpatterson@classicmodelcars.com', '6', '', 'Sales Manager (APAC)'),
(1102, 'Bondur', 'Gerard', 'x5408', 'gbondur@classicmodelcars.com', '4', 'pdftest.pdf', 'Sale Manager (EMEA)'),
(1143, 'Bow', 'Anthony', 'x5428', 'abow@classicmodelcars.com', '1', '', 'Sales Manager (NA)'),
(1165, 'Jennings', 'Leslie', 'x3291', 'ljennings@classicmodelcars.com', '1', '', 'Sales Rep'),
(1166, 'Thompson', 'Leslie', 'x4065', 'lthompson@classicmodelcars.com', '1', '', 'Sales Rep'),
(1188, 'Firrelli', 'Julie', 'x2173', 'jfirrelli@classicmodelcars.com', '2', 'test-2.pdf', 'Sales Rep'),
(1216, 'Patterson', 'Steve', 'x4334', 'spatterson@classicmodelcars.com', '2', '', 'Sales Rep'),
(1286, 'Tseng', 'Foon Yue', 'x2248', 'ftseng@classicmodelcars.com', '3', '', 'Sales Rep'),
(1323, 'Vanauf', 'George', 'x4102', 'gvanauf@classicmodelcars.com', '3', '', 'Sales Rep'),
(1337, 'Bondur', 'Loui', 'x6493', 'lbondur@classicmodelcars.com', '4', '', 'Sales Rep'),
(1370, 'Hernandez', 'Gerard', 'x2028', 'ghernande@classicmodelcars.com', '4', '', 'Sales Rep'),
(1401, 'Castillo', 'Pamela', 'x2759', 'pcastillo@classicmodelcars.com', '4', '', 'Sales Rep'),
(1501, 'Bott', 'Larry', 'x2311', 'lbott@classicmodelcars.com', '7', '', 'Sales Rep'),
(1504, 'Jones', 'Barry', 'x102', 'bjones@classicmodelcars.com', '7', '', 'Sales Rep'),
(1611, 'Fixter', 'Andy', 'x101', 'afixter@classicmodelcars.com', '6', '', 'Sales Rep'),
(1612, 'Marsh', 'Peter', 'x102', 'pmarsh@classicmodelcars.com', '6', '', 'Sales Rep'),
(1619, 'King', 'Tom', 'x103', 'tking@classicmodelcars.com', '6', '', 'Sales Rep'),
(1621, 'Nishi', 'Mami', 'x101', 'mnishi@classicmodelcars.com', '5', '', 'Sales Rep'),
(1625, 'Kato', 'Yoshimi', 'x102', 'ykato@classicmodelcars.com', '5', '', 'Sales Rep'),
(1702, 'Gerard', 'Martin', 'x2312', 'mgerard@classicmodelcars.com', '4', '', 'Sales Rep');
ЕÑли Ñоздание таблицы и добавление в нее данных прошло уÑпешно, пора переходить к Ñледующему Ñтапу.
[b]Шаг 5.[/b] ВернемÑÑ Ðº нашему контроллеру и добавим в него код, необходимый Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ grocery CRUD. Прежде вÑего убедитеÑÑŒ в том, что вы Ñкопировали ВСЕ файлы и папки в Ñвой проект и правильно уÑтановили библиотеку.
О том, как Ñто Ñделать, вы можете узнать из инÑтрукции по уÑтановке grocery CRUD Ð´Ð»Ñ CodeIgniter'а на руÑÑком и английÑком Ñзыках.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->library('grocery_CRUD');
}
public function index()
{
echo '<h1>Добро пожаловать в мир grocery CRUD!</h1>'; // ПроÑто, чтобы убедитьÑÑ, что наш контроллер работает
die();
}
public function employees()
{
$this->grocery_crud->set_table('employees');
$output = $this->grocery_crud->render();
echo "<pre>";
print_r($output);
echo "</pre>";
die();
}
}
/* End of file main.php */
/* Location: ./application/controllers/main.php */
ЕÑли вÑе идет хорошо и у Ð²Ð°Ñ Ð½ÐµÑ‚ никаких ошибок или иÑключений, то, когда вы зайдете на Ñтраницу http://localhost/you.../main/employees, вы должны увидеть приведенный ниже пример. ЕÑли Ñто так, значит, вÑе работает правильно.
stdClass Object (
[output] => ЗдеÑÑŒ будут ваши данные.
[js_files] => Array (
[6b63be097451dbb96a950604e9a72faddca0131a] => http://your_project/assets/grocery_crud/js/jquery-1.7.1.min.js
[2d2b031fb606852768dc4c9a3c457545558cc924] => http://your_project/assets/grocery_crud/themes/flexigrid/js/cookies.js
[6629a324ade6d489aff77292cb02e31d9188a6bb] => http://your_project/assets/grocery_crud/themes/flexigrid/js/flexigrid.js
[f32759f44ae94dad1a17f0b37a77f4085f415e18] => http://your_project/assets/grocery_crud/themes/flexigrid/js/jquery.form.js
[0e49c025c7181e38222132fd81db98f418071bf4] => http://your_project/assets/grocery_crud/themes/flexigrid/js/jquery.numeric.js
)
[css_files] => Array (
[f1731e27afe02ab899b16daf8ae4a5ac8ac05d4e] => http://your_project/assets/grocery_crud/themes/flexigrid/css/flexigrid.css
)
)
[b]Примечание:[/b] пожалуйÑта, убедитеÑÑŒ в том, что вы [b]не[/b] иÑпользуете grocery CRUD в функции index() вашего контроллера, так как Ñто извеÑÑ‚Ð½Ð°Ñ Ð¾ÑобенноÑÑ‚ÑŒ работы библиотеки, и она не будет работать в index(). ПроÑто иÑпользуйте другие Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð². Ðапример, employees() или любое другое, но [b]не[/b] index().
[b]Шаг 6.[/b] Теперь перейдем к Ñозданию нашего вью. Результаты, которые были получены на предыдущем Ñтапе, мы можем иÑпользовать в дальнейшей работе grocery CRUD. Ð”Ð»Ñ Ñтого нам нужно проÑто Ñоздать Ð´Ð»Ñ Ð½Ð¸Ñ… вью, который будет выглÑдеть Ñледующим образом:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<?php
foreach($css_files as $file): ?>
<link type="text/css" rel="stylesheet" href="<?php echo $file; ?>" />
<?php endforeach; ?>
<?php foreach($js_files as $file): ?>
<script src="<?php echo $file; ?>"></script>
<?php endforeach; ?>
<style type='text/css'>
body
{
font-family: Arial;
font-size: 14px;
}
a {
color: blue;
text-decoration: none;
font-size: 14px;
}
a:hover
{
text-decoration: underline;
}
</style>
</head>
<body>
<div>
<a href='<?php echo site_url('examples/customers_management')?>'>Customers</a> |
<a href='<?php echo site_url('examples/orders_management')?>'>Orders</a> |
<a href='<?php echo site_url('examples/products_management')?>'>Products</a> |
<a href='<?php echo site_url('examples/offices_management')?>'>Offices</a> |
<a href='<?php echo site_url('examples/employees_management')?>'>Employees</a> |
<a href='<?php echo site_url('examples/film_management')?>'>Films</a>
</div>
<div style='height:20px;'></div>
<div>
<?php echo $output; ?>
</div>
</body>
</html>
Давайте Ñкопируем и Ñохраним Ñто в новом файле your_project/application/views/our_template.php, а затем вернемÑÑ Ð² наш контроллер и добавим в него еще немного кода.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->helper('url');
$this->load->library('grocery_CRUD');
}
public function index()
{
echo '<h1>Добро пожаловать в мир grocery CRUD!</h1>'; // ПроÑто, чтобы убедитьÑÑ, что наш контроллер работает
die();
}
public function employees()
{
$this->grocery_crud->set_table('employees');
$output = $this->grocery_crud->render();
$this->_example_output($output);
}
public function _example_output($output = null)
{
$this->load->view('our_template', $output);
}
}
/* End of file main.php */
/* Location: ./application/controllers/main.php */
Перейдите на Ñтраницу http://your_project/.../mail/employees и вы увидите Ñледующий результат:
[img]/uploads/monthly_07_2012/post-198-0-85061400-1342556311.png[/img]
Вот и вÑе! Теперь можно идти на кухню за чашечкой кофе или чаÑ, или бутылочкой пива (в завиÑимоÑти от того, который ÑÐµÐ¹Ñ‡Ð°Ñ Ñ‡Ð°Ñ) и наÑлаждатьÑÑ Ð²Ñеми возможноÑÑ‚Ñми grocery CRUD в Ñвоем проекте.
Чтобы продолжить знакомÑтво Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¾Ð¹, поÑмотрите примеры ее иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ можете Ñразу перейти к опиÑанию методов/функций grocery CRUD.
[b]Примечание:[/b] Ð´Ð°Ð½Ð½Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð° лишь Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы продемонÑтрировать, как уÑтановить grocery CRUD. ЕÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ какие-либо вопроÑÑ‹, отноÑительно работы CodeIgniter'а, например: "Как иÑпользовать вью?", пожалуйÑта, обратитеÑÑŒ к документации по фреймворку или задайте Ñвой Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð½Ð° форуме CodeIgniter'а.
[color=#ff0000]ЕÑли grocery CRUD не работает.[/color] Ð’Ñ‹ можете ознакомитьÑÑ Ñ Ð¸Ð·Ð²ÐµÑтными оÑобенноÑÑ‚Ñми в работе библиотеки или найти ответ на форуме grocery CRUD. ЕÑли у Ð²Ð°Ñ Ð½Ð¸ÐºÐ°Ðº не получаетÑÑ ÑƒÑтановить библиотеку, отправьте нам Ñообщение и обратитеÑÑŒ за поддержкой, мы ответим вам Ñразу, как только Ñможем.