๐ธ ๋ก์ปฌ ๊ณต์ฐ์ฅ ์๊ฐ ๊ณต์ฐ ๋ฌ๋ ฅ - ๋ ์ง๋ณ ํฐ์ผ ์ ๋ณด & ์ํฐ์คํธ ์๊ฐ
venue-monthly-concert-calendar
๋ฌธ์ ์ค๋ช
๐ ํ๋ก์ ํธ ๊ฐ์
์๊ท๋ชจ ๋ผ์ด๋ธ ๊ณต์ฐ์ฅ, ํด๋ฝ, ์นดํ ๋ฑ์์ ํ์ฉํ ์ ์๋ ์๊ฐ ๊ณต์ฐ ๋ฌ๋ ฅ ํ์ด์ง๋ฅผ ๋ง๋ญ๋๋ค. ๋ฐฉ๋ฌธ์๋ค์ด ํ ๋ฌ ๋์์ ๊ณต์ฐ ์ผ์ ์ ํ๋์ ํ์ธํ๊ณ , ๋ ์ง๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ๊ณต์ฐ์ ์์ธ ์ ๋ณด(์ํฐ์คํธ, ์ฅ๋ฅด, ํฐ์ผ ๊ฐ๊ฒฉ, ์๋งค ๋งํฌ ๋ฑ)๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๊ด๋ฆฌ์๋ ๊ฐ๋จํ ํผ์ผ๋ก ๊ณต์ฐ์ ๋ฑ๋กํ๊ณ , ๋ฌ๋ ฅ์ ์๋์ผ๋ก ํ์๋ฉ๋๋ค. Laravel 13.x + Blade + Tailwind CSS๋ก ๊ตฌํํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ SQLite๋ฅผ ์ฌ์ฉํฉ๋๋ค.
โ ํ์ ๊ธฐ๋ฅ
- ์๊ฐ ๋ฌ๋ ฅ ๋ทฐ: ํ์ฌ ์์ ๋ ์ง๋ฅผ ๊ทธ๋ฆฌ๋ ํํ๋ก ํ์. ๊ณต์ฐ์ด ์๋ ๋ ์ง๋ ์์์ผ๋ก ๊ฐ์กฐ.
- ๊ณต์ฐ ๋ฑ๋ก ํ์ด์ง: ๊ณต์ฐ๋ช , ์ํฐ์คํธ๋ช , ๋ ์ง, ์๊ฐ, ์ฅ๋ฅด, ํฐ์ผ ๊ฐ๊ฒฉ, ์๋งค ๋งํฌ๋ฅผ ์ ๋ ฅํ๋ ํผ.
- ๊ณต์ฐ ์์ธ ๋ชจ๋ฌ: ๋ฌ๋ ฅ์์ ๋ ์ง๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ๋ ์ง์ ๊ณต์ฐ ์ ๋ณด๊ฐ ๋ชจ๋ฌ ์ฐฝ์ผ๋ก ํ์.
- ๊ณต์ฐ ๋ชฉ๋ก ํ์ด์ง: ๋ฑ๋ก๋ ๋ชจ๋ ๊ณต์ฐ์ ๋ฆฌ์คํธ ํํ๋ก ํ์ธ. ์์ /์ญ์ ๊ธฐ๋ฅ ํฌํจ.
- ๋ฐ์ํ UI: ๋ชจ๋ฐ์ผ์์๋ ๋ฌ๋ ฅ๊ณผ ๋ชจ๋ฌ์ด ๊น๋ํ๊ฒ ๋ณด์ด๋๋ก Tailwind CSS๋ก ์คํ์ผ๋ง.
๐ ๋ณด๋์ค ๊ธฐ๋ฅ
- ์ด์ /๋ค์ ๋ฌ ์ด๋ ๋ฒํผ ์ถ๊ฐ
- ์ฅ๋ฅด๋ณ ํํฐ๋ง (์: ๋ก, ์ฌ์ฆ, ์ธ๋ ๋ฑ)
- ๊ณต์ฐ ํฌ์คํฐ ์ด๋ฏธ์ง ์ ๋ก๋ ๊ธฐ๋ฅ
- ๊ณต์ฐ ์์ 3์ผ ์ ์ '๊ณง ์์!' ๋ฐฐ์ง ํ์
- ๊ณต์ฐ ๊ฒ์ ๊ธฐ๋ฅ (์ํฐ์คํธ๋ช ๋๋ ๊ณต์ฐ๋ช ์ผ๋ก ๊ฒ์)
๐ฏ ํ์ต ๋ชฉํ
- Laravel 13.x์ ๋ผ์ฐํ , ์ปจํธ๋กค๋ฌ, Blade ํ ํ๋ฆฟ ๊ธฐ์ด ์ดํด
- SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Eloquent ORM์ ํ์ฉํ CRUD ๊ตฌํ
- Blade ์ปดํฌ๋ํธ์ Tailwind CSS๋ก ๋ฐ์ํ UI ์ ์
- ๋ชจ๋ฌ ์ฐฝ ๊ตฌํ (Alpine.js ๋๋ ๋ฐ๋๋ผ JS ํ์ฉ)
- ๋ ์ง ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๋ฌ๋ ฅ ๋ก์ง ๊ตฌํ (Carbon ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ)
์ ์ฝ ์กฐ๊ฑด
- โข Laravel 13.x ์ฌ์ฉ (์ต์ ๋ฒ์ )
- โข Blade ํ ํ๋ฆฟ ์์ง ์ฌ์ฉ (React/Vue ๋ฑ SPA ํ๋ ์์ํฌ ์ฌ์ฉ ๊ธ์ง)
- โข Tailwind CSS๋ก ์คํ์ผ๋ง
- โข SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ
- โข Alpine.js ๋๋ ๋ฐ๋๋ผ JavaScript๋ก ๋ชจ๋ฌ ์ธํฐ๋์ ๊ตฌํ
- โข Carbon ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ ์ง ์ฒ๋ฆฌ
- โข ๋ฐ์ํ ๋์์ธ ํ์ (๋ชจ๋ฐ์ผ ์ฐ์ )
ํ๋กฌํํธ ๋ ์ํผ
์๋ ํ๋กฌํํธ๋ฅผ ์์๋๋ก AI์๊ฒ ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. ๋ณต์ฌ ๋ฒํผ์ ๋๋ฌ ๋ฐ๋ก ์ฌ์ฉํ์ธ์.
mkdir venue-monthly-concert-calendar && cd venue-monthly-concert-calendar ์ด ํด๋์์ Laravel 13.x ํ๋ก์ ํธ๋ฅผ ์์ํฉ๋๋ค. ๋ค์ ์์ ์ ์ํํด์ฃผ์ธ์: 1. Laravel 13.x ํ๋ก์ ํธ ์์ฑ (composer create-project laravel/laravel . ๋ช ๋ น ์ฌ์ฉ) 2. .env ํ์ผ์์ DB_CONNECTION์ sqlite๋ก ๋ณ๊ฒฝํ๊ณ , database/database.sqlite ํ์ผ ์์ฑ 3. Tailwind CSS ์ค์น ๋ฐ ์ค์ (npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p) 4. tailwind.config.js์์ content ๊ฒฝ๋ก ์ค์ : './resources/**/*.blade.php', './resources/**/*.js' 5. resources/css/app.css์ Tailwind ์ง์๋ฌธ ์ถ๊ฐ (@tailwind base; @tailwind components; @tailwind utilities;) 6. Alpine.js CDN ์ถ๊ฐ (resources/views/layouts/app.blade.php ์์ฑ ํ <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script> ์ถ๊ฐ) 7. npm run dev ์คํํ์ฌ ์์ ๋น๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ์ ์์ ์ผ๋ก ์์ฑ๋์๋์ง ํ์ธํ๊ณ , ๊ธฐ๋ณธ ๋ ์ด์์ ํ์ผ(app.blade.php)์ ๋ง๋ค์ด์ฃผ์ธ์. ๋ ์ด์์์๋ ๋ค๋น๊ฒ์ด์ ๋ฐ(๊ณต์ฐ ๋ฌ๋ ฅ, ๊ณต์ฐ ๋ฑ๋ก, ๊ณต์ฐ ๋ชฉ๋ก ๋งํฌ)์ Tailwind CSS๊ฐ ์ ์ฉ๋์ด์ผ ํฉ๋๋ค.
๊ธฐ๋ ๊ฒฐ๊ณผ: Laravel 13.x ํ๋ก์ ํธ๊ฐ ์์ฑ๋๊ณ , SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ด ์ค๋น๋๋ฉฐ, Tailwind CSS์ Alpine.js๊ฐ ์ค์ ๋ฉ๋๋ค. ๊ธฐ๋ณธ ๋ ์ด์์ ํ์ผ(app.blade.php)์ด ์์ฑ๋์ด ๋ค๋น๊ฒ์ด์ ๋ฐ๊ฐ ํ์๋ฉ๋๋ค.
๊ณต์ฐ(Concert) ๋ชจ๋ธ๊ณผ ๋ง์ด๊ทธ๋ ์ด์ ์ ์์ฑํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ค๊ณํด์ฃผ์ธ์. ๋ค์ ์์ ์ ์ํํด์ฃผ์ธ์: 1. Concert ๋ชจ๋ธ ์์ฑ (php artisan make:model Concert -m ๋ช ๋ น ์ฌ์ฉ) 2. ๋ง์ด๊ทธ๋ ์ด์ ํ์ผ์์ concerts ํ ์ด๋ธ ์คํค๋ง ์ ์: - id (์๋ ์์ฑ) - name (๊ณต์ฐ๋ช , string) - artist (์ํฐ์คํธ๋ช , string) - date (๊ณต์ฐ ๋ ์ง, date) - time (๊ณต์ฐ ์๊ฐ, time) - genre (์ฅ๋ฅด, string, nullable) - ticket_price (ํฐ์ผ ๊ฐ๊ฒฉ, integer, nullable) - booking_link (์๋งค ๋งํฌ, string, nullable) - description (๊ณต์ฐ ์ค๋ช , text, nullable) - timestamps (์๋ ์์ฑ) 3. php artisan migrate ์คํํ์ฌ ํ ์ด๋ธ ์์ฑ 4. Concert ๋ชจ๋ธ์ $fillable ์์ฑ ์ถ๊ฐ (๋๋ ํ ๋น ๊ฐ๋ฅ ํ๋ ์ง์ ) ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๊ณ , Concert ๋ชจ๋ธ์ด ์ค๋น๋์๋์ง ํ์ธํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: Concert ๋ชจ๋ธ๊ณผ concerts ํ ์ด๋ธ์ด ์์ฑ๋ฉ๋๋ค. ํ ์ด๋ธ์๋ ๊ณต์ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ ์ปฌ๋ผ๋ค์ด ํฌํจ๋๋ฉฐ, ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ฉ๋๋ค.
๊ณต์ฐ ๋ฑ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ์ฌ์ฉ์๊ฐ ๊ณต์ฐ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ค์ ์์ ์ ์ํํด์ฃผ์ธ์: 1. ConcertController ์์ฑ (php artisan make:controller ConcertController) 2. routes/web.php์ ๋ผ์ฐํธ ์ถ๊ฐ: - GET /concerts/create -> ConcertController@create (๊ณต์ฐ ๋ฑ๋ก ํผ ํ์) - POST /concerts -> ConcertController@store (๊ณต์ฐ ์ ์ฅ) 3. ConcertController์ create ๋ฉ์๋: resources/views/concerts/create.blade.php ๋ทฐ ๋ฐํ 4. create.blade.php ์์ฑ: - ๊ณต์ฐ๋ช , ์ํฐ์คํธ๋ช , ๋ ์ง, ์๊ฐ, ์ฅ๋ฅด, ํฐ์ผ ๊ฐ๊ฒฉ, ์๋งค ๋งํฌ, ์ค๋ช ์ ๋ ฅ ํ๋ - Tailwind CSS๋ก ๊น๋ํ ํผ ๋์์ธ (์นด๋ ํํ, ์ ๋ ฅ ํ๋ ์คํ์ผ๋ง) - CSRF ํ ํฐ ํฌํจ (@csrf) - ์ ํจ์ฑ ๊ฒ์ฌ ์๋ฌ ๋ฉ์์ง ํ์ (@error ๋๋ ํฐ๋ธ ํ์ฉ) 5. ConcertController์ store ๋ฉ์๋: - ์ ๋ ฅ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ (name, artist, date ํ์) - Concert::create()๋ก ๋ฐ์ดํฐ ์ ์ฅ - ์ ์ฅ ํ ๋ฌ๋ ฅ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ (์ฑ๊ณต ๋ฉ์์ง ํฌํจ) ๊ณต์ฐ ๋ฑ๋ก ํผ์ด ์ ์์ ์ผ๋ก ํ์๋๊ณ , ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋์ง ํ์ธํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: ๊ณต์ฐ ๋ฑ๋ก ํ์ด์ง(/concerts/create)๊ฐ ์์ฑ๋๊ณ , ํผ์ ํตํด ๊ณต์ฐ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค. ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์๋ํ๋ฉฐ, ์ ์ฅ ํ ๋ฌ๋ ฅ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ๋ฉ๋๋ค.
์๊ฐ ๋ฌ๋ ฅ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ํ์ฌ ์์ ๋ ์ง๋ฅผ ๊ทธ๋ฆฌ๋ ํํ๋ก ํ์ํ๊ณ , ๊ณต์ฐ์ด ์๋ ๋ ์ง๋ ์๊ฐ์ ์ผ๋ก ๊ฐ์กฐํด์ฃผ์ธ์.
๋ค์ ์์
์ ์ํํด์ฃผ์ธ์:
1. routes/web.php์ ๋ผ์ฐํธ ์ถ๊ฐ:
- GET / -> ConcertController@calendar (๋ฌ๋ ฅ ํ์ด์ง)
2. ConcertController์ calendar ๋ฉ์๋:
- Carbon ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ์ฌ ์์ ์์์ผ/์ข
๋ฃ์ผ ๊ณ์ฐ
- ํด๋น ์์ ๋ชจ๋ ๊ณต์ฐ์ Concert::whereBetween('date', [์์์ผ, ์ข
๋ฃ์ผ])->get()์ผ๋ก ์กฐํ
- ๋ ์ง๋ณ๋ก ๊ณต์ฐ์ ๊ทธ๋ฃนํํ์ฌ ๋ทฐ์ ์ ๋ฌ
3. resources/views/concerts/calendar.blade.php ์์ฑ:
- ์๋จ์ ํ์ฌ ์ ํ์ (์: "2025๋
1์")
- ์ด์ /๋ค์ ๋ฌ ์ด๋ ๋ฒํผ (์์ง ๊ธฐ๋ฅ ์์, ๋ค์ ๋จ๊ณ์์ ๊ตฌํ)
- ์์ผ ํค๋ (์ผ~ํ )
- ๋ ์ง ๊ทธ๋ฆฌ๋ (7x5 ๋๋ 7x6 ํ
์ด๋ธ)
- ๊ณต์ฐ์ด ์๋ ๋ ์ง๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ (์: bg-blue-100) ๋ฐ ๊ณต์ฐ ๊ฐ์ ํ์
- Tailwind CSS๋ก ๋ฐ์ํ ๊ทธ๋ฆฌ๋ ๋์์ธ
4. ๊ฐ ๋ ์ง ์
์ ๋ ์ง ๋ฒํธ์ ํด๋น ๋ ์ง์ ๊ณต์ฐ ๊ฐ์๋ฅผ ํ์
๋ฌ๋ ฅ์ด ์ ์์ ์ผ๋ก ํ์๋๊ณ , ๊ณต์ฐ์ด ๋ฑ๋ก๋ ๋ ์ง๊ฐ ์๊ฐ์ ์ผ๋ก ๊ตฌ๋ถ๋๋์ง ํ์ธํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: ์๊ฐ ๋ฌ๋ ฅ ํ์ด์ง(/)๊ฐ ์์ฑ๋๊ณ , ํ์ฌ ์์ ๋ ์ง๊ฐ ๊ทธ๋ฆฌ๋ ํํ๋ก ํ์๋ฉ๋๋ค. ๊ณต์ฐ์ด ์๋ ๋ ์ง๋ ๋ฐฐ๊ฒฝ์์ด ๋ณ๊ฒฝ๋๋ฉฐ, ๊ณต์ฐ ๊ฐ์๊ฐ ํ์๋ฉ๋๋ค.
๋ฌ๋ ฅ์์ ๋ ์ง๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ๋ ์ง์ ๊ณต์ฐ ์ ๋ณด๋ฅผ ๋ชจ๋ฌ ์ฐฝ์ผ๋ก ํ์ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ฃผ์ธ์.
๋ค์ ์์
์ ์ํํด์ฃผ์ธ์:
1. calendar.blade.php ์์ :
- Alpine.js๋ฅผ ํ์ฉํ์ฌ ๋ชจ๋ฌ ์ํ ๊ด๋ฆฌ (x-data="{ open: false, selectedDate: null, concerts: [] }")
- ๊ฐ ๋ ์ง ์
์ @click ์ด๋ฒคํธ ์ถ๊ฐ: ํด๋ฆญ ์ ํด๋น ๋ ์ง์ ๊ณต์ฐ ์ ๋ณด๋ฅผ ๋ชจ๋ฌ์ ํ์
- ๋ชจ๋ฌ ์ปดํฌ๋ํธ ์ถ๊ฐ (x-show="open"๋ก ํ์/์จ๊น ์ ์ด)
- ๋ชจ๋ฌ ๋ด์ฉ:
- ์ ํ๋ ๋ ์ง ํ์ (์: "2025๋
1์ 15์ผ ๊ณต์ฐ")
- ํด๋น ๋ ์ง์ ๊ณต์ฐ ๋ชฉ๋ก (๊ณต์ฐ๋ช
, ์ํฐ์คํธ, ์๊ฐ, ์ฅ๋ฅด, ํฐ์ผ ๊ฐ๊ฒฉ, ์๋งค ๋งํฌ)
- ๊ณต์ฐ์ด ์๋ ๊ฒฝ์ฐ "์ด ๋ ์ ๊ณต์ฐ์ด ์์ต๋๋ค" ๋ฉ์์ง ํ์
- ๋ซ๊ธฐ ๋ฒํผ (@click="open = false")
2. Tailwind CSS๋ก ๋ชจ๋ฌ ์คํ์ผ๋ง:
- ๋ฐํฌ๋ช
๋ฐฐ๊ฒฝ (bg-black bg-opacity-50)
- ์ค์ ์ ๋ ฌ ๋ชจ๋ฌ ์นด๋ (bg-white rounded-lg shadow-xl)
- ๊ณต์ฐ ์ ๋ณด ์นด๋ ๋์์ธ (๊ฐ ๊ณต์ฐ์ ์นด๋ ํํ๋ก ํ์)
3. JavaScript๋ก ๋ ์ง ํด๋ฆญ ์ ํด๋น ๋ ์ง์ ๊ณต์ฐ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ฌ์ ์ ๋ฌ
- Blade์์ @json()์ผ๋ก ๊ณต์ฐ ๋ฐ์ดํฐ๋ฅผ JavaScript ๊ฐ์ฒด๋ก ๋ณํ
๋ ์ง๋ฅผ ํด๋ฆญํ๋ฉด ๋ชจ๋ฌ์ด ์ด๋ฆฌ๊ณ , ํด๋น ๋ ์ง์ ๊ณต์ฐ ์ ๋ณด๊ฐ ํ์๋๋์ง ํ์ธํด์ฃผ์ธ์. ๋ชจ๋ฌ ์ธ๋ถ๋ฅผ ํด๋ฆญํ๋ฉด ๋ซํ๋๋ก ๊ตฌํํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: ๋ฌ๋ ฅ์์ ๋ ์ง๋ฅผ ํด๋ฆญํ๋ฉด ๋ชจ๋ฌ ์ฐฝ์ด ์ด๋ฆฌ๊ณ , ํด๋น ๋ ์ง์ ๊ณต์ฐ ์ ๋ณด๊ฐ ํ์๋ฉ๋๋ค. ๋ชจ๋ฌ์ Alpine.js๋ก ๊ตฌํ๋๋ฉฐ, ๋ซ๊ธฐ ๋ฒํผ๊ณผ ์ธ๋ถ ํด๋ฆญ์ผ๋ก ๋ซ์ ์ ์์ต๋๋ค.
๊ณต์ฐ ๋ชฉ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ , ๊ณต์ฐ ์์ /์ญ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ฃผ์ธ์.
๋ค์ ์์
์ ์ํํด์ฃผ์ธ์:
1. routes/web.php์ ๋ผ์ฐํธ ์ถ๊ฐ:
- GET /concerts -> ConcertController@index (๊ณต์ฐ ๋ชฉ๋ก)
- GET /concerts/{id}/edit -> ConcertController@edit (๊ณต์ฐ ์์ ํผ)
- PUT /concerts/{id} -> ConcertController@update (๊ณต์ฐ ์
๋ฐ์ดํธ)
- DELETE /concerts/{id} -> ConcertController@destroy (๊ณต์ฐ ์ญ์ )
2. ConcertController์ index ๋ฉ์๋:
- ๋ชจ๋ ๊ณต์ฐ์ ๋ ์ง ์์ผ๋ก ์กฐํ (Concert::orderBy('date', 'asc')->get())
- resources/views/concerts/index.blade.php ๋ทฐ ๋ฐํ
3. index.blade.php ์์ฑ:
- ๊ณต์ฐ ๋ชฉ๋ก์ ํ
์ด๋ธ ๋๋ ์นด๋ ํํ๋ก ํ์
- ๊ฐ ๊ณต์ฐ์ ์์ /์ญ์ ๋ฒํผ ์ถ๊ฐ
- Tailwind CSS๋ก ์คํ์ผ๋ง
4. edit.blade.php ์์ฑ (create.blade.php์ ์ ์ฌํ์ง๋ง ๊ธฐ์กด ๋ฐ์ดํฐ ํ์)
- @method('PUT') ํฌํจ
5. ConcertController์ update ๋ฉ์๋:
- ์
๋ ฅ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ
- Concert::find($id)->update()๋ก ๋ฐ์ดํฐ ์
๋ฐ์ดํธ
- ๋ชฉ๋ก ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
6. ConcertController์ destroy ๋ฉ์๋:
- Concert::find($id)->delete()๋ก ๋ฐ์ดํฐ ์ญ์
- ๋ชฉ๋ก ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
7. ์ญ์ ๋ฒํผ์ ํ์ธ ์๋ฆผ ์ถ๊ฐ (JavaScript confirm() ๋๋ Alpine.js ํ์ฉ)
๊ณต์ฐ ๋ชฉ๋ก ํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ํ์๋๊ณ , ์์ /์ญ์ ๊ธฐ๋ฅ์ด ์๋ํ๋์ง ํ์ธํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: ๊ณต์ฐ ๋ชฉ๋ก ํ์ด์ง(/concerts)๊ฐ ์์ฑ๋๊ณ , ๋ฑ๋ก๋ ๋ชจ๋ ๊ณต์ฐ์ด ํ์๋ฉ๋๋ค. ๊ฐ ๊ณต์ฐ์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ผ๋ฉฐ, ์ญ์ ์ ํ์ธ ์๋ฆผ์ด ํ์๋ฉ๋๋ค.
์ ์ถ๋ ์ํ (0)
๋ก๊ทธ์ธ ํ ์ ์ถ์์ง ์ ์ถ๋ ์ํ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋์ ์๊ฐ ๋์ด๋ณด์ธ์!