¿Cómo puedo pasar un parámetro a una acción del controlador dentro de un paquete laravel?

votos
18

Dentro de un paquete de laravel hice, quiero redirigir al usuario a una acción de controlador que requiere un parámetro (dentro del mismo paquete).

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]);
}

La acción en el redireccionamiento es el mismo camino que utilizo en mi routes.phparchivo para dirigir al usuario a esta acción del controlador

Ruta:

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

He intentado variaciones de este camino sin éxito, incluyendo [email protected]como la documentación sugiere ( https://laravel.com/docs/5.1/responses#redirects )

Nota : Tengo que esto funcione nombrando en mi ruta routes.phpy usar return redirect()->route('route_name', [$id]);, pero todavía quiero saber cómo pasar una acción del controlador paquete a la ->action()función.

Publicado el 28/01/2016 a las 15:28
por usuario
En otros idiomas...                            


1 respuestas

votos
5

Se trata de intentar acceder a su controlador desde el interior del App\Http\Controllersespacio de nombres. Puede ver que han añadido a su nombre de controlador en su error:

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

Es necesario para escapar del Arielespacio de nombres con una \al comienzo:

return redirect()->action('\Ariel\SpotBuy\Http\Controllers\Admin\[email protected]', [$id]);
Respondida el 28/01/2016 a las 15:59
fuente por usuario

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