๐งฉ Architecture & Core Logic
- Super Powers
- Joomla Powers
- Compile Native Components, Plugins & Modules
- Multi-Version Support
- Conditional Logic Injection
- Reusable Admin Views
- Dynamic GET Builder
- Round-Trip Code Integration
- Custom Admin Views
- Site Views
- Dynamic Dashboards
- Model Linking Between Views
- Shared Field Reuse Across Views
- Drag & Drop Field Mapping
- Dynamic Field Visibility
- Independent Packaging
๐ Joomla CMS Integration
๐งฑ Custom Code System (Powerful Dual Feature)
๐ Field Type System
๐ Snippets, Templates, Layouts, Libraries
- Snippets Reusable Html Blocks
- Layouts Reusable Php Render Templates
- Templates Page Level Views Linked To Custom Admin Site Views
- Libraries JS CSS Assets Linked To UI
- CDN Local Toggle For Library Delivery
- Media Folder Injection With Override Support
- Repository Push Pull Reset Workflow
- Init Snippets Layouts Templates Via Gui
๐ฆ Packages
๐งฉ Architecture & Core Logic
๐ File & Code Management
๐ง Code Reuse & Blueprints
๐ Joomla CMS Integration
๐จ Visual GUI & UX
๐ Internationalization
๐ฆ Packaging & Distribution
โ๏ธ Compiler Engine Features
๐งฑ Custom Code System
๐ Field Type System
๐ Dynamic GET (Visual SQL Engine)
๐ Snippets, Templates, Layouts, Libraries
๐ Documentation & Metadata
๐ Analytics & Insights
๐งฉ Architecture & Core Logic
- Super Powers
- Joomla Powers
- Compile Native Components, Plugins & Modules
- Multi-Version Support
- Conditional Logic Injection
- Reusable Admin Views
- Dynamic GET Builder
- Round-Trip Code Integration
- Custom Admin Views
- Site Views
- Dynamic Dashboards
- Model Linking Between Views
- Shared Field Reuse Across Views
- Drag & Drop Field Mapping
- Dynamic Field Visibility
- Independent Packaging
๐ Joomla CMS Integration
- Token Integration
- ACL Per View, Field, Item
- Field-Based Joomla Config Generation
- Support For Joomla Categories/Tags/Custom Fields
- CLI-Ready Components
- Joomla Update Server Integration
- Version-Aware Language String Compilation
- Remote Publishing to Custom Repo Update Streams
๐ Field Type System
- Field Types Define Templates And Data Types
- Gui Defined Rules Required Unique Nullable
- Save Get Hooks Per Field
- Database Schema Auto Generated From Field Settings
- Per Display Field Rendering Config List Edit
- Create Dynamic Models With Modals Selectors
- Conditional Js And Css Per Field
๐ Snippets, Templates, Layouts, Libraries
- Snippets Reusable Html Blocks
- Layouts Reusable Php Render Templates
- Templates Page Level Views Linked To Custom Admin Site Views
- Libraries JS CSS Assets Linked To UI
- CDN Local Toggle For Library Delivery
- Media Folder Injection With Override Support
- Repository Push Pull Reset Workflow
- Init Snippets Layouts Templates Via Gui
Save/Get Hooks per Field
Add custom logic that runs automatically when a fieldโs data is loaded or saved โ without writing external plugins or overriding models
What It Does
JCB allows each field to define PHP "hooks" that are triggered:
- onSave: when the fieldโs data is being saved
- onGet: when the fieldโs data is being retrieved for display or processing
These hooks are per-field, defined visually in the GUI, and are injected directly into the generated model or controller logic during compile. This provides pinpoint customization without breaking Joomla MVC conventions.
Types of Hooks
๐ onSave
Run logic right before the field is stored in the database:
- Sanitize or format input
- Combine multiple inputs into a single field
- Generate a slug or token
- Apply conditional business logic (e.g., if X, then modify Y)
๐ค onGet
Run logic when data is fetched from the database before it's displayed or processed:
- Reformat values (e.g., date or currency display)
- Replace tokens or placeholders
- Inject dynamic data or perform lazy joins
- Translate stored codes into readable text
How to Configure in JCB
- Go to Field โ Rules/Logic โ โCustom Save Codeโ or โCustom Get Codeโ
- Use valid PHP inside the textarea (no PHP tags needed)
- Reference the current field value as
$value
- Return the transformed value at the end
Example
For a field named alias
:
On Save (slugify input):
$value = strtolower(preg_replace('/[^a-z0-9]+/', '-', $value));
return trim($value, '-');
On Get (wrap in badge for display):
return '<span class="uk-label">' . $value . '</span>';
Benefits
- โ๏ธ Encapsulated logic per field: Keep save/get behavior tightly scoped to the data it affects.
- ๐งฑ Reduces controller/model overrides: No need for post-processing elsewhere โ it happens inline.
- ๐งช Round-trip compatible: Hooks are stored in the database and regenerate during every compile.
- ๐ Repeatable across components: Field types can carry these hooks by default to simplify reuse.
Conclusion
Save/Get hooks give you field-level logic injection with zero boilerplate. Whether you're transforming data, creating calculated values, or modifying output dynamically, these hooks make your fields smarter โ right from the GUI.