---
title: "Validácia pri publikovaní — Workflows for Laravel | Roundly"
description: "Validácia konceptov a grafov pred publikovaním — ValidationReport, jedenásť prechodov a všetky strojovo čitateľné validačné kódy s ich významom."
url: https://roundly-consulting.com/sk/open-source/navody/workflows-for-laravel/validacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Workflows for Laravel](https://roundly-consulting.com/sk/open-source/navody/workflows-for-laravel.md)

# Validácia pri publikovaní

```php
$report = Workflows::definition('purchase-approval', $team)->validate();          // the draft
$report = Workflows::versions()->validate($graph, 'purchase_request', $team);     // any graph
$report->valid();          // no errors (warnings don't block)
$report->errors;           // list<ValidationError>
$report->errorsOnly();     // and ->warnings()
$report->find(ValidationCode::UnknownField, 'check');
$report->has(ValidationCode::UnknownField, 'check');
$report->toArray();
```

ValidationError{code: ValidationCode, severity: error|warning, message (preložená), node: ?string, edge: ?{from, to, outcome}, path: ?string (JSON pointer), params: array}. Správy nikdy neobsahujú názov triedy. publish() spustí úplnú validáciu pod zámkom definície a pri chybách vyhodí InvalidGraphException (s reportom); jej správa uvedie prvé problémy. Uloženie konceptu kontroluje len štruktúru:

```php
use RoundlyConsulting\Workflows\Exceptions\InvalidGraphException;

try {
    Workflows::definition('purchase-approval', $team)->publish(by: $admin);
} catch (InvalidGraphException $e) {
    $e->validationReport()->toArray();   // [{code, severity, message, node, edge, path, params}, …]
}
```

## Prechody

Spustia sa všetky prechody a zbierajú chyby; predčasne skončí len štrukturálne zlyhanie:

- Štruktúra: verzia schémy, tvar uzlov a hrán, vzor id, duplicitné id, visiace hrany, stropy veľkosti.
- Katalóg: známe typy uzlov; prepojený typ, ktorého balík chýba → adapter\_missing s params.package.
- Konfigurácia: JSON schéma typu (invalid\_config + path), potom jeho sémantické kontroly, potom bloky eskalácií.
- Spúšťač a koniec: presne jeden spúšťač, aspoň jeden koniec, žiadna hrana do spúšťača ani z uzla end.
- Výsledky: každý povinný výsledok má práve jednu hranu; žiadne neznáme ani duplicitné výsledky.
- Dosiahnuteľnosť: každý uzol je dosiahnuteľný zo spúšťača.
- Cykly: po odstránení strážených hrán — hrany continue uzla loop a výstupu z delay s kladným for — nezostane žiadny cyklus.
- Polia a odkazy: cesty k poliam, operátory, typy hodnôt, zapisovateľnosť, vstupy, odkazy na predchodcov, určenie vlastníka subjektu.
- Aktér: on\_behalf\_of potrebuje spúšťač s používateľom.
- Príznaky z importu: nevyriešené príznaky na kontrolu zo šablóny.
- Naprieč definíciami: ciele start\_workflow pre vlastníka existujú, majú ručný spúšťač a dostanú povinné vstupy; statické spustenie seba samého bez wait: false je varovanie.

## Kódy

| Kód | Význam |
| --- | --- |
| `invalid_schema_version` | schema nie je roundly.workflows.graph/v1 |
| `invalid_structure` | Tvar dokumentu je nesprávny |
| `invalid_node_id` | Id porušuje ^\[a-z\]\[a-z0-9\_\]{0,63}$ (správa nikdy nezopakuje odoslané id) |
| `duplicate_node` | Dva uzly majú rovnaké id |
| `dangling_edge` | Hrana ukazuje na neznámy uzol |
| `graph_too_large` | Prekročený strop veľkosti |
| `unknown_node_type` | Žiadny typ kroku s týmto kľúčom |
| `adapter_missing` | Typ potrebuje balík, ktorý nie je nainštalovaný |
| `invalid_config` | Konfigurácia porušuje schému alebo pravidlá typu |
| `trigger_count` | Nie je presne jeden spúšťač |
| `no_end` | Chýba uzol end |
| `trigger_has_incoming` | Do spúšťača vedie hrana |
| `end_has_outgoing` | Z uzla end vychádza hrana |
| `missing_outcome` | Povinný výsledok nemá hranu |
| `unknown_outcome` | Hrana uvádza výsledok, ktorý typ nemá |
| `duplicate_outcome` | Dve hrany pre jednu dvojicu (from, outcome) |
| `outcome_label_required` | Hrana bez výsledku z uzla, ktorého výsledky nie sú len next (params: outcome, výsledky typu) |
| `unreachable_node` | Uzol nie je dosiahnuteľný zo spúšťača |
| `cycle_without_breaker` | Cyklus neprechádza hranou continue uzla loop ani oneskorením s kladným for (params.nodes) |
| `unknown_field` | Cesta k poľu nie je registrovaná |
| `operator_not_allowed` | Operátor sa nehodí k typu poľa |
| `invalid_value` | Literál nesprávneho typu |
| `unknown_input` | input.\* nie je deklarovaný |
| `invalid_reference` | steps.<id> nie je predchodca |
| `field_not_writable` | set\_field na poli, ktoré nie je zapisovateľné alebo je stavom lifecycle |
| `subject_owner_unresolvable` | Definícia s vlastníkom nad typom subjektu bez určenia vlastníka |
| `unknown_subject_type` | Typ subjektu definície nie je registrovaný |
| `actor_requires_user` | on\_behalf\_of so spúšťačom schedule alebo webhook |
| `unresolved_import_reference` | Príznak na kontrolu zo šablóny je stále otvorený |
| `unknown_definition` | Cieľ start\_workflow pre vlastníka neexistuje |
| `child_trigger_not_manual` | Cieľ start\_workflow nemá ručný spúšťač |
| `missing_child_input` | Povinný vstup dieťaťa nie je namapovaný |
| `self_start` | Varovanie: definícia spúšťa samu seba |
| `unknown_calendar` | Názov kalendára pre vlastníka nie je známy |
| `roles_unavailable` | Strana typu role bez vyhodnocovania rolí |
| `invalid_cron` | Cron výraz, ktorý parser odmietne (params.token) |
| `condition_too_complex` | Príliš hlboká alebo s priveľa klauzulami |
| `unknown_transition` | Prepojenie s lifecycle: taký prechod neexistuje |
| `unknown_notification_type` | Prepojenie s notifications: taký typ neexistuje |
| `unknown_form` | Spúšťač s formulárom uvádza formulár, ktorý forms-for-laravel nemá (bez nainštalovaného forms: adapter\_missing) |

Vstup z prehliadača je nedôveryhodný: validácia aj uloženie konceptu odpovedia na akýkoľvek dokument — nesprávne typy na každej úrovni, hlboké vnorenie, obrovské reťazce — cez ValidationReport alebo InvalidGraphException, nikdy TypeError, a žiadna chybová správa nezopakuje odoslanú hodnotu.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/workflows-for-laravel.md)
