Создать страницы для сервиса аренды автомобилей из предыдущего задания.
- Header страницы должен содержать ссылки на список машин (Cars list) и страницу добавления машины (Add)
- Страница со списком машин.
- Страница должна быть доступна по адресу /cars
- Список должен содержать следующие данные:
- Model
- Color
- Price
- Название модели машины должно быть кликабельно и вести на страницу соответствующей машины.
- Placeholder с текстом “No cars” в случае пустого списка машин.
- Страница отдельной машины
- Страница должна быть доступна по адресу /cars/{id}
- Страница должна содержать данные:
- Model
- Year
- Registration number
- Color
- Price
- Заголовок страницы должен содержать название модели
- Страница должна содержать кнопки-ссылки для перехода на формы редактирования и удаления машины Edit и Delete с классами “edit-button”, “delete-button”.
- После нажатия ссылки “Delete” пользователь должен попасть на страницу со списком машин.
- Страница добавления машины
- Страница должна быть доступна по адресу /cars/create
- Все поля формы должны быть с валидацией (только на бекенде, для тестов).
- Все поля обязательны для заполнения
- Значения не больше 255 символов
- Registration number - 6 символов, буквы и цифры
- Year - год от 1000 до текущего
- Color - только буквы
- Price - только цифры
- Ошибки валидации должны показываться под полями формы.
- В случае срабатывания валидации, все поля формы должны оставаться заполненными предыдущими значениями.
- После сохранения машины должен быть показан список машин с новой записью.
- Страница редактирования машины
- Требования по валидации те же, что и к странице добавления
- Страница должна быть доступна по адресу /cars/{id}/edit
- После сохранения машины должна быть показана страница машины с обновленными значениями.
- Для выполнения взять код из этого репозитория. Репозиторий не должен быть форкнут.
- Страницы должны быть созданы с помощью темплейтов Blade.
- Темплейты должны наследовать друг друга.
- Должна присутствовать защита от XSS и CSRF атак.
- Для хранения данных должен быть использован репозиторий, подключенный к проекту.
- Репозиторий должен инжектиться с помощью DependencyInjection.
- Все тесты должны проходить. Тесты менять нельзя, но очень даже можно смотреть. Если какой-то тест написан с ошибкой (sic!) - обращайтесь в комментариях.
- Выложить выполненное ДЗ в отдельный репозиторий на github/bitbucket.
- Должны быть использованы возможности PHP 7.1
- Весь PHP код должен быть задокументирован с помощью PHPDoc согласно стандарту PSR-5.
- Код должен быть отформатирован согласно PSR-2 и PSR-12.
- Приветствуется (но не обязательно) использование Bootstrap или другого front-end фреймворка для добавления стилей.
- Создайте APP_URL в .env
- Запустите тесты
php artisan dusk
-
Зайдите на виртуальную машину через ssh из папки, где установлен Homestead
vagrant ssh
-
Запустите следующие команды перед запуском тестов
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' sudo apt-get update && sudo apt-get install -y google-chrome-stable sudo apt-get install -y xvfb
-
В отдельном окне терминала:
Xvfb :0 -screen 0 1280x960x24 &
-
Теперь можно запустить тесты.
php artisan dusk