How to retrieve information from the laravel URL?

0

I have the following route:

# Minha rota para cadastro de pessoas ao escolher um plano
Route::get('/cadastrar/{plano}', function($plano = 'silver'){
    # Checa se o plano existe
    if (array_search($plano, ['silver', 'gold', 'diamond']) === false)
        # Caso não exista, usa o "silver" como padrão 
        return redirect()->route('cadastrar', ['plano' => 'silver']);
    # Retorna a View para o usuário
    return view('auth.cadastrar');
# Condições de existência para o campo plano
})->where(['plano' => '[a-z]+'])->name('cadastrar');

But I need within the View I can retrieve the name of the chosen plan, for example:

# http://exemplo.com/cadastrar/silver
# Parabéns você escolheu o plano {{$plano}}

And I would like to know if the way I did this route is the best, or is there any more professional way, thank you !!

    
asked by anonymous 30.09.2018 / 01:55

2 answers

0

I noticed some practices that are not very advisable, such as a check (if) within the Laravel route file.

Step 1 - Remove the logic from this file and move to a function in the model. Where your business rules really should be.

Step 2 - To retrieve which plan you have chosen, you can either return a variable to the view or create a session variable ('Plan_Choose') through the controller.

    
01.10.2018 / 13:46
0

My friend, see the documentation Laravel: Passing Data To Views

Just pass an array on the second argument in the view call.

Below is an example of how to implement within your code.

# Minha rota para cadastro de pessoas ao escolher um plano
Route::get('/cadastrar/{plano}', function($plano = 'silver'){
    # Checa se o plano existe
    if (array_search($plano, ['silver', 'gold', 'diamond']) === false)
        # Caso não exista, usa o "silver" como padrão 
        return redirect()->route('cadastrar', ['plano' => 'silver']);
    # Retorna a View para o usuário
    return view('auth.cadastrar', compact('plano'));
# Condições de existência para o campo plano
})->where(['plano' => '[a-z]+'])->name('cadastrar');
    
01.10.2018 / 14:04