2017-02-21 14 views
-1
public function edit($id) 
{ 
    $product = Product::find($id); 
    \Gloudemans\Shoppingcart\Facades\Cart::add($id, $product->name, 1, $product->price); 
} 

Когда я называю это с моей точки зренияLaravel 5 вызов метода из контроллера в целях

<a href="{{\App\Http\Controllers\CartController::edit($productItem->id)}} " class="item_add"> 

Im получаю сообщение об ошибке:

Non-static method App\Http\Controllers\CartController::edit() should not be called statically 

Как мне правильно это назвать?

+0

Можете ли вы показать 'Route' вы создали для' CartController @ edit'? –

+0

Маршрут :: ресурс ('cart', 'CartController'); – Ronald

ответ

0

Вам не нужно установить связь, как, что:

<a href="{{\App\Http\Controllers\CartController::edit($productItem->id)}} " 

Но вы должны установить его так:

url('cart/edit/' . $productItem->id) 
+0

@RossWilson, но как еще я могу назови это? – Ronald

+0

Я изменил его. Поэтому вам нужно изменить ссылку href .. Я думаю, что это не функция, которая вызывается с помощью Route. –

+0

Вы пытаетесь это @Ronald? –

0

Вы можете создать URL для действия контроллера, используя метод action помощник:

<a href="{{ action('[email protected]', [$productItem->id]) }}" class="item_add"> 
0

Что ... лол ... создать отдельный маршрут ... каждый другой путь вы attemptin g, чтобы сделать это, следует глубоко осуждать и пресекать (включая некоторые из предложенных ответов/комментариев), ИМО.

Примечание. Я также изменил «редактировать» на «добавить», основываясь на соглашении об именах используемой вами библиотеки корзины.

В routes.php оных (уведомление я назвал маршрут - лучшие практики):

Route::get('cart/add/{id}', ['as' => 'cart.add', 'uses' => '[email protected]']); 

в поле зрения, называют его следующим образом:

<a href="{{ route('cart.add', [$productItem]) }}">Add</a> 

В контроллере выполните следующие действия:

public function add($id) 
{ 
    $product = Product::find($id); 
    Cart::add($id, $product->name, 1, $product->price); 

    return redirect()->back(); 
} 

PS: Bit confused on why you're calling the facade like that. In config/app.php under aliases, add this: 'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class, .

Then in your controller, inject at the top as use Cart; . From there, just use Cart::add($id, $product->name, 1, $product->price); in your method.

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