php artisan serve port

Использование команд консоли Artisan в Laravel

После того как мы устанавливаем Laravel на свой компьютер, нам становится доступен такой инструмент как Artisan.

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

Файл с названием «artisan» физически находится в директории сайта Laravel, в терминале мы обращаемся к нему через php с указанием имени этого файла. Для примера, давайте рассмотрим список всех доступных команд, вызвав таким образом справку по интерфейсу.

Просмотр списка доступных команд

В результате выполнения команды в окне консоли мы увидим все доступные команды для этого инструмента.
php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

Как вы можете заметить, команд целое множество. Однако на практике большинство из них может быть и не разу не пригодятся. Далее я решил опубликовать список команд, который могут оказаться полезными в ряде случаев.

Запуск локального сервера

Для генерации нового ключа (обычно создаётся автоматически при установке)

Создание нового файла контроллера

Будет создана папка app/Http/Cotrollers и файл с классом контроллера ContactController.php

Создание файла валидации данных

Будет создана папка app/Http/Requests/, в ней будет создан файл ContactRequest.php

Создание файла — класс модели

где Contact — имя модели, параметр -m добавляет файл миграции

Выполнение миграции базы данных

Файлы миграции базы данных располагаются в отдельной директории /database/migrations/. Эта команда запускает миграцию данных из этих файлов в базу данных.

Отмена миграции на один шаг назад

Если вы выполняли миграцию в несколько шагов, то каждый предыдущий шаг может быть отменён с помощью этой команды.

Отмена миграции на 3 шага назад

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

Отмена всех миграций

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

Очистка внутреннего кэша Laravel

Внутренний кэш предназначен для ускорения работы Laravel, создаётся он автоматически. Иногда при разработке, чтобы изменения вступили в силу, его может потребоваться очищать.

Но и в конце хотелось бы добавить пару команд npm, которые не относятся к «artisan», но часто используются при разработке. Npm – это менеджер пакетов, который входит в состав Node.js. Node.js как правило устанавливается попутно с Laravel, и выполняет ряд задач по проекту. В основном это работа с преобразованием файлов CSS и JS.

Преобразование всех файлов JS/CSS

Согласно правилам, в файле «миксе» webpack.mix.js который находится в корне сайта, будет выполнено преобразование файлов. Таким образом, внося какие-либо изменения в CSS либо JS файлы, необходимо выполнять преобразование, перед тем как изменения можно увидеть в браузере.

Автоматическое преобразование файлов JS/CSS

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

Источник

Laravel. Установка, настройка, создание и деплой приложения

Итак, у вас есть желание попробовать или узнать о фреймворке Laravel.

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

php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

Статья очень большая. Рекомендую читать ее полностью во время выходных.

Установка

Установка окружения будет происходить в среде *nix (на сайте так же есть мануал по установке на Windows, плюс к этому вам нужен будет сервер, например WAMP и Git).

Предположим, что у Вас совсем чистенькая ОС. Тогда откройте терминал и введите эти строчки скопируйте и вставьте

Создадим проект laravel в папке habr

Перейдем в созданный проект и убедимся, что все работает, запустив команду php artisan serve

Локальный сервер будет доступен по адресу http://localhost:8000.

Перейдя по адресу http://localhost:8000 вы должны увидеть красивую заставку как в начале поста.

Настройка

Для соединения с базой данных (далее БД) у Laravel есть конфигурационный файл database.php, находится он в папке app/config/.
Сначала создадим БД и пользователя в MySQL

Отлично! У нас есть все данные для доступа к MySQL : пользователь habr с паролем my_password и БД habr на хосте localhost. Перейдем в файл конфигурации БД и изменим наши настройки.

php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

В Laravel есть отличные инструменты — Миграции и Построитель Схем.

Во первых создадим таблицу миграций:

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

Laravel 4 Generators

Мега полезный инструмент — generators от Jeffrey Way. GitHub.

Он добавляет в список artisan много полезных команд, таких как:

Установка пакета

После этого нужно обновить зависимости проекта. Введите в терминале

Последним штрихом будет занесение в кофигурационный файл app/config/app.php в список провайдеров приложения строки

Создание приложения

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

