- 모델: AdminRoadmapPlan, AdminRoadmapMilestone - 서비스: RoadmapPlanService, RoadmapMilestoneService - FormRequest: Store/Update Plan/Milestone 4개 - 컨트롤러: Blade(RoadmapController), API(Plan/Milestone) 3개 - 라우트: web.php, api.php에 roadmap 라우트 추가 - Blade 뷰: 대시보드, 목록, 생성, 수정, 상세, 파셜 테이블 6개 - HTMX 기반 필터링/페이지네이션, 마일스톤 인라인 추가/토글
47 lines
1.3 KiB
PHP
47 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Roadmap;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class StoreMilestoneRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'plan_id' => 'required|integer|exists:admin_roadmap_plans,id',
|
|
'title' => 'required|string|max:255',
|
|
'description' => 'nullable|string|max:2000',
|
|
'due_date' => 'nullable|date',
|
|
'assignee_id' => 'nullable|integer|exists:users,id',
|
|
'sort_order' => 'nullable|integer',
|
|
];
|
|
}
|
|
|
|
public function attributes(): array
|
|
{
|
|
return [
|
|
'plan_id' => '계획',
|
|
'title' => '마일스톤 제목',
|
|
'description' => '설명',
|
|
'due_date' => '예정일',
|
|
'assignee_id' => '담당자',
|
|
];
|
|
}
|
|
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'plan_id.required' => '계획을 선택해주세요.',
|
|
'plan_id.exists' => '유효하지 않은 계획입니다.',
|
|
'title.required' => '마일스톤 제목은 필수입니다.',
|
|
'title.max' => '마일스톤 제목은 최대 255자까지 입력 가능합니다.',
|
|
];
|
|
}
|
|
}
|