Как передать параметр в действие контроллера в пределах Laravel пакета?

голоса
18

В пакете Laravel я сделал, я хочу, чтобы перенаправить пользователя на действие контроллера, который требует параметра (в пределах того же пакета).

контроллер:

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

Действие в перенаправлении тот же путь , который я использую в моем routes.phpфайле , чтобы направить пользователя к этому действию контроллера

Маршрут:

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

Я пробовал вариацию этого пути без успеха, в том числе , [email protected]как следует из документации ( https://laravel.com/docs/5.1/responses#redirects )

Примечание : я получил эту работу, назвав свой маршрут routes.phpи использовать return redirect()->route('route_name', [$id]);, но я все еще хочу знать , как передать действие контроллера пакета в ->action()функцию.

Задан 28/01/2016 в 18:28
пользователем
На других языках...                            


1 ответов

голоса
5

Он пытается получить доступ к контроллеру в App\Http\Controllersпространстве имен. Можно видеть , что они добавили его к имени контроллера в вашей ошибке:

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

Вам нужно , чтобы избежать Arielимен с \в начале:

return redirect()->action('\Ariel\SpotBuy\Http\Controllers\Admin\[email protected]', [$id]);
Ответил 28/01/2016 в 18:59
источник пользователем

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