Skip to content

Commit

Permalink
docs(resources): modifyRawValue and modifyRawValue methods
Browse files Browse the repository at this point in the history
  • Loading branch information
DissNik committed Jul 2, 2024
1 parent a832d23 commit 1a79ea7
Show file tree
Hide file tree
Showing 6 changed files with 180 additions and 12 deletions.
51 changes: 51 additions & 0 deletions resources/views/pages/en/fields/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
['url' => '#wrapper', 'label' => 'Wrapper'],
['url' => '#reactive', 'label' => 'Reactive'],
['url' => '#on-change', 'label' => 'onChange methods'],
['url' => '#for-value', 'label' => 'Methods for values'],
['url' => '#scheme', 'label' => 'Scheme field\'s work'],
]
]"
Expand Down Expand Up @@ -1207,6 +1208,56 @@ public function someMethod(MoonShineRequest $request): void
<x-link link="{{ to_page('recipes') }}#sorting-for-cards-builder">Recipes</x-link>
</x-moonshine::alert>

<x-sub-title id="for-value">Methods for values</x-sub-title>

<x-moonshine::divider label="Get value from source" />

<x-p>
The <code>fromRaw()</code> method allows you to add a closure to get the final value from the original.<br />
This closure is used when importing data.
</x-p>

<x-code language="php">
/**
* @param Closure(mixed $raw, static): mixed $callback
* @return $this
*/
fromRaw(Closure $callback) // [tl! focus]
</x-code>

<x-code language="php">
use App\Enums\StatusEnum;
use MoonShine\Fields\Enum;

Enum::make('Status')
->attach(StatusEnum::class)
->fromRaw(fn(string $raw, Enum $ctx) => StatusEnum::tryFrom($raw)) // [tl! focus]
</x-code>

<x-moonshine::divider label="Get raw value" />

<x-p>
The <code>modifyRawValue()</code> method allows you to add a closure to obtain the raw value.<br />
This closure is used when exporting data.
</x-p>

<x-code language="php">
/**
* @param Closure(mixed $raw, static): mixed $callback
* @return $this
*/
modifyRawValue(Closure $callback) // [tl! focus]
</x-code>

<x-code language="php">
use App\Enums\StatusEnum;
use MoonShine\Fields\Enum;

Enum::make('Status')
->attach(StatusEnum::class)
->modifyRawValue(fn(StatusEnum $raw, Enum $ctx) => $raw->value)) // [tl! focus]
</x-code>

<x-sub-title id="scheme">Scheme field's work</x-sub-title>

<x-link link="{{ asset('files/field_scheme.pdf') }}" target="_blank">
Expand Down
15 changes: 15 additions & 0 deletions resources/views/pages/en/resources/events.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,21 @@ protected function afterMassDeleted(array $ids): void
{
// Logic here
}

public function beforeImportFilling(array $data): array
{
return $data;
}

public function beforeImported(Model $item): Model
{
return $item;
}

public function afterImported(Model $item): Model
{
return $item;
}
</x-code>

</x-page>
30 changes: 24 additions & 6 deletions resources/views/pages/en/resources/import_export.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,21 @@ public function export(): ?ExportHandler
</x-p>

<x-code language="php">
useOnImport(mixed $condition = null)
useOnImport(mixed $condition = null, ?Closure $fromRaw = null)
</x-code>

<x-ul>
<li><code>$condition</code> - method execution condition,</li>
<li><code>$fromRaw</code> - a closure that returns values from the raw.</li>
</x-ul>

<x-code language="php">
namespace App\MoonShine\Resources;

use App\Enums\StatusEnum;
use App\Models\Post;
use MoonShine\Fields\Enum;
use MoonShine\Fields\ID;
use MoonShine\Fields\Text;
use MoonShine\Resources\ModelResource;

class PostResource extends ModelResource
Expand All @@ -94,8 +100,9 @@ public function fields(): array
ID::make()
->useOnImport(), // [tl! focus]

Text::make('Title', 'title')
->useOnImport() // [tl! focus]
Enum::make('Status')
->attach(StatusEnum::class)
->useOnImport(fromRaw: static fn(string $raw, Enum $ctx) => StatusEnum::tryFrom($raw)), // [tl! focus]
];
}

Expand Down Expand Up @@ -212,13 +219,20 @@ public function boot(): void
</x-p>

<x-code language="php">
showOnExport(mixed $condition = null)
showOnExport(mixed $condition = null, ?Closure $modifyRawValue = null)
</x-code>

<x-ul>
<li><code>$condition</code> - method execution condition,</li>
<li><code>$modifyRawValue</code> - closure to get the raw value.</li>
</x-ul>

<x-code language="php">
namespace App\MoonShine\Resources;

use App\Enums\StatusEnum;
use App\Models\Post;
use MoonShine\Fields\Enum;
use MoonShine\Fields\Text;
use MoonShine\Resources\ModelResource;

Expand All @@ -234,7 +248,11 @@ public function fields(): array
{
return [
Text::make('Title', 'title')
->showOnExport() // [tl! focus]
->showOnExport(), // [tl! focus]

Enum::make('Status')
->attach(StatusEnum::class)
->showOnExport(modifyRawValue: static fn(StatusEnum $raw, Enum $ctx) => $raw->value), // [tl! focus]
];
}

