2017-04-05 9 views
0

パラメータ$ itemを持つメソッドremove()がありますが、その内部では使用されていません。 PhpStormはそれをグレー表示し、パラメータ$ itemはどこにも使用されていないと言います。私はそれを削除した場合しかし、私はこのエラーを取得する:Laravel:未使用のパラメータがないとメソッドが機能しません

ErrorException in Cart.php line 51: 
Illegal offset type 
in Cart.php line 51 
at HandleExceptions->handleError('2', 'Illegal offset type', 'C:\wamp64\www\laravel\app\Cart.php', '51', array('id' => object(Product))) in Cart.php line 51 
at Cart->remove(object(Product), '1') in ProductController.php line 65 
at ProductController->removeFromCart('1') 
at call_user_func_array(array(object(ProductController), 'removeFromCart'), array('id' => '1')) in compiled.php line 9399 
at Controller->callAction('removeFromCart', array('id' => '1')) in compiled.php line 9426 
at ControllerDispatcher->dispatch(object(Route), object(ProductController), 'removeFromCart') in compiled.php line 8484 
at Route->runController() in compiled.php line 8465 
at Route->run(object(Request)) in compiled.php line 8174 

Cart.php:私はそこにそれを残す場合

/** 
* Remove an item from cart 
* 
* @param $item 
* @param $id 
*/ 
public function remove($item, $id) 
{ 
    $this->totalQty -= $this->items[$id]['qty']; // Line 51 
    $this->totalPrice -= $this->items[$id]['price'] * $this->items[$id]['qty']; 
    unset($this->items[$id]); 
} 

が正常に動作しますが、私はそれを削除するとき、それはしていませんなぜですか?

+0

ここで、関数を呼び出していますか?新しいメソッドの署名を反映するように更新しましたか? – jfadich

+0

'Product'オブジェクトを最初のパラメータとして渡しているところで、' $ id'を使用しようとすると、その行でも同様です(これは* first *引数であることを覚えています* 'Product'オブジェクトですが' $ id'になっています)、 '$ id'はProductオブジェクトで、インデックスとして使うことはできません。 http://stackoverflow.com/a/2732502/451969を参照してください。 –

答えて

1

メソッドシグネチャを更新するときには、新しいパラメータを反映するために呼び出されるメソッドのすべてのインスタンスを更新する必要があります。 ProductControllerの65行目では、(itemとidの両方で)古いメソッドのシグネチャを使用しています。これを修正するには、コントローラのメソッド呼び出しを更新して$ idだけを使用します。

関連する問題