У меня есть страница сведений о конференции, где пользователь может выбрать в форме количество доступных билетов на конференцию, которую он хочет.Конференция может иметь 1 или несколько билетов, а некоторые могут быть бесплатными, другие платными.Эта форма для пользователя, чтобы выбрать билеты, которые он хочет, имеет следующее действие:
<form method="post" action="{{route('conferences.storeQuantities', ['id' => $conference->id, 'slug' => $conference->slug])}}">
...
</form>
Таким образом, когда пользователь нажимает «Далее», код переходит в RegistrationController storeQuantities (), этот метод сохраняет выбранные билеты (количество каждого билета, итого и т. д.) и некоторая другая некоторая информация в сеансе и возвращает пользователя по маршруту «conference.registration»:
Сводка storeQuantities ():
public function storeQuantities(Request $request, $id, $slug = null)
{
....
$selectedRtypes[$rtype->name]['quantity'] = $quantity;
$selectedRtypes[$rtype->name]['price'] = $price;
$selectedRtypes[$rtype->name]['subtotal'] = $price * $quantity;
$total += $selectedRtypes[$rtype->name]['subtotal'];
$selectedRtypes[$rtype->name]['total'] = $total;
Session::put('selectedRtypes', $selectedRtypes);
return redirect(route('conferences.registration', ['id' => $id, 'slug' => $slug]))->with('total', $total);
}
Итак, код отправляется на маршрут:
Route::get('/conference/{id}/{slug?}/registration', [
'uses' => 'RegistrationController@displayRegistrationPage',
'as' =>'conferences.registration'
]);
Итак, вызывается функция displayRegistrationPage, которая получает значения в сеансе и перенаправляет пользователя на страницу регистрации:
public function displayRegistrationPage(Request $request, $id, $slug = null)
{
...
$selectedRtypes = Session::get('selectedRtypes');
$allParticipants = Session::get('allParticipants');
return view('conferences.registration',
['selectedRtypes' => $selectedRtypes, 'allParticipants' => $allParticipants, 'customQuestions' => $customQuestions, 'id' => $id,
'slug' => $slug]);
}
Так что теперь страница регистрации представлена пользователю.Здесь есть форма для регистрации пользователя в конференции.Форма выглядит так:
<form method="post" action="{{route('conferences.storeRegistration', ['id' => $id, 'slug' => $slug])}}">
...
</form>
Сомнение: Когда форма отправляется, в этом storeRegistration () я хочу сохранить в столбце состояния таблицы регистрации значение «C»(завершено), если общая регистрационная цена равна «0», но если «> 0», я хочу сохранить ее как «I» (не полностью).
Знаете ли вы, как этого можно добиться надлежащим образом?
public function storeRegistration(Request $request, $id, $slug = null, Validator $validator)
{
...
if ($validator->passes()) {
$registration = Registration::create([
'conference_id' => $id,
'main_participant_id' => $user->id,
'status' => 'C', // 'C' if free 'I' if paid
]);
...
}