⚠ In case you've missed it, we have migrated to our new website, with a brand new forum. For more details about the migration you can read our blog post for website migration. This is an archived forum. ⚠

  •     

profile picture

Инструкция по grocery CRUD для новичков (The newbies grocery CRUD Tutorial in Russian)



noskov.biz
  • profile picture
  • Member

Posted 17 July 2012 - 20:44 PM

[b][size=5]Первые шаги с grocery CRUD[/size][/b]

[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. Если у вас никак не получается установить библиотеку, отправьте нам сообщение и обратитесь за поддержкой, мы ответим вам сразу, как только сможем.