Поиск по блогу
12.02.2021
Продолжаем работать с корзиной, которая позволяет восстановить посты блога, удаленные по ошибке. Нам надо создать контроллер, который позволит работать с удаленными постами, добавить несколько маршрутов и создать шаблон для просмотра списка удаленных постов. Кроме того, надо защитить созданные маршруты…
04.11.2020
Фреймворк Laravel имеет в своём арсенале много полезных функций, и одна из них — привязка модели к маршруту (Route Model Binding). Привязка модели к маршруту — это механизм внедрения экземпляра модели по ключу маршрута. Звучит сложно, но на самом деле все просто. Мы уже использовали привязку в панели управления много раз.
11.10.2020
Давайте теперь займемся оформлением заказа в магазине. Нам потребуются две таблицы в базе данных — таблица orders (для хранения заказов) и таблица order_items (для хранения заказанных товаров). Создаем две модели и две миграции с помощью artisan-команды. После этого запускаем миграцию, чтобы создать таблицы базы данных.
04.10.2020
Для каждого товара в корзине есть две кнопки — «Плюс» и «Минус», которые увеличивают или уменьшают количество. Давайте добавим два маршрута, создадим две формы в шаблоне и реализуем два метода в контроллере — plus() и minus(). В результате получился большой и запутанный контроллер, а модель не используется вовсе — надо это исправить.
03.10.2020
Добавим еще один контроллер BasketController, который будет отвечать за корзину покупателя. Корзины будем хранить в таблице baskets базы данных. И нам еще потребуется таблица для связи многие-ко-многим — для товаров и корзин. В одной корзине может быть несколько товаров, один товар может быть в нескольких корзинах.
17.08.2019
Осталось только отправить письмо покупателю о заказе. Для отправки почты Yii2 предлагает расширение swiftmailer, которое нужно просто настроить. Настраивается оно в файле config/web.php. Обратите внимание на настройку useFileTransport: когда она имеет значение true — письмо не отправляется реально, что нам и нужно.
07.08.2019
Хорошо, форма для оформления заказа готова, правила для валидации полей заказа заданы. Осталось только сохранить в таблицу БД order введенные пользователем данные. Поскольку у нас поля created и updated должны сохранять текущую дату и время, добавим метод behaviors() для класса Order.
28.07.2019
Итак, корзина готова, можно приступать к оформлению заказа. Для хранения заказов создадим две таблицы в базе данных. Одну — для хранения всех заказов в магазине, другую — для хранения состава каждого заказа. Для каждой таблицы создадим модель, добавим класс контроллера с единственным действием и представление для действия.
20.07.2019
Наша корзина сейчас довольно примитивная — не хватает возможности удалить товар и обновить содержимое. Давайте это исправим и начнем с обновления view-шаблонов страницы корзины и содержимого модального окна. Добавим ссылки для удаления товаров из корзины и форму — чтобы можно было изменить количество.
14.07.2019
Теперь надо изменить форму добавления в корзину на странице товара. Но вот что плохо — после добавления товара в корзину происходит редирект на страницу корзины. Это не очень удобно, поэтому будем отправлять POST-запрос с использованием AJAX. И после добавления в корзину будем показывать модальное окно с содержимым корзины.