У меня есть этот код ниже, чтобы показать сводку регистрации, например:
Registration type Quantity Price Subtotal
general 1 0.00 0.00
plus 2 2.00 4.00
Код в представлении, чтобы показать сводку:
<ul>
<li>
<span>Registration Type</span>
<span>Quantity</span>
<span >Price</span>
<span>Subtotal</span>
</li>
<?php
$total = 0;
$type_counts = [];
foreach ($registrationTypeDetails->participants as $p) {
$name = $p->registration_type->name;
if (!isset($type_counts[$name])) {
$type_counts[$name] = 0;
}
$type_counts[$name]++;
}
?>
@foreach($registrationTypeDetails->participants as $participant)
@php ($name = $participant->registration_type->name)
@php ($total +=$participant->registration_type->price * $type_counts[$name])
<li>
<span>{{$name}}</span>
<span>{{$type_counts[$name]}}</span>
<span>{{ number_format($participant->registration_type->price, 2)}}$</span>
<span>{{ number_format($participant->registration_type->price * $type_counts[$name], 2)}}$</span>
</li>
@endforeach
<li>
<span>TOTAL</span>
<span>{{ number_format($total, 2)}}€</span>
</li>
</ul>
Работаетхорошо, но я хочу передать приведенный выше код php, который находится в представлении, в метод контроллера showSummary (), а затем вернуться к представлению необходимых данных для отображения сводки, но я не добился успеха в достижении этого.
Знаете ли вы, как этого можно добиться надлежащим образом?
У меня в контроллере есть метод showSummary()
, который возвращает "registrationTypeDetails" в представлении выше.
public function showSummary($id, $slug, $regID)
{
$registrationTypeDetails = Registration::with(['participants.registration_type',
'participants' => function ($query) use ($regID) {
$query->select('id', 'registration_type_id', 'registration_id')->where('registration_id', $regID);
}
])->find($regID);
return view('conferences.showSummary', compact('registrationTypeDetails', 'id', 'slug'));
}
То, что я сделал для достижения этой цели, поместило в контроллер часть для подсчета количества каждого типа регистрации, например:
public function payment($id, $slug, $regID)
{
$registrationTypeDetails = Registration::with(['participants.registration_type',
'participants' => function ($query) use ($regID) {
$query->select('id', 'registration_type_id', 'registration_id')->where('registration_id', $regID);
}
])->find($regID);
$type_counts = [];
foreach ($registrationTypeDetails->participants as $p) {
$name = $p->registration_type->name;
if (!isset($type_counts[$name])) {
$type_counts[$name] = 0;
}
$type_counts[$name]++;
}
$registrationTypes = [];
return view('conferences.payment', compact( 'type_counts', 'registrationTypeDetails', 'id', 'slug'));
}
И в представлении просто:
<ul>
<li>
<span>Registration Type</span>
<span>Quantity</span>
<span>Price</span>
<span>Subtotal</span>
</li>
<?php
$total = 0;
?>
@foreach($registrationTypeDetails->participants as $participant)
@php ($name = $participant->registration_type->name)
@php ($total +=$participant->registration_type->price * $type_counts[$name])
<li>
<span>{{$name}}</span>
<span>{{$type_counts[$name]}}</span>
<span>{{ number_format($participant->registration_type->price, 2)}}
€</span>
<span>{{ number_format($participant->registration_type->price * $type_counts[$name], 2)}}
€</span>
</li>
@endforeach
<li>
<span>TOTAL</span>
<span>{{ number_format($total, 2)}}€</span>
</li>
</ul>
Но яне знаю, если это нормально, если есть еще код, который должен идти к контроллеру.Потому что мне нужно хранить в сеансе общее значение регистрации ($total
), но общее значение ($ total) отображается не в контроллере, который не кажется правильным.