Como faço para passar um parâmetro para uma ação de controlador dentro de um pacote Laravel?

votos
18

Dentro de um pacote Laravel eu fiz, eu quero redirecionar o usuário para uma ação de controlador que requer um parâmetro (dentro do mesmo pacote).

Controlador:

public function postMatchItem(Request $request, $id)
{
    $this->validate($request, [
        'item_match' => 'required|numeric|exists:item,id',
    ]);

    $spot_buy_item = SpotBuyItem::find($id);

    $item = Item::find($request->input('item_match'));

    $price = $item->getPrice();

    $spot_buy_item_response = new SpotBuyItemResponse();
    $spot_buy_item_response->spot_buy_item_id = $id;
    $spot_buy_item_response->spot_buy_id = $spot_buy_item->spot_buy_id;
    $spot_buy_item_response->item_id = $item->id;
    $spot_buy_item_response->user_id = $spot_buy_item->user_id;
    $spot_buy_item_response->spot_buy_price = $price;
    $spot_buy_item_response->created_ts = Carbon::now();
    $spot_buy_item_response->save();

    return redirect()->action('Ariel\SpotBuy\Http\Controllers\Admin\[email protected]', [$id]);
}

A ação no redirecionamento é o mesmo caminho que eu uso no meu routes.phparquivo para direcionar o usuário para esta ação do controlador

Rota:

Route::get('/part/{id}', 'Ariel\SpotBuy\Http\Controllers\Admin\[email protected]')->where('id', '[0-9]+');

Eu tentei variações deste caminho sem sucesso, incluindo [email protected]como a documentação sugere ( https://laravel.com/docs/5.1/responses#redirects )

Nota : Eu tenho este trabalho, nomeando o meu percurso no routes.phpe usando return redirect()->route('route_name', [$id]);, mas eu ainda quero saber como passar uma ação de controlador pacote para a ->action()função.

Publicado 28/01/2016 em 18:28
usuário
Em outras línguas...                            


1 respostas

votos
5

Ele está tentando acessar seu controlador de dentro do App\Http\Controllersnamespace. Pode ver eles adicionaram-lo ao seu nome do controlador na sua erro:

App\Http\Controllers\Ariel\SpotBuy\Http\Controllers\Admin\[email protected]‌​art

Você precisa escapar do Arielnamespace com um \no início:

return redirect()->action('\Ariel\SpotBuy\Http\Controllers\Admin\[email protected]', [$id]);
Respondeu 28/01/2016 em 18:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more