Completed
Push — master ( 4f44f9...ca5c21 )
by
unknown
07:57
created

TranslatableController::translatableAttribute()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
namespace BBSLab\NovaTranslation\Http\Controllers\TranslatableResource\Traits;
4
5
use Laravel\Nova\Fields\Field;
6
use Laravel\Nova\Fields\FieldCollection;
7
use Laravel\Nova\Http\Requests\NovaRequest;
8
9
trait TranslatableController
10
{
11
    /**
12
     * Map translatable data.
13
     *
14
     * @param  \Laravel\Nova\Http\Requests\NovaRequest  $request
15
     * @param  \Laravel\Nova\Fields\FieldCollection  $fields
16
     * @return array
17
     */
18
    protected function mapTranslatableData(NovaRequest $request, FieldCollection $fields)
19
    {
20
        $translatedData = [];
21
22
        foreach ($fields as $panel) {
23
            foreach ($panel['fields'] as $field) {
24
                /** @var \Laravel\Nova\Fields\Field $field */
25
                $localeId = $field->meta()['localeId'];
26
                if (! isset($translatedData[$localeId])) {
27
                    $translatedData[$localeId] = [];
28
                }
29
30
                $attribute = $this->translatableAttribute($field, $localeId);
31
                $translatedData[$localeId][$attribute] = $request->input($attribute.'.'.$localeId);
32
            }
33
        }
34
35
        return $translatedData;
36
    }
37
38
    /**
39
     * Return translatable attribute name.
40
     *
41
     * @param  \Laravel\Nova\Fields\Field  $field
42
     * @param  int  $localeId
43
     * @return string
44
     */
45
    protected function translatableAttribute(Field $field, int $localeId)
46
    {
47
        return substr($field->attribute, 0, strpos($field->attribute, '['.$localeId.']'));
48
    }
49
}
50