Laravel на прокачку

Mar 22, 05:40 am Категория:   Комментарии

Пока голова занимается обоснованием необходимости переноса этого сайта на Laravel, я готовлю установленную версию фреймворка к великим делам. Причём не важно, с этим сайтом или с другим, но дела будут. А значит нужно установить всё, что… нужно. Это как в статьях типа “7 неотложных дел перед сексом на Красной площади” – чётко и по полочкам разложенное личное мнение, претендующее на звание истины в последней инстанции. Ну если быть скромнее, то чек-лист по доводке свежеустановленного Laravel. Пожалуй, я повторю пункты, прописанные где-то ранее. Чисто чтобы были в одном месте.

Установка

composer create-project laravel/laravel project.name --prefer-dist

после сообщения о генерации access tokens переходим в директорию проекта и устанавливаем разрешения

сd  project.name
chmod +x artisan
chmod 777 storage
chmod 777 storage/* -R
chmod 777 bootstrap/cache
chmod 777 bootstrap/cache/* -R

Проверяем наличие и состав .env. Если файла нет, создаём его

cp .env.example .env

В файле проверяем и устанавливаем нужные значения переменных

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://localhost

Если значение APP_KEY установлено в SomeRandomString, то запускаем команду

./artisan key:generate

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

Устанавливаем параметры соединения с базой данных. Если этого не требуется, то я даже не знаю, зачем Laravel устанавливался.

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Отлично. Теперь устанавливаем миграции и идентификационный каркас (authentication scaffold) – набор представлений, контроллер и дополнение роутера.

./artisan migrate
./artisan make:auth

Теперь установим несколько обязательных пакетов. Я пишу только об установке на 5-ю версию фреймворка. Если нужно что-то другое, то ссылки в ассортименте.

Laravel Debugbar – обязательный пакет на девелоперской установке Laravel. Почитать подробности можно по ссылке. Установка происходит в два приёма:

composer require barryvdh/laravel-debugbar

Дожидаемся окончания загрузки и обновления и в файл config/app.php добавляем две строки:

Barryvdh\Debugbar\ServiceProvider::class, в массив ‘providers’
'Debugbar' => Barryvdh\Debugbar\Facade::class, в массив aliases

Я добавляю эти строки в конце массива, чтобы проще было находить и, при необходимости, удалять/редактировать.

Если захочется что-то редактировать в установках пакета, выполняем

php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

Принцип понятен? Дальше быстренько ещё несколько пакетов.

Laravel 5 IDE Helper Generator – генератор хелпера для автодополнения в редакторах. Автор тот же. Маст хэв.

composer require barryvdh/laravel-ide-helper

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, в массив ‘providers’ и после этого выполнить команду

php artisan ide-helper:generate

Чтобы хелпер генерировался при каждом изменении состава фреймворка, в composer.json внести такие правки:

"scripts":{
    "post-update-cmd": [
        "php artisan clear-compiled",
        "php artisan ide-helper:generate",
        "php artisan optimize"
    ]
},

Intervention Image – годный пакет для работы с графикой: резать, крутить, зумить и т.п. Если есть какая-нибудь работа с графикой, хоть превьюшки делать, хоть фотошоп изображать, нужно ставить. GD2 или IMagick должны присутствовать на сервере.

composer.phar require intervention/image

Intervention\Image\ImageServiceProvider::class, в массив ‘providers’
'Image' => Intervention\Image\Facades\Image::class, в массив aliases

Laravel Socialite – пакет для работы с социальными сетями. Тот самый OAuth, да.

composer require laravel/socialite

Laravel\Socialite\SocialiteServiceProvider::class, в массив ‘providers’
'Socialite' => Laravel\Socialite\Facades\Socialite::class, в массив aliases

Разумеется потом нужно будет добавлять все эти ключи секретные, урлы для колбеков и редиректов. Для отечественных VK/OK ещё бубны потребуются. Но при должном усердии оно подключается.

Laravel Collective – набор хелперов для генерации форм и других элементов html. Обычно требуется при использовании старых наработок. В процессе разработки из ядра эта функциональность была удалена, но группа энтузиастов создала пакет с ними. Опенсорс, чо.

composer require laravelcollective/html

Collective\Html\HtmlServiceProvider::class, в массив ‘providers’
'Form' => Collective\Html\FormFacade::class, в массив aliases
'Html' => Collective\Html\HtmlFacade::class, в массив aliases

Для начала всё. Можно все пакеты заставить поделиться своими тайнами

./artisan vendor:publish

Как со всем этим богатством обращаться потом разберёмся. Главное, что оно уже установлено.

Организация базы данных: Миграции

Mar 20, 11:10 pm Категория:   Комментарии

После всех отступлений и других телодвижений я опять добрался до базы, мать их, данных. В небольшой статье, посвящённой анализу базы Textpattern я вплотную подошёл к проектированию базы данных нового сайта на Laravel. Чтобы наше шоу не продлилось вечно, я напомню о том, что Laravel – это фремворк для веб-ремесленников. А значит, что главное результат, а не теория. Поэтому буду краток. Если получится.

Весь текст статьи

Физическое наступление. Нюансы и настройки.

Mar 20, 03:14 am Категория:   Комментарии

Было бы нечестно оставить неофита с Laravel в стадии демонстрации имени и версии. На самом деле велика вероятность, что при установке этого фреймворка что-то пойдёт не так. Самое удивительное, что некоторые нюансы исчезают из документации, но продолжают иметь место быть. Это касается, к примеру, разрешений, которые я назначал в прошлой статье служебным директориям. С чем связано это утаивание я не знаю, но для себя в чек-листе эти пункты прописал. Поделюсь ещё парой наблюдений и наработок.

Весь текст статьи

Лирическое отступление. Laravel, окружение и установка.

Mar 19, 06:00 am Категория:   Комментарии

Между делом обновил тестовый сервер, чтобы на нём можно было кувыркаться с современными фреймворками. Стыдно признаться, но у меня на нём стоял Linux Ubuntu 12.04 со старыми версиями PHP, Apache и MySQL. А некоторые обязательные для работы с Laravel пакеты не стояли и ставиться отказывались. Обновился до версии 14.04 LTS, на которой по дефолту PHP 5.5.9. Но этого оказалось мало. Раз уж мне пришлось готовить новую площадку под Laravel, напишу, что пришлось сделать, чтобы Laravel запустился.

Весь текст статьи

Организация базы данных

Mar 16, 01:52 pm Категория:   Комментарии

В публикации про роутер я не писал, что он по сути является частью абстракции контроллер и что вызываемые из него контроллеры не являеются тем, чем кажутся. А сейчас я напишу о базе данных и тоже не предупрежу, что она не является моделью. И не напишу, что строка кода use Illuminate\Database\Eloquent\Model; – это не совсем та модель, что думает начинающий кодер. И что в MVC модель не класс или объект, а слой абстракции, содержащий в себе бизнес-логику, проверку данных, хранение и поиск данных я тоже умолчу. Я много про что не напишу, т.к. сейчас я хочу просто перенести данные из Textpattern и не хочу заморачиваться на понимаение места миграций и классов в общей картине мира.

Весь текст статьи

R - роутер

Mar 15, 03:35 am Категория:   Комментарии

От теории к практике, как говорится. Я попробовал роутеры Lumen и Laravel. В в обоих фреймворках роутинг имеет общие принципы, но есть и отличия. Почитать об этом можно на соответствующих страницах руководств для Lumen и Laravel Замечу, что в Lumen используется Fast request router for PHP от Никиты Попова (@nikic). Но до Люмена доберусь только при создании API сам не знаю чего. А пока буду издеваться в основном над Ларавелем.

Весь текст статьи

MVC Model-View-Controller

Mar 13, 03:51 am Категория:   Комментарии

Ладно, оттоптался по другим, займись своим. Благо есть чем. После изучения страницы этого сайта я обнаружил много интересных ссылок. Помимо обычных ссылок нашлись агрегатные и технические. Что с ними делать я просто не представляю. Взять, к примеру, категории. Зачем они нужны? Если это каталог или магазин, то категории служат для выстраивания иерархии объектов. И чем сложнее каталог, тем больше уровней иерархии нужно вводить. Для сайтов с большим объёмом различного контента категории – это фильтр, но структура плоская. Категории же на обычном сайте – это понты и проблемы для пользователя. Зато поисковые боты должны быть в восторге от каждой новой системы ссылок на сайте. Как-то так получается. Или не получается?

Весь текст статьи

Пара как бы СМИ и обменник на Laravel

Mar 12, 08:16 pm Категория:   Комментарии

Говорят, что весь веб построен по образу и подобию порноресурсов. с точки зрения технического специалиста, это надёжность, способность работать под высокими нагрузками, раздача большого объёма трафика и т.п. А маркетологи отметят невозможность выйти из объятий порносайтов по ссылке. Можно хоть укликаться, но в браузере будет только порно. Разве что откроется десяток-другой новых окон с тем же самым контентом. Похоже представители второй древнейшей профессии начинают перенимать диджиталопыт первой. Попал я на сайт СМИ на Laravel, ткнул ссылку, а меня инфообменник на Laravel переадресовал на другой сайт СМИ на Lararavel. Ой, всё!

Весь текст статьи

Эксперимент продолжается. Роутер.

Mar 12, 02:11 am Категория:   Комментарии

После эксперимента с Lumen появилось три варианта развития ситуации: продолжать пилить экспериментальный сайт, запустить для сравнения тот же сайт на Laravel * и, наконец, разработать методику перевода сайтов с Textpattern на… Или же перевод сайтов на Laravel с… Или, к примеру, зарубиться по Bootstrap с Foundation и размахнуться на SASS через Elixir и Gulp и вааще. Всё такое вкусное, даже и не знаю, что выбрать. Это в теории. А если по уму, то этот сайт и нужно переводить. Сначала “как есть”, а потом “как получится”.

Весь текст статьи

Пристрелка, Lumen

Mar 11, 11:37 am Категория:   Комментарии

От длинных мыслей кружится голова. Поэтому я решил быстренько слепить тестовый сайтик на Lumen и сравнить его работу с построенным на том же контенте сайте под управлением Textpattern. И для максимальной достоверности, сайт должен быть на том же хостинге, том же домене и тесты должны проводиться практически одновременно. Единственным возможным препятствием было нежелание работать на одной версии PHP: TxP “умирает” от PHP старше 5.3, а Lumen не стартует на версиях моложе 5.5.9. По этой причине был выбран сайт у хостера, способного на лету менять версии PHP. Оказалось, что 5.3 – это минимальная версия “пыха” и это ещё один довод в пользу сползания с Текстпаттерна.

Весь текст статьи

« Раньше
Позднее »