Набросаем схему таблиц в БД. У меня получилось что-то такое:
php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

За это спасибо generator‘у. Так как все, что я сделал — это прописал 10 строк, кстати, вот и они:

Я надеюсь этот пример использования генератора достаточно наглядно показал, каким образом его использовать и насколько он полезен.

Чего нам еще не хватает — так это некоторых связок между таблицами.

Важно знать! При добавлении foreign key к колонке в таблице нужно убедится, что колонка является unsigned.

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

Взгянув на схему БД видим ситуацию по лучше
php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

На данный момент все ссылки на ресурсы являются открытыми, и по ним можно переходить всем кому угодно.
Допустим, добавим роль admin. По ссылке http://localhost:8000/roles видим следующую картину:
php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

Немного о шаблонах и шаблонизаторе Blade в Laravel.
Для файлов шаблонов используется раширение .blade.php. Заглянув в файл app/views/layouts/scaffold.blade.php мы видим

Первым делом подумаем о защите всех ресурсов. Для этого нам нужно ввести авторизацию.

Создадим новый контроллер LoginContoller в папке app/controllers

И добавим для него несколько шаблонов

Hash — это класс шифрования, который использует метод bcrypt, чтобы пароли в БД хранились в зашифрованом виде (Laravel Security).

Метод нашего Контроллера login() авторизирует пользователя по email или username и перенаправляет на страницу, с которой он попал под фильтр авторизации. В случае не совпадения данных, перенаправляет обратно с входящими данными, сообщением о ошибке, но без пароля.

Таким образом у нас есть Контроллер, который отвечает за авторизацию.

Следующим шагом для скрытия всех ресурсов от доступа будет изменение файла app/routes.php, который содержит маршруты приложения.

Ко всем маршрутам, заключенным в Route::group(array(‘before’ => ‘admin.auth’)) будет применятся фильтр admin.auth, который проверяет, является ли пользователь гостем, или нет, и в случае, если является — отправит его на страницу входа. Про фильтры можно почитать тут, а про группировку маршрутов тут. Другой фильтр Route::group(array(‘before’ => ‘un_auth’)) будет проверять, является ли пользователь вошедшим на сайт, и если проверка выполнятся — то он его разлогинивает.

Для нормальной работы изменим файлы логина и регистрации:

Что же, теперь можна заняться ресурсами. Начнем с городов. Первым делом изменим в Модели City правила валидации:

Для удобства перехода между ссылками добавим меню в app/views/layouts/scaffold.blade.php, а так же добавим jQuery и jQuery-UI для будующих нужд

Далее перейдем к редактированию правил валидации в Модели Offer :

Как работают селекты можно глянуть тут Forms & Html (Dropdown Lists). Таким образом мы имеем возможность выбирать из существующих городов и компаний в БД.

Чего нам еще не хватает — так это добавление тегов к скидкам. Тут нам поможет jquery-ui с autocomplete для добавления нескольких значений. Для этого расширим файл с скриптами app/views/offers/create.blade.php:

Последнее, что нам нужно сделать — это изменить логику создания скидок.

Во первых, расширим правило expires, что бы скидка заканчивалась не раньше завтрашнего дня, и не позже, чем через 1 месяц. Далее выделим все id тегов в отдельный массив, проверив их наличие в БД. После идет небольшая проверка, введены ли теги. А под самый конец очень интересный прием: в Eloquent для связки таблиц можна использовать разные отношения (Eloquent Relationships), к примеру, у Модели Offers может быть много тегов, соответсвенно пропишем это в Модели

Осталось изменить файл app/views/offers/index.blade.php

И мы видим отличную картину, которая полностью отображает структуру скидки:
php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

Теперь осталось изменить app/views/offers/edit.blade.php, app/views/offers/show.blade.php и метод update в app/controllers/OfferController.php.

Код для app/views/edit.blade.php

Изменим метод update в OfferController :

Далее изменим файл app/views/offers/show.blade.php:

Теперь и после изменения скидки у нас будет красиво выводится ее структура с изображением и всеми реляционными данными.

Главная страница сайта

Настало время наконец то для создания главной страницы сайта.

Для начала создадим новый layout :

А так же файл стилей:

