Taxonomy construction and queries
Terms, typed values, hierarchical slug creation, cycle/cross-term guards, descendants and HasTags membership.
Edit term/tag datasets and replay membership or ancestry edits. Compare persisted slugs with the package’s current hierarchy calculation after a parent rename.
Choose a scenario. Change the inputs or build a sequence of commands.
Execute the installed package against a new fictional example.
Follow the result, actual calls, generated output and integration code.
Your server-side changes are temporary. External-service examples use local response fixtures. Start with sample data.
Start with a preset, or change the input and run it.
Your result will show the values, decisions and generated output from the actual package.
Calls used by this scenario. The handbook explains setup, authorizers, storage and error recovery.
The complete response is shown as data. Wide PHP integers are transported as exact decimal strings. Values are never evaluated as PHP or JavaScript.
Run an example to inspect its response.
The last two successful run states stay in this tab’s memory. Run a changed example to compare the actual package results.
Terms, typed values, hierarchical slug creation, cycle/cross-term guards, descendants and HasTags membership.
Stored child slugs are shown faithfully; parent edits do not pretend to cascade into descendants.
Custom models/casts, authorization, migrations of existing data and any descendant cascade policy belong to the host.
Create terms and typed tags, edit ancestry, and replay membership operations against actual package models. Compare saved slugs with the hierarchy computed after an edit.
Terms and tags are numbered from 1 in builder order. Parents must already exist and belong to the same term. The value editor preserves JSON types: enter false as a boolean and an object for JSON, then inspect runtime_type in the result.
Rename and reparent invoke package model events and ancestry guards. Each returned tag includes its persisted slug and computed_hierarchy_slug. A parent rename can make these differ on descendants until those rows are explicitly updated.
Sync replaces product membership; attach and detach change selected memberships. Setting a tag inactive does not detach it. Compare product_tags with active_product_tags and the separate active term/tag scopes.
Cycle and cross-term operations are rejected through the actual model. Commands run against a fresh fixture each time; removing all commands creates the taxonomy without product membership. Soft-deleted tags can be restored explicitly.
Use Typed JSON and boolean tags, or add a JSON tag with {"width":120,"unit":"mm"} and a boolean tag with false. Sync their IDs. Expected: runtime_type shows the actual returned types and tags_by_term groups memberships by their term.
Run Rename a parent and inspect descendants. Expected: the parent uses its new slug while a child may retain its previous stored slug; computed_hierarchy_slug reveals the newly derived hierarchy. This is a data-maintenance decision, not an automatic recursive rename.
Replay Reject a cycle and Reject cross-term parent one command at a time. Expected: each illegal operation is reported as rejected and the existing valid hierarchy is retained. Move a child to a valid parent in the same term to compare success.
Run Explicit active-tag scope. Expected: tag 2 stays in product_tags but disappears from active_product_tags. Then try attach, detach, delete and restore; inspect the soft-delete marker and actual membership after every prefix.
NestedTerms describes classification and typed attributes. Stow records a chosen product and its options; Priceable selects a saved offer. Applications decide who may edit taxonomy and whether a classification affects eligibility or pricing.