Курсовые - Автоматизация продаж женских платьев

LARAVEL

Laravel – фреймворк для построения веб-приложений с выразительным и элегантным синтаксисом. Процесс разработки только тогда наиболее продуктивен, когда работа с фреймворком приносит радость и удовольствие.

Laravel – попытка сгладить все острые и неприятные моменты в работе php-разработчика. Он берёт на себя аутентификацию, роутинг, работу с сессиями, кеширование, внедрение зависимостей и многое другое, что встречается в большинстве приложений, оставив вам только фокус на вашей задаче.

Laravel стремится сделать процесс разработки приятным для разработчика без ущерба для функциональности приложений. Для этого мы попытались объединить всё самое лучшее из того, что мы видели в других фреймворках, – RubyOnRails, ASP.NET  и Синатра, Kohana, Yii.  Превосходный IoCcontainer, встроенные миграции и интегрированная поддержка юнит-тестов дают вам мощные инструменты для того, чтобы сделать именно тот функционал, который вам нужен.

Laravel использует менеджер зависимостей Сomposer. В нашем проекте использется, OpenServer, composer поставлен совместно с пакетом программы OpenServer-а. Отдельно его скачивать и устанавливать не нужно.         Прежде чем устанавливать Laravel, давайте убедимся, что Composer работает. Для этого запустим встроенную консоль OpenServer.

В консоли наберём команду «Composer»:

                                     

                                                             Рисунок 6 – Консоль

Такой ответ консоли свидетельствует о том, что composer установлен.

Устанавливаем laravel через консоль, для этого в консоли прописываем команду: Comoser create-project laravel/laravel -prefer-dist.

Composer создаст папку laravel, куда установится проект laravel, со следующей структурой:                                                                                                      

                                                  

                                             Рисунок 7 – LARAVEL

 

3.1 Теория HMVC

Основной паттерн для создания фреймворков и других web-приложений. Фреймворки в PHP зачастую используют для больших проектов. Основное преимущество – это, конечно же, предоставление возможности строить проект при помощи паттерна MVC (Model-View-Controller).

Плюсы:

  • вложенность шаблонов;
  • независимость представления от контроллера;
  • целостность шаблона;
  • возможность кэширования;
  • видимость переменных;
  • лаконичность кода.

Расшифруем само понятие MVC:

Model – модели данных, которые многие и без того используют без фреймфорков. Фактически обычные классы для работы с разными данными.

View – представления. Это шаблонизатор, например, SMARTY либо собственный. Представления – это вид, в котором отображаются данные.
Controller – основной вызываемый класс, содержащий базовую логику приложения.

                                  

                                                      Рисунок 8 – Модели

Для понимания модели HMVC необходимо также иметь представление о роутинге (или маршрутизации) запросов. Главное отличие от MVC-паттерна – возможность передачи запроса по контроллерам.

По такому принципу построены почти все современные web-фреймворки (за исключением клиентских, таких как Angular, Backbone и др.)
В HMVC фактически процесс не меняется, т.к. последовательность действий в случае использования фреймворка остается той же, что и без него (принимаем данные – обрабатываем их в модели – выводим результат через представление).

HMVC позволяет легко собирать воедино и легко управлять большими частями кода. А фреймворк вносит существенную долю автоматизации и простоты управления. Фреймворк – это склад различных классов и библиотек, которые позволяют отказаться от изобретения велосипедов и начать использовать готовые решения, тем самым увеличив скорость разработки. Любой разработчик, если он занимается профессиональной разработкой, со временем приходит к созданию собственной библиотеке классов, основанной, как правило, на уже готовых классах.

Современные фрэймворки не только предлагают для использования готовые классы, но и свою структуру папок.

У каждого из фрэймворков есть свои преимущества и свои недостатки.

По концепции MVC, когда мы делаем запрос, мы, сперва, попадаем в контроллер (Controller). Затем в контроллере может происходить вызов модели (Model) (т.е. получение данных из модели), а затем передача этих данных в шаблон представления (View). Всё очень просто, но это не всегда бывает удобно, хотя бы потому, что часто приходится вносить изменения в контроллеры либо дублировать контроллеры из-за того, что в них вносятся незначительные изменения.                                                                                                                                                    В связи с этим придумали концепцию HMVC, т.е. иерархическая MVC. По данной концепции мы также сперва делаем запрос к контроллеру, который в свою очередь может передать запрос к другому контроллеру. Взаимосвязь самого контроллера с моделью и шаблоном представления осталась той же.                     Концепцию HMVC помогают понять следующие технологии:

  • наследование классов;
  • использование переменных-шаблонов.

Машрутизация

