У меня есть форма регистрации ниже для регистрации пользователя на конгрессе. Пользователь может зарегистрировать в конгрессе только его, но и других участников. Есть 4 разных сценария для регистрации. Таким образом, регистрационная форма должна обрабатывать эти 4 различных сценария. Но это не работает, только сценарии 1, 2 и 4 работают нормально. Сценарий 3 не работает должным образом.
Знаете ли вы, как получить регистрационную форму, которая поддерживает эти 4 сценария?
Сценарий 1 - это когда: (единственный нормально работающий сценарий)
- Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
- с типом заявки «Тип заявки 1» связан 1 или более пользовательских вопросов, например «Какой у тебя телефон?» а с типом заявки "тип заявки 2" не связан пользовательский вопрос
- Столбец all_participants в таблице конгрессов имеет значение «1», что означает, что необходимо собрать информацию (имя и фамилию) каждого участника, которого регистрирует пользователь
- Диаграмма, демонстрирующая, каким должен быть этот сценарий:
Сценарий 2 - это когда:
- Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
- тип билета "тип билета t1" и "тип билета 2" не имеет какого-либо специального вопроса
- всех участников - «1», что означает, что необходимо собрать информацию о каждом участнике
- Диаграмма, демонстрирующая, каким должен быть этот сценарий:
Сценарий 3 - это когда:
- Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
- с типом заявки «Тип заявки 1» связан пользовательский вопрос «Какой у тебя телефон?», С типом заявки «Тип заявки 2» не связан пользовательский вопрос
- всех участников равен «0», что означает, что нет необходимости собирать информацию (имя и фамилию) каждого участника
- Диаграмма, демонстрирующая, каким должен быть этот сценарий:
Сценарий 4 - это когда:
- Есть два типа билетов на конгресс, например: «Тип билета 1» и «Тип билета 2»
- с типами заявок "тип заявки 1" и "тип заявки 2" не связан пользовательский вопрос
- всех участников равен «0», что означает, что нет необходимости собирать информацию (имя и фамилию) каждого участника
- Диаграмма, демонстрирующая, каким должен быть этот сценарий:
Выбранные билеты с предыдущей страницы доступны в переменной "$selectedTypes
".
Форма регистрации, которую я сейчас храню в registration.blade.php, выглядит следующим образом:
<form method="post" id="step1formfree" action="">
{{csrf_field()}}
@if (!is_null($allParticipants) && is_int($allParticipants))
@if($allParticipants == 1)
<p>Please fill all fields. Your tickets will be send to <b>{{ (\Auth::check()) ? Auth::user()->email : old('email')}}</b>.</p>
@else
<p>Is not necessary additional info. Your tickets will be send to <b>{{ (\Auth::check()) ? Auth::user()->email : old('email')}}</b>.</p>
@endif
<span id="userData" data-name="{{ auth()->user()->name }}" data-surname="{{ auth()->user()->surname }}"></span>
@foreach($selectedRtypes as $k => $selectedRtype)
//{{dd($selectedRtype)}}
@foreach(range(1,$selectedRtype['quantity']) as $val)
@if($allParticipants == 1)
<h6>Participant - {{$val}} - {{$k}}</h6>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="fill_auth_info{{ $val }}" data-id="{{ $k }}_{{ $val }}"name="fill_with_auth_info">
<label class="form-check-label d-flex align-items-center" for="fill_auth_info{{ $val }}">
<span class="mr-auto">Fill with auth user info.</span>
</label>
</div>
<div class="form-group font-size-sm">
<label for="name{{ $k }}_{{ $val }}" class="text-gray">Name</label>
<input type="text" id="name{{ $k }}_{{ $val }}" name="participant_name[]" required class="form-control" value="">
</div>
<div class="form-group font-size-sm">
<label for="surname{{ $k }}_{{ $val }}" class="text-gray">Surname</label>
<input type="text" id="surname{{ $k }}_{{ $val }}" required class="form-control" name="participant_surname[]" value="">
</div>
@foreach($selectedRtype['questions'] as $customQuestion)
<div class="form-group">
<label for="participant_question">{{$customQuestion->question}}</label>
<input type="text"
@if($customQuestion->pivot->required == "1") required @endif
class="form-control" name="participant_question[]">
<input type="hidden" name="participant_question_required[]"
value="{{ $customQuestion->pivot->required }}">
<input type="hidden" value="{{ $customQuestion->id }}" name="participant_question_id[]"/>
</div>
@endforeach
@else
<input type="hidden" value="foo" name="participant_name[]"/>
<input type="hidden" value="bar" name="participant_surname[]"/>
@endif
<input type="hidden" name="rtypes[]" value="{{ $selectedRtype['id'] }}"/>
@endforeach
<div class="form-group">
@if ($allParticipants == 0)
@foreach($selectedRtype['questions'] as $customQuestion)
<label for="participant_question">{{$customQuestion->question}}</label>
<input type="text"
@if($customQuestion->pivot->required == "1") required @endif
class="form-control" name="participant_question[]">
<input type="hidden" name="participant_question_required[]"
value="{{ $customQuestion->pivot->required }}">
<input type="hidden" value="{{ $customQuestion->id }}" name="participant_question_id[]"/>
</div>
@endforeach
@endif
@endforeach
@endif
<input type="submit" href="#step2"
id="goToStep2Free" class="btn btn-primary btn float-right next-step" value="Go to step 2"/>
</form>
«{{dd($selectedRtype)}}
», если нет пользовательских вопросов и были выбраны 2 билета с одинаковым типом билета, показывает:
array:6 [▼
"quantity" => "2"
"price" => 0
"subtotal" => 0
"total" => 0
"questions" => Collection {#232 ▼
#items: []
}
"id" => 1
]
Если в области отображаются пользовательские вопросы:
array:6 [▼
"quantity" => "1"
"price" => 0
"subtotal" => 0
"total" => 0
"questions" => Collection {#232 ▼
#items: array:1 [▼
0 => Question {#233 ▼
#fillable: array:3 [▶]
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:6 [▶]
#original: array:9 [▼
"id" => 1
"question" => "What is your phone?"
"type" => "text"
"congress_id" => 1
"created_at" => "2018-05-06 12:24:41"
"updated_at" => "2018-05-06 12:24:41"
"pivot_registration_type_id" => 1
"pivot_question_id" => 1
"pivot_required" => 1
]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: array:1 [▶]
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▶]
}
]
}
"id" => 1
]
Отношения, имеющие отношение к вопросу:
1 to many between Congresses and Registrations
1 to many between Congresses and TicketTypes
1 to many between Registrations and Participants
1 to many between TicketTypes and Participants
1 to many between Participants and Answers
1 to many between Questions and Answers
Many to Many between TicketTypes and Questions
1 to many between Congresses and Questions