From ae7bf1614f38bd75cd72240f66b0785a19998402 Mon Sep 17 00:00:00 2001 From: Hussein Al Hammad Date: Fri, 28 Jun 2024 17:56:40 +0400 Subject: [PATCH] Entry: validate data with collection blueprint --- .../repositories/entry-repository.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/content/collections/repositories/entry-repository.md b/content/collections/repositories/entry-repository.md index 6c6f1ab7..c1663c67 100644 --- a/content/collections/repositories/entry-repository.md +++ b/content/collections/repositories/entry-repository.md @@ -242,6 +242,38 @@ $entry->afterSave(function ($entry) { $entry->save(); ``` +### Validate entry data + +A Collectiion Blueprint can be used to validate the data before you use it to create an entry. This relies on the same field validation rules you already have in the Blueprint. + +```php +use Statamic\Facades\Blueprint; +use Statamic\Facades\Entry; + +$data = [ + 'title' => 'Statamic is awesome', + 'slug' => 'statamic-is-awesome', + 'foo' => 'bar', +]; + + +$validData = Blueprint::setDirectory('resources/blueprints/collections/article') + ->find('article') + ->fields() + ->addValues($data) + ->validator()->validate(); + + +$entry = Entry::make() + ->collection('article') + ->slug(data_get($validData, 'slug')) + ->published() + ->data($validData); + + +$entry->save(); +``` + ### Localization #### Localizing an entry