2014-01-30 53 views
1

所以我看到這個錯誤只是偶爾出現,但它在描述發生的實際錯誤時沒有幫助。它也沒有給出任何可能導致它顯示的線索。這個錯誤實際上是什麼意思?

Cannot use modParams with indexes that do not exist.

誰能解釋更多verbosly這個錯誤是什麼意思,它涉及到(如行爲,組件,控制器等),最常見的原因以及如何解決它?

要啓動調查,您可以在這裏找到錯誤。 https://github.com/cakephp/cakephp/blob/master/lib/Cake/Utility/ObjectCollection.php#L128

回答

0

您是否試過閱讀文檔?

/* 
* - `modParams` Allows each object the callback gets called on to modify the parameters to the next object. 
* Setting modParams to an integer value will allow you to modify the parameter with that index. 
* Any non-null value will modify the parameter index indicated. 
* Defaults to false. 
*/ 

你沒有粘貼任何代碼,所以我猜你的方法的第三個參數包含錯誤的東西。

+0

我想要一個更通用的基本解釋,因爲註釋並未解釋該方法如何與應用程序代碼集成。 –

1

通俗地說
CakePHP會被告知的參數的陣列應用於對象,使得每個特定對象可以修改發送到下一個對象的參數的集合。 CakePHP如何被告知這樣做有錯誤。

深入
一般來說,這從CakePHP事件發佈機制上升。代碼中的某處是ObjectCollection的一個實例,它是triggered with certain parameters。也就是說,該集合中的每個對象都會調用一個方法。

每個回調方法都有參數。最初參數傳遞到trigger()。在正常情況下(modParams爲false),每個回調獲得相同的參數。但是,當modParams不嚴格錯誤時,每個回調的結果將覆蓋modParams指示的參數。

因此,如果集合中有兩個對象,modParams是1,params [1]最初是'a',那麼回調被賦予params [1] == a的第一個對象。該回調返回'b',所以當下一個回調被調用時,第二個對象獲得params [1] == b。

當給定的modParams值在最初給出的params中不存在時,將引發異常。例如,如果modParams是2並且paramsarray (0 => 'a', 1 => 'b'),則會發生此異常。

在你的情況
具體來說,調試這具有在低層次的工作要做,因爲它是一個泛型類的方法。異常情況下的回溯應該讓你在特定的具體類上調用trigger()調用。該呼叫被給予非假的modParamsparams,其不具有給定的modParams。它可能是一個擴展ObjectCollection的具體類中的代碼錯誤,或者它可能僅僅是一種由未被給出預期參數的方法引起的通用消息。

+0

我不明白這個解釋。我不會將modParams作爲參數傳遞給任何回調方法。因此提出這個問題。我希望有更多的外行人的條款解釋。 –

+0

什麼部分是清楚的?什麼部分不是?當我說「在你的代碼中的某處」時,我並不是說你寫的代碼是一定的,而是代表你正在使用的整個代碼。例如,抽象控制器可能期望某些傳入參數應用於受控模型,但這些參數不存在,並且這是通用消息的結果。提供有針對性的建議的最佳方式是查看回溯。 – bishop

+0

不清楚的部分是'將一組參數應用於一組對象'。清楚的部分不是它。什麼是modParams?它在哪裏設置?傳遞的對象模型,控制器還是視圖?這是一個壞發現的突襲,缺少表列,壞回調或其他東西?這很令人困惑,因爲我不是積極嘗試使用modParams,而是Cake自動完成的事情。我想了解,使這個錯誤更具描述性的實際問題的魔術。我的意思是實際的客體,而不是方法本身。 –