#laravel Сергей 07-09-25 Домашние задания

Домашнее задание 27.11

  1. Scope Создать для пользователей – возможность выбирать активных с ролью admin или manager.
  2. Collection Дана коллекция пользователей User::get(); с полями role, is_active, email, login
    1. Превратить коллекцию в обычный массив
    2. Показать кол-во элементов коллекции
    3. Если коллекция не пустая, показать первого пользователя
    4. Удалить последний элемент
    5. Вывести yes, если все пользователи в коллекции незаблокированы
    6. Получить коллекцию только админов
    7. Отсортировать по login
    8. Применить любые 3 метода из документации

Домашнее задание 24.11

  1. Создать Job php artisan make:job которая удаляет все soft deleted суды. Вызывать асинхронно при создании нового суда. В .env настроить асинхронность. Создать миграцию jobs php artisan queue:table Выполнить задачи из очереди php artisan queue:work
  2. Необходимо заблокировать всех пользователей через job в очереди. Каждая job блокирует только одного пользователя. Реализовать

Домашнее задание 20.11

  1. Создать событие: пользователь зашел на страницу со списком пользователей. Тогда в логах должен появиться текст “Пользователь ФИО (id = …) зашел на страницу в 12:12:10 20.11.25”

Домашнее задание 17.11

  1. К модели User добавить Observer. На событие created добавить пользователю заявку Application. Обернуть это в транзакцию. При изменении пользователя удалять его заявку. Транзакцию реализовать 2 способами. Потестировать.

Домашнее задание 6.11

  1. Создать в таблице users поле role. Создать три middleware для ролей.
  2. Написать сидер для пользователей. Три пользователя с логинами admin, manager, laywer. Остальные 100 рандом. Пароль у всех одинаковый (функция bcrypt())
  3. Реализовать вход в личный кабинет: верстка в tg, изменить LoginController – функция redirectTo() и поле для авторизации изменить c email на login.
  4. Начать делать страницу для отображения списка пользователей у админа. Для этого layout с хедером, футером, сайдбаром. Для админа отдельная папка в views и Controllers
  5. Начать делать страницу профиля для админа. Смена пароля и изменение некоторых полей, показ информации о роли, id, дате регистрации.

Домашнее задание 3.11

  1. Установить laravel ui

Домашнее задание 30.10

  1. Прошлое дз
  2. Сессии
  3. Пользователь заходит на страницу и видит форму для ввода своего имени. Если он ввел свое имя и отправил форму, то при следующих заходах на страницу он видит не форму, а “Привет, [его имя]” и кнопку Забыть меня. При клике на кнопку он видит страницу с формой для ввода своего имени.
  4. Есть случайное число от 1 до 100. У пользователя три попытки его отгадать. Пользователь вводит число в форме и отправляет форму. Если угадал, то форма исчезает и текст “Поздравляем.” Если нет, сообщение меньше или больше загаданное число. При этом показывается кол-во оставшихся попыток.
  5. Есть User, Car, Company. У пользователя несколько машин, одна машина принадлежит только одному пользователю. Пользователь является владельцем только одной компании. Получить все машины и в blade вывести список этих машин, имя его владельца каждой, название компании владельца. На этом примере изучить проблему N+1 и решить ее.

Домашнее задание 26.10

  1. Применить каптчу к любой форме
  2. Создать связь 1:n у Car и User (на уровне бд в миграциях и на уровне моделей). Показать у данного пользователя все авто и у данного авто пользователя

Домашнее задание 23.10

  1. У статьи есть дата публикации. Если дата сегодня, то показывать “сегодня”, вчера – “вчера”, если в этом году – то день и месяц, если раньше, то день, месяц и год
  2. Сохранение данных с формы обратной связи в бд. Валидация в request, сообщение об успехе, сообщение об ошибке с показом введенных данных в форме.

Домашнее задание 09.10

  1. Установить пакет для slug Применить к лендингу – миграция, сидер для статьи. У статьи должен быть статус.
  2. Сделать показ списка статей. Если статей нет, то текст Статьи не найдены
  3. Сделать пункт меню выделенным отдельным стилем

Домашнее задание 05.10

  1. Почитать про casts. Применить к авто
  2. Добавить в модель Car свой атрибут full_description, который выводит все данные из бд через запятую.
  3. Натянуть верстку блога c layout и include.
  4. Почитать про faker
  5. Создать миграцию и сидер для формы обратной связи (php artisan db:seed, php artisan make:seeder SmthSeeder)

Домашнее задание 02.10

  1. Добавить soft delete для авто. Миграция, trait в Car. В списке авто показывать все авто, включая удаленные. Сделать возможность удалять полностью и мягко, восстанавливать.
  2. Добавить в модель car trait и метод для prunable – удаление старше недели. Проверить командой php artisan model:prune
  3. Добавить свой файл для англ. локализации my.php с ключом greeting и текстом приветствия. Использовать на странице списка авто.
  4. Создать свою консольную команду. При вызове показывает текущую дату. Причем будни зеленого цвета, иначе красного.
  5. Создать консольную команду sum. Пользователь вводит в команде аргумент – число k. Далее в самой команде запрашивается k любых чисел и показывается их сумма. Причем процесс суммирования показан с progress bar. Если число k не натуральное, сообщение об ошибке.

Домашнее задание 28.09

  1. Доделать CRUD cars. Для delete сделать get-ссылкой. Способ через delete-запрос изучить самостоятельно (но не делать).
  2. Добавить на store валидацию в своем request (команда php artisan make:request Cars/StoreRequest). Добавить свое сообщение об ошибке на одно из правил
  3. Прошлое дз доделать

