所以我有时会看到这个错误出现,但它对描述发生的实际错误没有帮助。它也没有提供任何可能导致它显示的线索。
Cannot use modParams with indexes that do not exist.
任何人都可以更详细地解释这个错误意味着什么,它与行为,组件,控制器等有什么关系,最常见的原因以及如何解决它?
要启动调查,您可以在此处找到错误。 https://github.com/cakephp/cakephp/blob/master/lib/Cake/Utility/ObjectCollection.php#L128
答案 0 :(得分:1)
Layman的条款
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且params
为array (0 => 'a', 1 => 'b')
,则会出现此异常。
在您的情况下
具体来说,调试它必须在低级别完成,因为它是泛型类的方法。来自异常的回溯应该让你冒泡到特定具体类的trigger()
调用。该调用被赋予非假modParams
和params
,但没有给定modParams
。它可能是扩展ObjectCollection
的具体类中的代码错误,或者它可能只是由于没有给出预期参数的方法而产生的通用消息。
答案 1 :(得分: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.
*/
你没有粘贴任何代码,所以我猜你方法的第3个方法包含了错误。