FOF30\Factory\Scaffolding\Layout\BrowseErector::applyModelField PHP Method

applyModelField() private method

private applyModelField ( DataModel $model, SimpleXMLElement &$headerSet, SimpleXMLElement &$fieldSet, $fieldName, $modelName )
$model FOF30\Model\DataModel
$headerSet SimpleXMLElement
$fieldSet SimpleXMLElement
    private function applyModelField(DataModel $model, \SimpleXMLElement &$headerSet, \SimpleXMLElement &$fieldSet, $fieldName, $modelName)
    {
        // This will fail if the model is invalid, e.g. we have example_foobar_id but no #__example_foobars table. The
        // error will balloon up the stack and the field will be rendered as simple numeric field instead of a Model
        // field.
        /** @var DataModel $foreignModel */
        $foreignModel = $model->getContainer()->factory->model($modelName);
        $value_field = $foreignModel->getKeyName();
        if ($foreignModel->hasField('title')) {
            $value_field = $foreignModel->getFieldAlias('title');
        }
        $langDefs = $this->getFieldLabel($fieldName);
        $this->addString($langDefs['label']['key'], $langDefs['label']['value']);
        $this->addString($langDefs['desc']['key'], $langDefs['desc']['value']);
        $header = $headerSet->addChild('header');
        $header->addAttribute('name', $fieldName);
        $header->addAttribute('type', 'Model');
        $header->addAttribute('model', $modelName);
        $header->addAttribute('key_field', $foreignModel->getKeyName());
        $header->addAttribute('value_field', $value_field);
        $header->addAttribute('label', $langDefs['label']['key']);
        $header->addAttribute('sortable', 'true');
        $field = $fieldSet->addChild('field');
        $field->addAttribute('name', $fieldName);
        $field->addAttribute('type', 'Model');
        $field->addAttribute('model', $modelName);
        $field->addAttribute('key_field', $foreignModel->getKeyName());
        $field->addAttribute('value_field', $value_field);
    }