Главная

Webmacter V.2 Всё для вебмастера » Уроки по JS » Backbone.js 25 – Менеджер контактов. Настройка серверной части Laravel.

Backbone.js 25 – Менеджер контактов. Настройка серверной части Laravel.

Backbone.js 25 – Менеджер контактов. Настройка серверной части Laravel.


Сегодня мы начинаем заключительный цикл скринкастов, посвященный Backbone.js. Мы будем создавать полноценное одностраничное приложение – менеджер контактов.




Всем привет! Начнем с настройки и написания серверной части. Я продолжаю использовать в качестве бэкэнда PHP фреймворк Laravel. Создадим модель Contact и таблицу Contacts в БД. Установим между ними связь и забьем таблицу данными.

Laravel модель:
<?php 
	class Contact extends Eloquent {
		public static $table = 'contacts';
		public static $timestamps = false;
	}

 ?>

Команды для создания миграции

php artisan migrate:install
php artisan migrate:make create_contacts_table --table contacts --create


Код миграции:
public function up() 
{
	Schema::create('contacts', function($stable) 
	{
		$table->increments('id');
		$table->string('first_name');
		$table->string('last_name');
		$table->string('email_address')->unique();
		$table->string('description')->nullable();	
	});
}

Команда самой миграции:
php artisan migrate

Описываем данные в php массивах:
class Seed_Contacts extends \S2\Seed {

    public function grow()
    {
        $contact = new Contact;
        $contact->first_name = 'Павел';
        $contact->last_name = 'Сидоров';
        $contact->email_address = 'sidorov@gmail.com';
        $contact->description = 'Повар';
        $contact->save();

        $contact = new Contact;
        $contact->first_name = 'Наталья';
        $contact->last_name = 'Сидорова';
        $contact->email_address = 'sidorova@gmail.com';
        $contact->description = 'Жена повара.';
        $contact->save();

        $contact = new Contact;
        $contact->first_name = 'Иван';
        $contact->last_name = 'Петров';
        $contact->email_address = 'petrov@gmail.com';
        $contact->description = 'Лучший друг повара.';
        $contact->save();

    }

}

Команда забивающая вышеописанные массивы данных в БД:
php artisan plant::seed all

Создаем контроллер и описываем базовую платформу из методов(actions) взаимодействующих с БД.

Команда создающая контроллер и загатовки для всех необходимых действий:
php artisan generate:controller Contacts index create store show edit update destroy

Код самого контроллера:
<?php

class Contacts_Controller extends Base_Controller {    

	public function action_index()
    {
        $fetchAllContacts = Contact::all();
        $fetchedAllAttributes = array();

        foreach ($fetchAllContacts as $model) {
            $fetchedAllAttributes[]=$model->attributes;
        }

        return json_encode($fetchedAllAttributes);
    }    

	public function action_create()
    {

    }    

	public function action_store()
    {
    	$input = Input::json();

    	Contact::create(array(
    		'first_name' => $input->first_name,
    		'last_name'  => $input->last_name,
    		'email_address' => $input->email_address,
    		'description' => $input->description
    	));
    }    

	public function action_show($id)
    {
    	return json_encode( Contact::find($id) );
    }    

	public function action_edit($id)
    {

    }    

	public function action_update($id)
    {
    	$contact = Contact::find($id);
    	$input = Input::json();

    	$contact->first_name = $input->first_name;
    	$contact->last_name = $input->last_name;
    	$contact->email_address = $input->email_address;
    	$contact->description = $input->description;

    	$contact->save();
    }  

	public function action_destroy()
    {
    	return Contact::find($id)->delete();
    }

}

Регистрируем контроллер в routes.php:
Route::controller(Controller::detect());

Теперь подключаю и создаю main.js с кодом нашего глобального объекта приложения и вспомогательной функцией vent (pub/sub – шаблон):
<!doctype html>
<html lang="en">
<head>
	<title></title>
</head>
<body>
	<h1>Hello World</h1>

	<script src="js/underscore.js"></script>
	<script src="js/jquery.js"></script>
	<script src="js/backbone.js"></script>
	<script src="js/main.js"></script>	
	<script src="js/models.js"></script>	
	<script src="js/collections.js"></script>	
	<script src="js/views.js"></script>	
	<script src="js/router.js"></script>	

</body>
</html>

(function() {
	window.App = {
		Models: {},
		Collections: {},
		Views: {},
		Router: {}
	}

	window.vent = _.extend({}, Backbone.Events);
}());

На этом сегодня все. До следующего урока!

Источник:loftblog
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.