Jump to content


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


  • Please log in to reply
No replies to this topic

#1 noskov

noskov

    grocery CRUD Guru

  • Advanced Member
  • PipPipPip
  • 175 posts
  • LocationKiev

Posted 17 July 2012 - 08:44 PM

Первые шаги с grocery CRUD

Примечание: эта страница также доступна на английском и испанском языках.

Если вы только начинаете работать с CodeIgniter'ом и еще не представляете, как создать систему управления сайтом, это руководство как раз для вас. В нем мы шаг за шагом рассмотрим, как установить библиотеку и настроить работу grocery CRUD для нового проекта. Заметим, что все приведенные здесь примеры применимы к версиям CodeIgniter'а 2.х.х.

Шаг 1. Прежде всего, скачайте CodeIgniter, установите его и убедитесь в том, что при посещении проекта у вас отображается приветственная страница. Если на первом экране вы видите то же, что на картинке ниже, то установка фреймворка прошла успешно и можно двигаться дальше.

Posted Image

Шаг 2. Сейчас мы перейдем к настройке базы данных для нашего проекта. Подключение к базе данных для 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';

Шаг 3. Теперь приступим к созданию нашего контроллера, условно назовем его 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!", значит, все работает, как следует. Но если вместо этого вы видите ошибку, подобную этой:

Posted Image

значит, в ваших настройках подключения к базе данных что-то не правильно. Проверьте имя пользователя БД и пароль и попробуйте зайти на страницу снова.

Шаг 4. Теперь создайте в базе данных новую таблицу, которая будет называться 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');

Если создание таблицы и добавление в нее данных прошло успешно, пора переходить к следующему этапу.

Шаг 5. Вернемся к нашему контроллеру и добавим в него код, необходимый для работы 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
)
)

Примечание: пожалуйста, убедитесь в том, что вы не используете grocery CRUD в функции index() вашего контроллера, так как это известная особенность работы библиотеки, и она не будет работать в index(). Просто используйте другие названия методов. Например, employees() или любое другое, но не index().

Шаг 6. Теперь перейдем к созданию нашего вью. Результаты, которые были получены на предыдущем этапе, мы можем использовать в дальнейшей работе 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 и вы увидите следующий результат:

Posted Image

Вот и все! Теперь можно идти на кухню за чашечкой кофе или чая, или бутылочкой пива (в зависимости от того, который сейчас час) и наслаждаться всеми возможностями grocery CRUD в своем проекте.

Чтобы продолжить знакомство с библиотекой, посмотрите примеры ее использования или можете сразу перейти к описанию методов/функций grocery CRUD.

Примечание: данная инструкция предназначена лишь для того, чтобы продемонстрировать, как установить grocery CRUD. Если у вас есть какие-либо вопросы, относительно работы CodeIgniter'а, например: "Как использовать вью?", пожалуйста, обратитесь к документации по фреймворку или задайте свой вопрос на форуме CodeIgniter'а.

Если grocery CRUD не работает. Вы можете ознакомиться с известными особенностями в работе библиотеки или найти ответ на форуме grocery CRUD. Если у вас никак не получается установить библиотеку, отправьте нам сообщение и обратитесь за поддержкой, мы ответим вам сразу, как только сможем.

Attached Thumbnails

  • ci-welcome.png
  • db-error.png
  • employees-example.png





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users