Expand Down
51 changes: 51 additions & 0 deletions resources/views/pages/ru/fields/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
['url' => '#wrapper', 'label' => 'Wrapper'],
['url' => '#reactive', 'label' => 'Реактивность'],
['url' => '#on-change', 'label' => 'Методы onChange'],
['url' => '#for-value', 'label' => 'Методы для значений'],
['url' => '#scheme', 'label' => 'Схема работы поля'],
]
]"
Expand Down Expand Up @@ -1207,6 +1208,56 @@ public function someMethod(MoonShineRequest $request): void
<x-link link="{{ to_page('recipes') }}#sorting-for-cards-builder">Recipes</x-link>
</x-moonshine::alert>

<x-sub-title id="for-value">Методы для значений</x-sub-title>

<x-moonshine::divider label="Получение значение из исходного" />

<x-p>
Метод <code>fromRaw()</code> позволяет добавить замыкание для получения итоговое значение из исходного.<br />
Данное замыкание используется при импорте данных.
</x-p>

<x-code language="php">
/**
* @param Closure(mixed $raw, static): mixed $callback
* @return $this
*/
modifyRawValue(Closure $callback) // [tl! focus]
</x-code>

<x-code language="php">
use App\Enums\StatusEnum;
use MoonShine\Fields\Enum;

Enum::make('Status')
->attach(StatusEnum::class)
->fromRaw(fn(string $raw, Enum $ctx) => StatusEnum::tryFrom($raw)) // [tl! focus]
</x-code>

<x-moonshine::divider label="Получения необработанного значения" />

<x-p>
Метод <code>modifyRawValue()</code> позволяет добавить замыкание для получения необработанного значения.<br />
Данное замыкание используется при экспорте данных.
</x-p>

<x-code language="php">
/**
* @param Closure(mixed $raw, static): mixed $callback
* @return $this
*/
modifyRawValue(Closure $callback) // [tl! focus]
</x-code>

<x-code language="php">
use App\Enums\StatusEnum;
use MoonShine\Fields\Enum;

Enum::make('Status')
->attach(StatusEnum::class)
->modifyRawValue(fn(StatusEnum $raw, Enum $ctx) => $raw->value)) // [tl! focus]
</x-code>

<x-sub-title id="scheme">Схема работы поля</x-sub-title>

<x-link link="{{ asset('files/field_scheme.pdf') }}" target="_blank">
Expand Down
15 changes: 15 additions & 0 deletions resources/views/pages/ru/resources/events.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,21 @@ protected function afterMassDeleted(array $ids): void
{
// Logic here
}

public function beforeImportFilling(array $data): array
{
return $data;
}

public function beforeImported(Model $item): Model
{
return $item;
}

public function afterImported(Model $item): Model
{
return $item;
}
</x-code>

</x-page>
30 changes: 24 additions & 6 deletions resources/views/pages/ru/resources/import_export.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,21 @@ public function export(): ?ExportHandler
</x-p>

<x-code language="php">
useOnImport(mixed $condition = null)
useOnImport(mixed $condition = null, ?Closure $fromRaw = null)
</x-code>

<x-ul>
<li><code>$condition</code> - условие выполнения метода,</li>
<li><code>$fromRaw</code> - замыкание возвращающее значения из исходного.</li>
</x-ul>

<x-code language="php">
namespace App\MoonShine\Resources;

use App\Enums\StatusEnum;
use App\Models\Post;
use MoonShine\Fields\Enum;
use MoonShine\Fields\ID;
use MoonShine\Fields\Text;
use MoonShine\Resources\ModelResource;

class PostResource extends ModelResource
Expand All @@ -94,8 +100,9 @@ public function fields(): array
ID::make()
->useOnImport(), // [tl! focus]

Text::make('Title', 'title')
->useOnImport() // [tl! focus]
Enum::make('Status')
->attach(StatusEnum::class)
->useOnImport(fromRaw: static fn(string $raw, Enum $ctx) => StatusEnum::tryFrom($raw)), // [tl! focus]
];
}

Expand Down Expand Up @@ -212,13 +219,20 @@ public function boot(): void
</x-p>

<x-code language="php">
showOnExport(mixed $condition = null)
showOnExport(mixed $condition = null, ?Closure $modifyRawValue = null)
</x-code>

<x-ul>
<li><code>$condition</code> - условие выполнения метода,</li>
<li><code>$modifyRawValue</code> - замыкание для получения необработанного значения.</li>
</x-ul>

<x-code language="php">
namespace App\MoonShine\Resources;

use App\Enums\StatusEnum;
use App\Models\Post;
use MoonShine\Fields\Enum;
use MoonShine\Fields\Text;
use MoonShine\Resources\ModelResource;

Expand All @@ -234,7 +248,11 @@ public function fields(): array
{
return [
Text::make('Title', 'title')
->showOnExport() // [tl! focus]
->showOnExport(), // [tl! focus]

Enum::make('Status')
->attach(StatusEnum::class)
->showOnExport(modifyRawValue: static fn(StatusEnum $raw, Enum $ctx) => $raw->value), // [tl! focus]
];
}

Expand Down

0 comments on commit 1a79ea7

Please sign in to comment.