2016-01-28 2 views
2

В пакете Laravel, который я сделал, я хочу перенаправить пользователя на действие контроллера, для которого требуется параметр (в том же пакете).Как передать параметр в действие контроллера в пакете 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]+'); 

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

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

+0

Try: 'Возвращение редирект () -> action ('Ariel \ SpotBuy \ Http \ Controllers \ Admin \ SpotBuyController @ getPart', ['id' => $ id]); ' – Laerte

+0

Не повезло. Я получаю такое же сообщение об ошибке: 'production.ERROR: exception 'InvalidArgumentException' с сообщением« Action App \ Http \ Controllers \ Ariel \ SpotBuy \ Http \ Controllers \ Admin \ SpotBuyController @ getPart not defined.' –

ответ

4

Он пытается получить доступ к вашему контроллеру из пространства имен 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]); 
+1

В этом была проблема. Спасибо Джеффу. –

+0

Хороший ответ! Иногда большие проблемы возникают в небольших деталях! +1 – Laerte

Смежные вопросы