示例#1
0
文件: Form.php 项目: rorteg/magento2
 /**
  * Apply element dependencies from configuration
  *
  * @param Varien_SimpleXml_Element $element
  * @param Varien_SimpleXml_Element $section
  * @param Varien_SimpleXml_Element $group
  * @param string $elementId
  * @param string $fieldPrefix
  */
 protected function _processElementDependencies($element, $section, $group, $elementId, $fieldPrefix = '')
 {
     foreach ($element->depends->children() as $dependent) {
         /* @var $dependent Mage_Core_Model_Config_Element */
         $dependentId = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $dependent->getName();
         $shouldBeAddedDependence = true;
         $dependentValue = (string) $dependent;
         if (isset($dependent['separator'])) {
             $dependentValue = explode((string) $dependent['separator'], $dependentValue);
         }
         $dependentFieldName = $fieldPrefix . $dependent->getName();
         $dependentField = $group->fields->{$dependentFieldName};
         /*
          * If dependent field can't be shown in current scope and real dependent config value
          * is not equal to preferred one, then hide dependence fields by adding dependence
          * based on not shown field (not rendered field)
          */
         if (!$this->_canShowField($dependentField)) {
             $dependentFullPath = $section->getName() . '/' . $group->getName() . '/' . $fieldPrefix . $dependent->getName();
             $dependentValueInStore = Mage::getStoreConfig($dependentFullPath, $this->getStoreCode());
             if (is_array($dependentValue)) {
                 $shouldBeAddedDependence = !in_array($dependentValueInStore, $dependentValue);
             } else {
                 $shouldBeAddedDependence = $dependentValue != $dependentValueInStore;
             }
         }
         if ($shouldBeAddedDependence) {
             $this->_getDependence()->addFieldMap($elementId, $elementId)->addFieldMap($dependentId, $dependentId)->addFieldDependence($elementId, $dependentId, $dependentValue);
         }
     }
 }