Потом переопределим маршрут главной страницы:

Добавим в HomeController недостающий метод index :

Создадим папку app/views/homeи добавим туда файл index.blade.php, а так же создадим файл _preview.blade.php в папке app/views/offers

Далее нужно добавить поиск скидок по тегам, городам и компаниям. Для этого добавим 3 маршрута в файл app/routes.php сразу же за home :

Теперь добавим недостающие методы в HomeController :

Что бы все это дело заиграло, изменим файл app/views/offers/_preview.blade.php, добавив ссылок:

Кликаем, переходим, скидки сортируются и выводятся в соответствии с критериями.

Теперь сделаем представление для просмотра отдельной скидки:

Для того, чтобы можно было просматривать скидку полностью, добавим маршрут и метод, а так же в конце я добавил форму для комментариев. Для ее работоспособности также нужно добавить маршрут и метод в нужном контроллере:

Далее идет работа с промежуточной таблицей offers для скидки и пользователя. Эту связь нужно указать в Модели Offer

Как видите, мы тут явно задаем таблицу comments как промежуточную, и указываем, что так же в этой таблице содержатся дополнительные колонки body и mark + в этой таблице используются штампы времени (создания и обновления).

Используя проверку, есть ли уже комментарий к конкретной скидке от текущего пользователя (метод contains()), перенаправляем обратно. Если же нет — то прикрепляем новый комментарий от пользователя к скидке с его оценкой и текстом.

Для вывода комментариев на странице скидки изменим немного файл app/views/offers/_show.blade.php

Теперь под скидками пользователи могут оставлять свои комментарии, каждый по одному, и если пользователь уже оставил комментарий — то форма не будет для него выводиться.

Следующим шагом будет распределить права доступа к сайту. Для начала укажем связь между пользователями и ролями:

Далее добавим в админке управление ролями пользователей:

Помним, что в Модель User нужно добавить связь с ролями:

Создадим контроллер UserController :

Создадим папку app/views/users и добавим туда 3 файла:

А так же изменим немного метд index контроллера RolesController

Теперь автодополнение работает.

Далее, для того, что бы у нас с вами не было разбежностей, откатим все миграции и воспользуемся отличным инструментом, который нам предоставляет Laravel — это DatabaseSeeder. С помощью него мы можем наполнить нашу БД какими-то конфигурационными, или стартовыми / тестовыми данными. Для этого сначала создадим класс UsersTableSeeder в папке app/database/seeds:

Логика такова: очищаем таблицу, создаем массив данных и вставляем в БД.

Проделаем то же самое с RolesTableSeeder :

Далее создадим еще один класс Seeder :

Таким образом мы добавили роль admin нашему первому пользователю.

Чтобы очистить БД и заполнить ее нашими начальными данными сначала изменим файл app/database/seeds/DatabaseSeeder.php таким образом:

И для принятия всех изменений запустим через консоль команду (находясь в папке /workspace/php/habr/):

Далее выстроим логику на права. Внесем изменения в Модель User :

Далее изменим файл маршрутов, что бы он соответствовал правам пользования сайтом:

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

Изменим метод login() контроллера LoginController :

Теперь при входе на сайт обычные пользователи будут попадать на главную страницу, а администраторы, модераторы и менеджеры в админпанель.

Изменим немного навигационное меню для администрации:

Отлично — теперь каждой роли будут видны те ресурсы, к которым у них есть доступ.

Emails

Важным аспектом для web приложения является отправка почты.

Laravel использует SwiftMailer для создания писем (Laravel Mail).

Параметр pretend отвечает за то, нужно ли отправлять письма. Если его выставить в true, то оправка писем происходить не будет, но в логах сайта (app/storage/logs) будут сохраняться отчеты об отправке.

Первым делом я хочу, чтобы при регистрации пользователю отправлялось письмо с приветствием, для этого создам шаблон в папке app/views/emails:

Далее изменим метод store() нашего LoginController :

Функция trans() — вспомогательная функция, которая выводит локализированную строку из конфигурации. Можете заглянуть в папку app/lang/en/reminders.php и увидить какие ошибки могут выводиться. Для смены локализации на, допустим, русский язык вам понадобится изменить в файле app/config/app.php значение locale с en на ru и добавить папку app/lang/ru, в которой воссоздать файлы как в папке app/lang/en.

