MetaModels\Attribute\Base::getFieldDefinition PHP Method

getFieldDefinition() public method

public getFieldDefinition ( $arrOverrides = [] )
    public function getFieldDefinition($arrOverrides = array())
    {
        $arrFieldDef = $this->setBaseEval($this->getBaseDefinition(), $arrOverrides);
        if ($this->isAllowedValue('trailingSlash')) {
            $trailingSlash = $this->getOverrideValue('trailingSlash', $arrOverrides);
            if ($trailingSlash != 2) {
                $arrFieldDef['eval']['trailingSlash'] = (bool) $arrOverrides['trailingSlash'];
            }
        }
        // Panel conditions.
        if ($this->isAllowedValue('filterable')) {
            $arrFieldDef['filter'] = (bool) $this->getOverrideValue('filterable', $arrOverrides);
        }
        if ($this->isAllowedValue('searchable')) {
            $arrFieldDef['search'] = (bool) $this->getOverrideValue('searchable', $arrOverrides);
        }
        return $arrFieldDef;
    }

Usage Example

 /**
  * {@inheritDoc}
  */
 public function getFieldDefinition($arrOverrides = array())
 {
     $strActiveLanguage = $this->getMetaModel()->getActiveLanguage();
     $strFallbackLanguage = $this->getMetaModel()->getFallbackLanguage();
     $arrAllColLabels = deserialize($this->get('translatedtabletext_cols'), true);
     $arrColLabels = null;
     if (array_key_exists($strActiveLanguage, $arrAllColLabels)) {
         $arrColLabels = $arrAllColLabels[$strActiveLanguage];
     } elseif (array_key_exists($strActiveLanguage, $strFallbackLanguage)) {
         $arrColLabels = $arrAllColLabels[$strFallbackLanguage];
     } else {
         $arrColLabels = array_pop(array_reverse($arrAllColLabels));
     }
     // Build DCA.
     $arrFieldDef = parent::getFieldDefinition($arrOverrides);
     $arrFieldDef['inputType'] = 'multiColumnWizard';
     $arrFieldDef['eval']['columnFields'] = array();
     $count = count($arrColLabels);
     for ($i = 0; $i < $count; $i++) {
         $arrFieldDef['eval']['columnFields']['col_' . $i] = array('label' => $arrColLabels[$i]['rowLabel'], 'inputType' => 'text', 'eval' => array());
         if ($arrColLabels[$i]['rowStyle']) {
             $arrFieldDef['eval']['columnFields']['col_' . $i]['eval']['style'] = 'width:' . $arrColLabels[$i]['rowStyle'];
         }
     }
     return $arrFieldDef;
 }