2017-04-05 58 views
0

我有一個方法remove()其中有參數$ item,但它沒有被用在它裏面。 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

當您更新方法簽名,你必須更新方法的每個實例被稱爲以反映新的參數。在第65行的ProductController中,它仍然使用舊的方法簽名(包含item和id)。要修復它,請更新控制器中的方法調用以使用$ id。

相關問題