administrcms/form

View on GitHub
src/Field/Translated.php

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
<?php

namespace Administr\Form\Field;

use Administr\Form\FormBuilder;
use Administr\Localization\Models\Language;

class Translated extends Tabs
{
    protected $builder;

    public function __construct(\Closure $definition)
    {
        $this->builder = new FormBuilder();
        call_user_func($definition, $this->builder);

        parent::__construct('translated', Language::pluck('name', 'id')->toArray());

        $this->setView('administr/form::tabs');

    }

    public function render(array $attributes = [], array $viewData = [])
    {
        $this->define(function(array $builders) {
            foreach($builders as $languageId => $builder) {
                $dataSource = $this->builder->dataSource();
                $builder->dataSource($dataSource);

                foreach ($this->builder->fields() as $name => $field) {
                    $field = clone $field;
                    $field->setName("{$field->getName()}[{$languageId}]");
                    $field->appendOption('translated', true);

                    if ($value = $builder->getValue($name, $languageId)) {
                        $field->appendOption('value', $value);
                        $field->setValue($value);
                    }

                    $builder->add($field);
                }
            }
        });

        return parent::render($attributes, $viewData);
    }

    public function builder($tab = null)
    {
        return $this->builder;
    }
}