Далее добавим 4 маршрута:

Для перехода на восстановление так же добавим ссылку на странице логина:

А так же недостающие методы в LoginController :

Теперь любой пользователь может восстановить свой пароль.

Добавим еще ссылку для входа и регистрации на сайт на главной странице:

Для того, что бы ограничить вывод на страницах только тех скидок, которые еще не закончились нам понадобится добавить еще один метод в Модель Offer :

Пагинация

Таким образом на одной странице будут выводиться только 15 результатов, и внизу будут переходы по страницам. Количество результатов легко изменяемо — достаточно передать нужное число в метод, например paginate(1) даст 1 результат на страницу.

Ничего вроде сложного в этом нет.

Для удобства так же сделаем и в админ панели.

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

Начнем с добавления комментариев в каркасе страницы:

А так же создадим сам шаблон comment :

Не забываем добавлять связь между Моделью Comment User и Offer :

А так же вспомогательная функция для сокращения и избавлением от html-тегов комментария.

Осталось добавить закладки для пользователя:

Деплой

Процес регистрации там довольно прост.

php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

Далее создаем новое приложение.

php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

Окружение запущено и работает.

php artisan serve port. Смотреть фото php artisan serve port. Смотреть картинку php artisan serve port. Картинка про php artisan serve port. Фото php artisan serve port

fortrabbit замораживает не активные приложения. То, как разморозить приложение можно почитать тут.
Теперь для того, чтобы залить наше приложение на fortrabbit идем в терминал:

После всего, осталось зайти через ssh и запустить миграции. Итак:

Потом введите свой пароль и вы на сервере.
Перейдите в папку htdocs и выполните:

Если настройка БД была правильной — никаких проблем возникнуть не должно.

Для работы с Composer на хостинге можно даже не использовать ssh — достаточно в коммите добавить такой триггер:

Кстати, в своем репозитории на GitHub я добавил еще seeds и картинки для скидок.

Поиграться можно тут: Habra Offers.

Заключение

Надеюсь вам было интересно это читать, и полезно это делать. Laravel — отличный фреймворк для разработки веб приложений разной сложности.

Основные, и даже больше, аспекты я постарался объяснить. И для интереса дам домашнее задание:

Пожалуй неплохие таски, как считаете?

Об авторе
Сбор статистики

Все грамматические ошибки пишите, пожалуйста в личку.

Haters gonna die (Поспорил, что напишу это).

Источник

Laravel Quickstart

Installation

Via Laravel Installer

First, download the Laravel installer using Composer.

Make sure to place the

/.composer/vendor/bin directory in your PATH (or C:\%HOMEPATH%\AppData\Roaming\Composer\vendor\bin if working with Windows) so the laravel executable is found when you run the laravel command in your terminal.

Once installed, the simple laravel new command will create a fresh Laravel installation in the directory you specify. For instance, laravel new blog would create a directory named blog containing a fresh Laravel installation with all dependencies installed. This method of installation is much faster than installing via Composer.

Via Composer

The Laravel framework utilizes Composer for installation and dependency management. If you haven’t already, start by installing Composer.

Now you can install Laravel by issuing the following command from your terminal:

This command will download and install a fresh copy of Laravel in a new your-project-name folder within your current directory.

If you prefer, you can alternatively download a copy of the Laravel repository from GitHub manually. Next run the composer install command in the root of your manually created project directory. This command will download and install the framework’s dependencies.

Permissions

After installing Laravel, you may need to grant the web server write permissions to the app/storage directories. See the Installation documentation for more details on configuration.

Serving Laravel

Typically, you may use a web server such as Apache or Nginx to serve your Laravel applications. If you are on PHP 5.4+ and would like to use PHP’s built-in development server, you may use the serve Artisan command:

Directory Structure

Local Development Environment

In the past, configuring a local PHP development environment on your machine was a headache. Installing the proper version of PHP, required extensions, and other needed components is time consuming and confusing. Instead, consider using Laravel Homestead. Homestead is a simple virtual machine designed for Laravel and Vagrant. Since the Homestead Vagrant box is pre-packaged with all of the software you need to build robust PHP applications, you can create a virtualized, isolated development environment in seconds. Here is a list of some of the goodies included with Homestead:

