Представление Laravel

"Laravel гибкая и расширяемая библиотека PHP для веб разработки. Освобождая вас от спагетти кода, Laravel помогает вам создавать прекрасные приложения с помощью простого и выразительного синтаксиса. Разработка должна быть творческим процессом, который доставляет удовольствие, а не причиняет боль. Насладитесь свежим ветром."

Данный текст (на английском языке) можно найти на странице проекта Laravel и если поверить ему, то все должно быть прекрасно. Давайте проверим приведенное утверждение с помощью построения простого TODO приложения и посмотрим, насколько сложно будет процесс создания.

Миграции
Сначала создадим базу данных. Приложение использует очень простую схему, единственная таблица с 5 столбиками для хранения ID, заголовка, описания и времени, когда задача была создана или обновлялась в последний раз.

Laravel имеет инструмент, который называется миграции (вы уже можете быть знакомы с ним, если использовали библиотеки подобные Ruby on Rails). Миграции - файлы, которые используются для обновления базы данных. При выполнении они изменяют схему базы данных таким образом, что вы легко можете применить обновление.

Для нашего приложения миграция выглядит так:
<?php
class Create_Todo_Table
{
    public function up() {
        Schema::table("todos", function($table) {
            $table->create();
            $table->increments("id");
            $table->string("title", 20);
            $table->text("description");
            $table->timestamps();
        });
    }
 
    public function down() {
        Schema::drop("todos");
    }
}

Метод up() вызывается, когда миграция выполняется. А метод down() вызывается для возврата в исходное состояние.

Модель
Так как Laravel использует схему MVC (модель-вид-контроллер), нам нужно создать модель. Как и в другие библиотеках MVC, модель является компонентом, который отвечает за связь с базой данных. Наша таблица проста и модель тоже будет простой:
<?php
class Todo extends Eloquent
{
    public static $timestamps = true;
}

Имя класса “Todo, и Laravel автоматически ассоциирует его с таблицей todos в базе данных. Eloquent - класс ORM для модели, который используется в Laravel. Он обеспечивает работу с объектами базы данных.

Свойство $timestamps получает значение true, что указывает на автоматическое обновление полей created_at и updated_at при создании или обновлении записи соответственно.

Контроллер
Теперь создадим контроллер. В нем содержится вся логика приложения и он должен обеспечивать функционал:

Возвращение всех записей в таблице в виде списка;
Возвращение информации определенной записи по указанному id;
Удаление записи по указанному id;
Представление формы для добавления новой записи:
Добавление новой записи в базу данных и представление сообщения о завершении операции.
Таким образом у нас будет следующий контроллер с пятью методами, которые будут вызываться для совершения действий. Объявление действия должно иметь префикс “action_”.
<?php
class Todo_Controller extends Base_Controller
{
    public function action_list() {
        $todos = Todo::all();
        return View::make("list")
                ->with("todos", $todos);
    }
 
    public function action_view($id) {
        $todo = Todo::where_id($id)->first();
        return View::make("view")
                ->with("todo", $todo);
    }
 
    public function action_delete($id) {
        $todo = Todo::where_id($id)->first();
        $todo->delete();
        return View::make("deleted");
    }
 
    public function action_new() {
        return View::make("add");
    }
 
    public function action_add() {
        $todo = new Todo();
        $todo->title = Input::get("title");
        $todo->description = Input::get("description");
        $todo->save();
        return View::make("success");
    }
}

Код достаточно простой и понятный. Первый метод action_list() получает все записи в базе данных. Здесь проявляется мощь Eloquent, который облегчает задачу, используя только Todo::all() для получения данных. Затем он возвращает вид со всеми записями, связанными с переменной $todos.

Другие методы также легко разобрать. Они выполняют манипуляции с объектом базы данных и возвращают вид со связанными данными. Последний метод может быть исключением, action_add() вызывается при передаче формы для добавления новой записи TODO. Input::get() используется для получения значений из переданной формы.

Вид
Теперь пришла пора заняться видом. Laravel использует собственный механизм шаблонов Blade, который дает нам простой и легко читаемый код. Мы приведем пример первого вида - список. С помощью выражения make/with при возвращении вида в методе action_list() мы поместили результат работы Todo::all() в $todos. Теперь можно использовать ее в виде:
<h2>Todo list</h2>
<p>{{ HTML::link_to_action("todo@new", "Add new todo") }}</p>
<ul>
@foreach($todos as $todo)
    <li>{{ HTML::link_to_action("todo@view", $todo->title, array($todo->id)) }} - {{ HTML::link_to_action("todo@delete", "Delete", array($todo->id)) }}</li>
@endforeach
</ul>

Сначала Blade создает ссылку на действие контроллера action_new(). Затем используется выражение foreach, которое очень похоже на оригинальное одноименное выражение PHP. Для каждой задачи мы создаем ссылку на вид записи. Вторым параметром является ссылка на текст $todo->title, а далее следуют любые параметры действия. Нам нужен ID записи, которую надо выводить - $todo->id. Также создаем ссылку на задачу удаления с использованием ID в качестве параметра.

Заключение
Действительно, создание приложения с помощью Laravel - простая задача. Код получается понятным и структурированным.

Возможно, представленный обзор подвигнет вас использовать Laravel для своего следующего проекта.
Теги:
Представление, Laravel
Добавлено: 08 Мая 2018 10:34:02 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...