Запрос из адресной строки попадает в так называемый обработчик маршрутов, или маршрутизатор, или роутер (routes). Маршрутизатор определяет, какой  контроллер необходимо вызывать.                                                                          Маршруты находятся в папке routes.

Маршруты описываем в routes.php, указывая какой контролер и какой экшин будет отвечать за формирование той или иной страницы.

Например, регистрация маршрута, отвечающего на GET-запрос:

Route::get('/', function () {

  return "Привет, мир!";

});

Первый параметр – адрес маршрута, который вы регистрируете в маршрутизаторе (Router). Второй параметр – функция, содержащая логику для этого маршрута. Маршруты регистрируются без задания ведущего слеша (/) – единственное исключение – корневой маршрут, который состоит из одного слеша ('/').

Применение роутов в данном курсовом проекте:

Route::get('/catalog','CatalogController@getAll');
Route::get('/', 'BaseController@getIndex'Auth::routes();
Route::get('/home', 'HomeController@index');
//defoult route-всегда последний
Route::get('/{id}','StaticController@getIndex');

Контроллеры

Контроллеры хранятся в папке app/http/controllers/. Этот путь, в свою очередь определён в файле composer.json в настройке classmap.

Все контроллеры должны наследовать класс BaseController. Этот класс также может хранится в папке app/controllers, и в него можно поместить общую логику для других контроллеров. BaseController расширяет базовый класс Controller.

Для создания контроллера в консоли прописали данную команду:

php artisan make:controller NewsController.

Есть несколько способов определения маршрута для контроллера.

В файле app/routes.php.

Определение маршрута для контроллера с помощью метода get:

Route::get('static', 'StaticController@index');

С помощью метода cotroller:

Route::controller(

         'cabinet' => 'CabinetController',

);

С  помощью метода controllers:

Route::controllers([

         'cabinet' => 'CabinetController',

         'user' => 'UserController',

         'works' => 'WorksController',

         'portfolio' => 'PortfolioController',

         'auth' => 'Auth\AuthController',

         'password' => 'Auth\PasswordController',

]);

А вот так будет выглядеть сам контроллер:

namespace App\Http\Controllers;

class CabinetController extends BaseController {

         public function getIndex()

         {

            echo 'Ok';

         }

}

Применение контроллеров в данном курсовом проекте. Контроллер для создания каталога:

CatalogController.php

Namespace App\Http\Controllers;
use App\Catalog;
use Illuminate\Http\Request;
use App\Http\Requests;
class CatalogController extends Controller
{
  public function getIndex(){
     $text=Catalog::where('url','index')->first();
     return view('catalog')->with('text',$text);//вывод результата на экран, метод экшин
       
  }
  public function getAll(){
      $all = Catalog::get();
      return view('catalogall')->with('all', $all);  }}

Модели

Модель должна содержать всю бизнес-логику вашего приложения. Или, другими словами, то, как приложение взаимодействует с базой данных.

Бизнес-логика – это:

  • объекты реального мира, которые используются в вашем приложении;
  • то, как эти объекты взаимодействуют друг с другом;
  • набор правил для доступа к этим объектам и для их обновления.

Поэтому, например, Users станет важным объектом в Cribbb, потому что это социальное приложение.

Мы должны хранить информацию о наших пользователях, и поэтому нам нужна модель User и таблица User в базе данных.

Пользователям надо будет вводить имя, адрес электронной почты и пароль, а также другие детали профиля. Чтобы удостовериться, что они вводят правильно отформатированные данные, мы должны проверять их ввод.

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

Это основные особенности работы моделей в приложениях MVC. По существу для каждой важной вещи в приложении, вероятно, потребуется модель. Вам, возможно, понадобится проверять данные, используемые в вашей модели, а так же здесь должна быть вся логика, отвечающая за взаимодействие моделей друг с другом.

Создание модели User

Проверка подлинности пользователя требуется почти в каждом современном веб-приложении. Вместо того чтобы заставлять вас писать свою собственную модель пользователя, в Laravel  уже есть модель пользователя прямо из коробки.

В каталоге app находится файл User.php. Все модели должны помещаться в этом каталоге и именоваться таким же образом. Например, в данном курсовом проекте создали модель для каталога, файл модели  называется app /Catalog.php.

 

Модель Catalog.php.

php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Catalog extends Model
{
    public $table = "catalog";
}

Подключение и настройка базы данных осуществляется в файле application/config/database.php. Для подключения нужной базы данных прописали настройки сервера баз данных в массив mysql:

'mysql' => array(

                            'driver'    => 'mysql',

                            'host'      => 'localhost',

                            'database'  => 'project',

                            'username'  => 'root',

                            'password'  => '',

                            'charset'   => 'utf8',

                            'collation' => 'utf8_unicode_ci',

                            'prefix'    => '',

                   ),

Миграции

Миграции базы данных являются весьма полезными для любого проекта, особенно для проектов с несколькими разработчиками, позволяя иметь последнюю версию базы данных у всех разработчиков. В Laravel для этого достаточно выполнить одну команду в командной строке.

Для создания новой миграции понадобился интерфейс командной строки Laravel –  «Artisan».

Открыли  консоль командной строки из папки, где расположен файл artisan. В консоли ввели следующую команду:

php artisan make:migration create_categories

В папке database/migration создался новый файл 2016_10_25_111814_Catalog.php.

Класс миграции содержит два метода up() для внесения изменений в таблицу базы данных и down() для отмены действий метода up(). Например, если мы создаем таблицу в up(), то в down() её нужно удалить.

Допишем действия up() и down()

2016_10_25_111814_Catalog.php.

class Catalog extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
      Schema::create('catalog', function(Blueprint $t){
      $t -> increments('id');
      $t ->string('name');
      $t ->text('body');
      $t ->string('url');
      $t ->timestamps();
         });
   }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
      shema::drop('catolog');
    }
}