Don’t worry, even though «virtualized» sounds complicated, it’s painless. VirtualBox and Vagrant, which are Homestead’s two dependencies, both include simple, graphical installers for all popular operating systems. Check out the Homestead documentation to get started.

Routing

To get started, let’s create our first route. In Laravel, the simplest route is a route to a Closure. Pop open the app/routes.php file and add the following route to the bottom of the file:

Now, if you hit the /users route in your web browser, you should see Users! displayed as the response. Great! You’ve just created your first route.

Routes can also be attached to controller classes. For example:

This route informs the framework that requests to the /users route should call the getIndex method on the UserController class. For more information on controller routing, check out the controller documentation.

Creating A View

Next, we’ll create our users.blade.php view:

Now that we have our views, let’s return it from our /users route. Instead of returning Users! from the route, return the view instead:

Wonderful! Now you have setup a simple view that extends a layout. Next, let’s start working on our database layer.

Creating A Migration

To create a table to hold our data, we’ll use the Laravel migration system. Migrations let you expressively define modifications to your database, and easily share them with the rest of your team.

First, let’s configure a database connection. You may configure all of your database connections from the app/config/database.php file. By default, Laravel is configured to use MySQL, and you will need to supply connection credentials within the database configuration file. If you wish, you may change the driver option to sqlite and it will use the SQLite database included in the app/database directory.

Next, to create the migration, we’ll use the Artisan CLI. From the root of your project, run the following from your terminal:

Let’s define a migration that looks like this:

Next, we can run our migrations from our terminal using the migrate command. Simply execute this command from the root of your project:

If you wish to rollback a migration, you may issue the migrate:rollback command. Now that we have a database table, let’s start pulling some data!

Eloquent ORM

Laravel ships with a superb ORM: Eloquent. If you have used the Ruby on Rails framework, you will find Eloquent familiar, as it follows the ActiveRecord ORM style of database interaction.

First, let’s define a model. An Eloquent model can be used to query an associated database table, as well as represent a given row within that table. Don’t worry, it will all make sense soon! Models are typically stored in the app/models directory. Let’s define a User.php model in that directory like so:

Note that we do not have to tell Eloquent which table to use. Eloquent has a variety of conventions, one of which is to use the plural form of the model name as the model’s database table. Convenient!

Using your preferred database administration tool, insert a few rows into your users table, and we’ll use Eloquent to retrieve them and pass them to our view.

Now let’s modify our /users route to look like this:

Let’s walk through this route. First, the all method on the User model will retrieve all of the rows in the users table. Next, we’re passing these records to the view via the with method. The with method accepts a key and a value, and is used to make a piece of data available to a view.

Awesome. Now we’re ready to display the users in our view!

Displaying Data

Now that we have made the users available to our view, we can display them like so:

You may be wondering where to find our echo statements. When using Blade, you may echo data by surrounding it with double curly braces. It’s a cinch. Now, you should be able to hit the /users route and see the names of your users displayed in the response.

This is just the beginning. In this tutorial, you’ve seen the very basics of Laravel, but there are so many more exciting things to learn. Keep reading through the documentation and dig deeper into the powerful features available to you in Eloquent and Blade. Or, maybe you’re more interested in Queues and Unit Testing. Then again, maybe you want to flex your architecture muscles with the IoC Container. The choice is yours!

Deploying Your Application

One of Laravel’s goals is to make PHP application development enjoyable from download to deploy, and Laravel Forge provides a simple way to deploy your Laravel applications onto blazing fast servers. Forge can configure and provision servers on DigitalOcean, Linode, Rackspace, and Amazon EC2. Like Homestead, all of the latest goodies are included: Nginx, PHP 5.6, MySQL, Postgres, Redis, Memcached, and more. Forge «Quick Deploy» can even deploy your code for you each time you push changes out to GitHub or Bitbucket!

On top of that, Forge can help you configure queue workers, SSL, Cron jobs, sub-domains, and more. For more information, visit the Forge website.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *