Как с этой ошибкой "Неопределенная переменная: selectedType" - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть этот код ниже в registration.blade.php:

@foreach($selectedTypes as $k=>$selectedType)
    <li>
        <span class="font-size-sm">{{$k}}</span>
        <span class="font-size-sm">{{$selectedType['quantity']}}</span>
        <span class="font-size-sm">{{ number_format($selectedType['price'], 2)}}€</span>
        <span class="font-size-sm">{{ number_format($selectedType['subtotal'], 2)}}€</span>
    </li>
@endforeach 

И иногда на странице registration.blade.php появляется ошибка "http://proj.test/congress/1/congress-test/registration":

Undefined variable: selectedType 

Проблема должна заключаться в том, что сеанс «selectedTypes» не существует или истек срок его действия. Поэтому, возможно, необходимо перенаправить пользователя на страницу, на которой он выбирает типы заявок, если он находится на странице регистрации с этим кодом «@foreach($selectedTypes as $k=>$selectedType)...» и сеанс «selectedTypes» не существует. Знаете ли вы, является ли это правильным подходом к решению проблемы и что необходимо для перенаправления пользователя на страницу сведений о конгрессе с маршрутом:

Route::get('/congress/{id}/{slug?}', [
    'uses' => 'FrontController@show',
    'as'   =>'congresses.show'
]);

Где пользователь находится на странице регистрации, маршрут которой указан ниже, а сеанс "selectedTypes" не существует?

Route::get('/congress/{id}/{slug?}/registration', [
    'uses' => 'RegistrationController@displayRegistration',
    'as'   =>'congresses.registration'
]);

// метод storeQuantities (), где selectedTypes хранится в сеансе

public function storeQuantities(Request $request, $id, $slug = null){

        $ttypeQuantities = $request->get('ttypes');

        foreach($rtypeQuantities as $rtypeName => $quantity){
                $ttype = TicketType::where('name', $ttypeName)->firstOrFail();
                $price = $ttype->price;
                $selectedTypes[$ttype->name]['quantity'] = $quantity;
                $selectedTypes[$ttype->name]['price'] = $price;
                $selectedTypes[$ttype->name]['subtotal'] = $price * $quantity;

                $selectedTypes[$ttype->name]['id'] = $ttype->id;
        }
        Session::put('selectedTypes', $selectedTypes);
        return redirect(route('congresses.registration',['id' => $id, 'slug' => $slug]));
    }

1 Ответ

0 голосов
/ 27 апреля 2018

Всегда проверять $selectedType переменная

@foreach($selectedTypes as $k=>$selectedType)
    <li>
        <span class="font-size-sm">{{$k}}</span>
        @isset($selectedType)
           <span class="font-size-sm">{{$selectedType['quantity']}}</span>
           <span class="font-size-sm">{{ number_format($selectedType['price'],
2)}}€</span>
          <span class="font-size-sm">{{ number_format($selectedType['subtotal'], 2)}}€</span>
        @endisset
    </li>
@endforeach 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...