Внутри функции мы можем использовать следующие методы для определения структуры таблицы:

increments() — добавить автоинкрементируемое поле – его будет иметь боольшая часть ваших таблиц

string() – создать поле VARCHAR – правда, «строка» куда более описательное имя, чем в стандарте SQL

integer() –  добавить целочисленное поле

float() – поле с дробным числом (число с плавающей точкой)

boolean() –  логическое («булево») поле – истина (true) или ложь (false)

date() – поле даты

timestamp() – поле «отпечатка времени», так называемый «Unix timestamp»

text() – текстовое поле без ограничения по длине

blob() – большой двоичный объект (BLOB)

Перед тем как на основе существующих миграций создали таблицы, создали таблицу migrations, в которой laravel хранит данные о самих миграциях:

php artisan migrate:install

После того как создали таблицу, выполнили саму миграцию:

php artisan migrate.

Шаблоны

По умолчанию, laravel работает с шаблонизатором blade. Шаблоны создаются в папке app/views и имеют расширение blade.php. Шаблоны подключаются в экшне через хелпер view(), входящим параметром в который передаётся имя шаблона без расширения blade.php.

Сперва создали в папке view папку layouts для хранения базовых шаблонов.

catalogall.blade.php

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">Каталог</div>
                    <div class="panel-body">
                        @foreach($all as $one):
                            <div class="catalogs">
                                <h2>{{$one->name}}</h2>
                            </div>
                        @endforeach
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection

 

 

3.2 Авторизация

Модуль авторизации поставляется совместно с фрэймворком Laravel. Файл конфигурации авторизации находится в файле config/auth.php.

По умолчанию, для сохранения пользовательских данных, Laravel использует модель App\User.

Также модуль поставляется с двумя контроллерами аутентификации из коробки, которые находятся в App\HTTP\Controllers\Auth. AuthController содержит методы регистрации нового пользователя и аутентификации, в то время как PasswordController содержит логику помощи существующим пользователям сбросить свои забытые пароли. Каждый из этих контроллеров использует трэйты (traits), чтобы включить их необходимые методы. Для многих приложений вам не нужно будет изменять эти контроллеры вообще.

Для создания шаблонов и ротов авторизации, выполнили следующую команду: 

php artisan make:auth

Эта команда создала необходимые папки с шаблонами: resources/views/auth и resources/views/layouts, обновит файл routes.php и создаст ещё один контроллер,  HomeController, куда будет перенаправляться пользователь после успешной авторизации.

                                      

                                                      Рисунок 9 – Авторизация

 

                                           

                                                    Рисунок 10 – Регистрация

После успешной авторизации пользователь перенаправляется в /home. Чтобы перенаправить пользователя на другую страницу, в контроллере AuthController добавили свойство $redirectTo:

protected $redirectTo = '/home';

Объект авторизированного пользователя мы можем получить с помощью класса Auth:

$user = Auth::user();

Проверка, прошел ли пользователь авторизацию:

if (Auth::check()) {

    // The user is logged in...

В маршрутах для авторизированных пользователей, мы можем использовать middlewareauth:

Route::get('profile', ['middleware' => 'auth', function() {

    // Only authenticated users may enter...

}]);

// Using A Controller...

Route::get('profile', [

'middleware' => 'auth',

    'uses' => 'ProfileController@show'

]);

Тот же middleware мы можем использовать в конструкторах контроллера:

public function __construct()

{

    $this->middleware('auth');

}

 

В разделе 3 рассмотрен фреймворк Laravel , на основе которого создан данный проект. Описана теория MVC и HMVC, а также рассмотрена на примере при создании каталога товаров. 

Организован и описан модуль авторизации с помощью данного фреймворка.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться