Comment puis-je passer un paramètre à une action de contrôleur dans un package Laravel?

voix
18

Au sein d'un ensemble Laravel j'ai fait, je veux rediriger l'utilisateur vers une action de contrôleur qui nécessite un paramètre (dans le même package).

Manette:

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

L'action dans la redirection est le même chemin que je l' utilise dans mon routes.phpfichier pour diriger l'utilisateur à cette action du contrôleur

Route:

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

J'ai essayé des variations de ce chemin sans succès, y compris [email protected]comme la documentation suggère ( https://laravel.com/docs/5.1/responses#redirects )

Notez : Je suis arrivé que cela fonctionne en nommant mon itinéraire en routes.phpet à l' aide return redirect()->route('route_name', [$id]);, mais je veux toujours savoir comment passer une action de contrôleur de package à la ->action()fonction.

Créé 28/01/2016 à 18:28
utilisateur
Dans d'autres langues...                            


1 réponses

voix
5

Il essaie d'accéder à votre contrôleur à partir de l' App\Http\Controllersespace de noms. Peut voir ils l'ont ajouté à votre nom du contrôleur dans votre erreur:

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

Vous devez échapper à l' Arielespace de noms avec \au début:

return redirect()->action('\Ariel\SpotBuy\Http\Controllers\Admin\[email protected]', [$id]);
Créé 28/01/2016 à 18:59
source utilisateur

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