Laravel: Как показать форму после отправки? - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в Laravel и в настоящее время работаю над проектом, в котором гости вводят данные формы для бронирования номера в отеле, и после их отправки они будут перенаправлены на страницу, показывающую только что выполненное бронирование. Я знаю, что это можно сделать, разрешив гостям создать учетную запись, но мой проект требует входа только для бэкэнда (администратора). (Q2.) Кроме того, гости могут просмотреть бронирование, введя идентификатор бронирования и свою фамилию.

Мой контроллер:

public function store(Request $request)
   {
      $book = new book();
      $book->title = $request->input('title');
      $book->fname = $request->input('firstname');
      $book->lname = $request->input('lastname');
      $book->country = $request->input('country');
      $book->phone = $request->input('phone');
      $book->email = $request->input('email');
       $book->no_rooms = $request->input('no_rooms');
       $book->room_type_id = $request->input('type_room');
       $book->no_adults = $request->input('adults');
       $book->no_children = $request->input('children');
       $book->meal_id = $request->input('meal');
       $book->check_in = $request->input('check_in');
       $book->check_out = $request->input('check_out');
       $book->save();
   }
   public function show(book $book)
{

   return view('book.show', compact('book'));
} 

Как я хочу, чтобы он отображался после отправки :

<div class="row">
<div class="col-6">
<table class="table table-striped text-dark">
<tbody>
<tr>
<td> Name: </td>
<td> {{$book->title}} &nbsp; {{$book->firstname}} &nbsp; {{$book->lastname}}    </td>
</tr>
<tr>
<td> Phone </td>
<td> {{$book->phone}}     </td>
</tr>
<tr>
<td> Email </td>
<td> {{$book->email}}     </td>
</tr>
<tr>
<td> Phone </td>
<td> {{$book->phone}}     </td>
</tr>
<tr>
<td> Passport Issued: </td>
<td> {{$book->country}}     </td>
</tr>
<tr>
<td> Number of rooms: </td>
<td> {{$book->no_rooms}}     </td>
</tr>
<tr>
<td> Room Type </td>
<td> {{$book->type_room}}     </td>
</tr>
<tr>
<td> No of adults: </td>
<td> {{$book->adults}}     </td>
</tr><tr>
<td> No of children: </td>
<td> {{$book->children}}     </td>
</tr>
<tr>
<td> Meal plan: </td>
<td> {{$book->meals_id}}     </td>
</tr>
<tr>
<td> Check-in: </td>
<td> {{$book->check_in}}     </td>
</tr>
<tr>
<td> Check-out: </td>
<td> {{$book->check_out}}     </td>
</tr>
</tbody>
</table>

</div>
</div>

Ответы [ 3 ]

0 голосов
/ 21 февраля 2020

Вы можете перенаправить на метод show из нижней части метода вашего магазина:

// Replace MyController with the name of your controller
return redirect()->action(
    'MyController@show', ['book' => $book]
);

Для получения дополнительной информации ознакомьтесь с документацией: https://laravel.com/docs/master/redirects#redirecting -controller-actions

0 голосов
/ 21 февраля 2020

Если я правильно понимаю вашу ситуацию, вы sh будете показывать те же данные, которые были введены пользователем после отправки формы.

Я могу подумать, что перенаправление на страницу, на которой показывается ваш div без чего-либо еще, недостаточно. Вам все равно потребуется доступ к данным, введенным в форму. Laravel сохраняет данные формы в переменной сеанса, называемой old, согласно документации, эта переменная должна быть доступна во время следующего запроса после отправки, чтобы вы могли попытаться получить данные, используя

<table class="table table-striped text-dark">
    <tbody>
        <tr>
            <td> Name: </td>
            <td> {{ old('title') }} &nbsp; {{ old('firstname') }} &nbsp; {{ old('lastname') }}    </td>
        </tr>
        <tr>
            <td> Phone </td>
            <td> {{ old('phone') }}     </td>
        </tr>
        <tr>
            <td> Email </td>
            <td> {{ old('email') }}     </td>
        </tr>
        <tr>
            <td> Phone </td>
            <td> {{ old('phone') }}     </td>
        </tr>
        <tr>
            <td> Passport Issued: </td>
            <td> {{ old('country') }}     </td>
        </tr>
        <tr>
            <td> Number of rooms: </td>
            <td> {{ old('no_rooms') }}     </td>
        </tr>
        <tr>
            <td> Room Type </td>
            <td> {{ old('type_room') }}     </td>
        </tr>
        <tr>
            <td> No of adults: </td>
            <td> {{ old('adults') }}     </td>
        </tr><tr>
            <td> No of children: </td>
            <td> {{ old('children') }}     </td>
        </tr>
        <tr>
            <td> Meal plan: </td>
            <td> {{ old('meals_id') }}     </td>
        </tr>
        <tr>
            <td> Check-in: </td>
            <td> {{ old('check_in') }}     </td>
        </tr>
        <tr>
            <td> Check-out: </td>
            <td> {{ old('check_out') }}     </td>
        </tr>
    </tbody>
</table>

На всякий случай, если вы в вашем сеансе нет старых данных, потому что при последовательном перенаправлении вы должны внедрить эти данные в ваш сеанс, используя fla sh. Вы можете найти более подробную информацию здесь, в laravel документации

0 голосов
/ 21 февраля 2020

Вы можете просто использовать laravel помощник redirect ()

return redirect()->route('route name here');

или

return redirect('your-form-path');

подробнее здесь: laravel http перенаправляет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...