2014-01-30 2 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. 
*/ 

코드를 붙여 넣지 않았으므로 메서드의 3 번째 인수에 잘못된 것이 포함되어 있습니다.

+0

주석은 메서드가 응용 프로그램 코드와 통합되는 방법을 설명하지 않으므로 좀 더 일반적인 기본 설명이 필요했습니다. –

1

뜻하는 용어는
CakePHP의 각 특정 객체는 다음 객체에 전송 된 매개 변수를 수정할 수 있도록 개체의 컬렉션에 매개 변수의 배열을 적용했다되고있다. CakePHP가이를 어떻게 수행하는지에 오류가 있습니다. 깊이
일반적으로

이것은 CakePHP의 이벤트 발행기구로부터 상승한다. 코드의 어느 곳에서 ObjectCollection의 인스턴스 인 triggered with certain parameters이 있습니다. 즉, 해당 컬렉션의 모든 개체에서 메서드가 호출되고 있습니다.

각 콜백 메소드에 매개 변수가 제공됩니다. 원래 매개 변수는 trigger()으로 전달됩니다. 일반적인 경우 (modParams이 false 인 경우) 모든 콜백은 동일한 매개 변수를 가져옵니다. 그러나 modParams이 완전히 false가 아닌 경우 각 콜백의 결과는 modParams으로 표시된 매개 변수를 덮어 씁니다.

컬렉션에 두 개의 객체가 있고 modParams가 1이고 처음에 params [1]이 'a'이면 콜백에 params [1] == a가있는 첫 번째 객체가 제공됩니다. 콜백은 'b'를 반환하므로 다음 콜백이 호출되면 두 번째 객체는 params [1] == b를 얻습니다.

제공된 modParams 값이 원래 제공된 params에없는 경우 예외가 발생합니다. 예를 들어 modParams이 2이고 paramsarray (0 => 'a', 1 => 'b')이면이 예외가 발생합니다.
특히 귀하의 경우에는

이 디버깅하는 것은 제네릭 클래스의 방법이기 때문에 낮은 수준에서 수행되어야한다. Exception의 백 트레이스를 통해 특정 콘크리트 클래스에 대한 trigger() 호출을 얻을 수 있습니다. 그 전화는 주어진 modParams이 아닌 거짓이 아닌 modParamsparams으로 주어집니다. ObjectCollection을 확장하는 구체적인 클래스의 코드 버그 일 수도 있고 예상되는 인수가 제공되지 않는 메서드에서 발생하는 일반 메시지 일 수도 있습니다.

+0

이 설명을 이해할 수 없습니다. modParams를 콜백 메소드의 인수로 전달하지 않습니다. 그러므로 질문을하십시오.나는 평신도의 용어에 대한 설명을 원했다. –

+0

어떤 부분이 확실합니까? 어떤 부분이 아닌가요? "당신의 코드 어딘가에"라고 말했을 때 필자가 작성한 코드가 아니라 사용하고있는 코드의 전체 본문을 의미했습니다. 예를 들어 추상 컨트롤러는 특정 수신 매개 변수가 제어 된 모델에 적용될 것으로 예상 할 수 있지만 이러한 매개 변수는 존재하지 않으며 이는 일반적인 메시지 결과입니다. 목표 된 조언을 제공하는 가장 좋은 방법은 백 트레이스를 보는 것입니다. – bishop

+0

불분명 한 부분은'객체의 집합에 매개 변수 배열 적용'입니다. 명확한 부분은 아무 것도 아닙니다. modParams 란 무엇입니까? 설정은 어디입니까? 전달 된 객체 모델, 컨트롤러 또는 뷰가 있습니까? 이것은 나쁜 발견, 누락 된 테이블 열, 나쁜 콜백 또는 다른 것의 파문입니까? 제가 modParams를 적극적으로 사용하려고하지 않기 때문에 혼란 스럽습니다. Cake가 자동으로하고있는 것입니다. 나는이 오류가 실제 문제가 발생하는 것을보다 잘 설명하도록 마법을 이해하고 싶다. 실제 객체를 의미하며 메소드 자체는 의미하지 않습니다. –

관련 문제