Домашнее задание 25.09

  1. Сделать роут для показа одного авто. Кастомизировать 404 страницу (php artisan vendor:publish – выбрать errors). В списке авто сделать ссылку на каждый авто. На странице авто сделать ссылку на список.
  2. Создать форму для добавления авто – только марка и год. Не забыть про fillable в модели. Сделать простую валидацию – string, min: 2, year – integer, min 1990. В случае ошибки редирект на форму с текстом ошибки. В случае успеха редирект на страницу авто с текстом об успехе.
  3. Задачи 12, 14  carbon
  4. Model::preventAccessingMissingAttributes(); Model::preventSilentlyDiscardingAttributes(); – AppServiceProvider в boot(). – загуглить эти методы

Домашнее задание 22.09

  1. Прочитать про миграции Основные команды: php artisan migrate и php artisan make:migration
  2. Создать миграцию для сущности Car. Характеристики: модель, марка, год (integer), цвет, продана или нет (boolean), описание. Заполнить таблицу 3 авто.
  3. Создать модель Car с помощью команды php artisan make:model. Создать ресурсный контроллер только с методом index. И blade. Показать а) все авто б) все авто, упорядоченные по цвету в) все авто, у которых год меньше 2000 г) один авто, у которого id = 1 д) все авто красного цвета, год от 2000 до 2005 включительно audi.

Домашнее задание 18.09

  1. Хорошие практики Laravel – прочитать по диагонали
  2. Создание ресурсного контроллера php artisan make:controller PhotoController –resource Таблица методов
  3. Создание invoke контроллера php artisan make:controller ControllerName –invokable
  4. Создать роут и invoke контроллер – показ текста в браузере ‘Это invoke контроллер’
  5. Создать роут с параметром id – может быть только целым (сделать регулярку в самом роуте и потом заменить на требование в AppServiceProvider). Показ в браузере текста ‘Это число id’
  6. Прошлое дз с carbon + новая задача 12 (доделать с урока)
  7. Создать несколько роутов и объединить с prefix, name и controller. Потестировать.
  8. Создать ресурсный контроллер и роуты к нему. Протестировать методы index и show. php artisan make:controller PhotoController –resource

Домашнее задание 14.09

  1. Почитать про PSR по диагонали
  2. Carbon почитать разделы getters, settes, fluent setters, string formatting, difference, contants
  3. Посмотреть форматы php
  4. Создать форму – пользователь вводит два числа, показать под формой сумму (использовать ->with(‘message’, $sum). Не забыть про csrf – погуглить-почитать для общего развития подробнее.
  5. Carbon Задачи 2-6, 8, 10 Любые 2 задачи сделать через форму – ввод исходных данных и показ ответа под формой

Домашнее задание 11.09

  1. Создать роут /tasks с именем tasks. Создать роуты home/1109/task1, …, home/1109/task3 Для каждого роута создать blade-файл. На странице /tasks должны быть ссылки на task1-3. На страницах task1-3 ссылка Вернуться на главную.
  2. Task1. Изучить хелперы для работы с массивом Arr: прочитать все (поверхностно), поэкспериментировать с методами where, pluck, has, dot, join. В результате в контроллере задаются начальные данные для этих функций и вычисляются итоговые данные, а в blade показываются исходные данные, название метода и результат.
  3. Task2. Изучить хелперы для работы со строками Str: прочитать все (поверхностно), поэкспериментировать с методами limit, slug, finish, title, take, replace. В результате в контроллере задаются начальные данные для этих функций и вычисляются итоговые данные, а в blade показываются исходные данные, название метода и результат.
  4. Task3. На странице отображаются 10 случайных чисел от 1 до 10 случайного цвета.
  5. Прислать ссылку на github с дз (добавить пользователя gittadm в доступы).

Домашнее задание 07.09

  1. Зарегистрироваться на github
  2. Установить OpenServer, php 8.3, laravel 10 + LOG_CHANNEL=daily. Проверить работоспособность сайта – зайти на главную страницу.
  3. Написать readme проекта – изучить markdown и сделать как на скрине в тг
  4. Установить ide-helper и выполнить три команды: php artisan ide-helper:generate, php artisan ide-helper:models, php artisan ide-helper:meta
  5. Установить debugbar
  6. Каждую задачу в отдельный роут и метод контроллера. Применить команды php artisan make:controller, php artisan route:list. Роут создать в routes/web.php, контроллер в Http/Controllers
    1. Дан массив чисел. Определить, отсортирован ли он (по возрастанию или убыванию).
    2. Дана строка из цифр. Добавить пробелы через каждые три цифры, начиная справа. Например, ‘23456789’ -> ’23 456 789′
    3. Дана строка и число. Дополнить строку слева и справа пробелами так, чтобы длина строки стала равна данному числу, а исходный текст строки был в центре итоговой строки. Например, ‘   abc’ и 7 -> слева уже есть 2 пробела, значит, добавляем справа 2 пробела и получаем ‘  abc  ‘.
    4. Сгенерировать случайный номер телефона России. Формат: +7(код)номер, код – задать несколько вариантов (из 3 цифр) в коде и выбирать случайно, номер – 7 цифр.
    5. Дан массив чисел. Найти наибольшее кол-во подряд идущих нулей в нем. Например, [0, 1, 0, 0, 0, 2, 3, 0, 0] -> 3
    6. Сгенерировать три различных случайных числа от 1 до 10.