这个错误究竟意味着什么?

时间:2014-01-30 16:57:07

标签: cakephp cakephp-2.4

所以我有时会看到这个错误出现,但它对描述发生的实际错误没有帮助。它也没有提供任何可能导致它显示的线索。

Cannot use modParams with indexes that do not exist.

任何人都可以更详细地解释这个错误意味着什么,它与行为,组件,控制器等有什么关系,最常见的原因以及如何解决它?

要启动调查,您可以在此处找到错误。 https://github.com/cakephp/cakephp/blob/master/lib/Cake/Utility/ObjectCollection.php#L128

2 个答案:

答案 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且paramsarray (0 => 'a', 1 => 'b'),则会出现此异常。

在您的情况下
具体来说,调试它必须在低级别完成,因为它是泛型类的方法。来自异常的回溯应该让你冒泡到特定具体类的trigger()调用。该调用被赋予非假modParamsparams,但没有给定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个方法包含了错误。