레이아웃 XML 파일에서 해당 메서드를 호출 할 수 없습니다. 레이아웃 XML 파일의 <action/>
노드는 주로 문자열을 매개 변수로 전달하는 데 사용됩니다 (아래 참조). 즉, 형식 힌트가 명시 적으로 개체를 요구하는 메서드를 의미합니다.
Mage_Core_Block_Abstract $block
은 XML에서 호출 할 수 없습니다. 이것은 시스템 구현에 사용되는 방법이며 레이아웃 XML 시스템은 우연히 호출하지 못하도록 방지하기위한 것입니다.
또한, 당신은 당신이합니다 (<reference/>
태그는 최고 수준의 레이아웃 핸들의 즉각적인 조상으로 만 유효
<reference name="newParent"/>
참조를 사용하여 발생한 다른 행동을하려는 방법으로 참조를 사용할 수 없습니다 다른 곳에서는 의도하지 않은 구현 부작용이 있습니다. 나는이 행동에 의존하는 것에 조심해야합니다.)
마지막으로 은 레이아웃의 "도우미 매개 변수"기능을 사용하여 원하는 것을 얻을 수 있습니다. 체계.
<action method="setParentBlock">
<block helper="core/data/someMethod" arg1="foo" ...>
</action>
당신은 헬퍼 클래스
Mage::helper('core/data');
을 찾을 수 있다면
someMethod
당신이
Mage::helper('core/data')->someMethod(parameters,from,attributes,above);
하지만 블록의 부모 변경 한 후 종류의 학대 중순을 렌더링하고있는 블록을 반환
레이아웃 시스템, 나는 그것을 반대하는 조언을하고 싶지 않다면 (당신이 원하는 것을 얻을 수있는 다른 방법이 없다면).
귀하의 절대적 권리를 , 그리고 그것이 어떻게 작동 하는지를 추적 한 후에 .. :). 그것이 정말로 중반 렌더링입니까? 나는 잘 모르겠다. 이미 정의 된 레이아웃 블록을 가져갈 수없고 간단히 다른 부모 이름을 선택하여 레이아웃 블록을 재배치 할 수 없다는 것이 이상합니다. 그것은 꼭 필요한 것은 아니지만 더 우아했을 것입니다. – user76568
@dror 아래의 Ben의 대답을 참조하십시오. 또한'unsetChild'와'setChild'를보십시오. 그게 보통 사람들이 당신이 당신의 코멘트에 묘사 한 것을 어떻게 성취하는지입니다. 그리고 네, 정말 중반 렌더링입니다. –
내 특정 경우에는 기본 레이아웃의 블록에 별칭/특성이 없습니다. 따라서 un/setChild ..를 사용할 수 없습니다. – user76568