system.xml 필드 의존성


16

따라서 system.xml필드 <depends>중 하나에 태그를 추가하여 모듈 파일에서 필드 간 종속성을 설정할 수 있습니다.

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>1</field1>
    </depends>
</field2>

위의 코드 는 field2의 값이 일 때 표시됩니다 . Magento에게 값 이 OR 인지 표시하는 방법 / if를 알고 싶습니다 .field11field2field112

답변:


29

이 시도:

<depends>
    <field separator="|">
        <value>1|2|3</value>
    </field>
</depends>

이것이 효과가 있다는 것을 알고 있습니까, 아니면 그냥 놔두고 있습니까?
benmarks

1
야 ... 어떻게 모르겠지만 실제로 작동합니다. 이제 구성 섹션을 구현 한 사람들에게 말한 모든 나쁜 말에 대해 부끄럽고 죄송합니다. 어떤 이유로 든 $dependent['separator']속성 값을 반환합니다 separator. 이 의견을 공개 한 사람에게 의견을 올리십시오 (가능한 경우 두 번). 완벽하게 작동합니다. 감사. cc @benmarks
Marius

1
이것은 효과가 있습니다! = 좋은 생각입니다. 나는 당신의 말에 대해 사과 할 필요가 없다고 생각합니다 :-D
benmarks

7

[편집하다]

아래 답변에서 잘못되었습니다. 나는 이것에 7 개의 공감을 얻었으므로 그것을 삭제하지는 않을 것이다 :). 그러나 나는 그것을 편집하고있어서 당신은 모두 투표를 철회 할 수있는 기회를 갖습니다.

원래 답변

하! .. 찾았습니다.
짧은 대답 : 당신은 할 수 없습니다!
긴 대답 : 누군가가 배열과 객체의 차이점을 알고 있다면 그것을 할 수 있어야합니다.
이론적으로 이것은 작동해야합니다.

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>
           <value>1|2</value>
           <separator>|</separator>
       </field1>
    </depends>
</field2>

그러나 의존성을 처리하는 Mage_Adminhtml_Block_System_Config_Form::initFields코드에는 366 줄 주위 에이 코드가 있습니다.

if (isset($dependent['separator'])) {
    $dependentValue = explode((string)$dependent['separator'], $dependentValue);
}

$dependent항상 개체이므로 $dependent['separator']설정되지 않습니다.
위의 코드를

if (isset($dependent->separator)) {
    $dependentValue = explode((string)$dependent->separator, $dependentValue);
}

모든 것이 원활하게 작동합니다.
확장을 위해 코어를 변경할 수 없으므로 각 값마다 하나씩 1 대신 2 개의 필드를 만들거 나이 field1를 처리하고 구성 페이지에 추가하는 사용자 정의 js를 만들어야합니다.


2
젠장 나는 이런 종류의 버그를 안다 :-) 나는 당신이 그것을보고 희망? 대단한 통찰력!
Fabian Blechschmidt

1
오 좋은 조사야 셜록이 아닌가? 신고에 +1
David Manners

2
@DavidManners 초등학교 내 사랑하는 왓슨
마리우스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.