SLB: Notes – Admin: Option Page Building
Goal
- Allow
Options
class to handle as much of option-centric operations as possible
Requirements
- Register option building context/layouts
- Including using callbacks
- Pass layout/context when
options->build()
called - Retrieve context properties
- Build options according to properties
Issues
add_settings_section()
only works on options pages in Settings admin section
Methodology
General
- Pass options instance as reference
- So that settings are properly saved
- Build page
- Build Form
?
How/where should form wrapper for options be generated?Options
orAdmin
class?A:
Options
class+
Validation method will work in tandem with form building- Check for form submission
- Validate submission
- Save options
Passing options as reference (options)
- Callback/options in single parameter
- Example
array( "options" => &$options, "callback" => $this->m('callback') )
+
Flexible: Pass options and/or callback (or neither)-
More typing for each menu- Must creating associative array no matter what to pass any values
~
Similar to title (title, menu, etc.)+
Cuts down on parameter count: by grouping parameters in array
Registering Contexts/Layouts
?
Context or layout? Which to extend? (Options)
- Context
- Register context-specific layouts, values, defaults, etc.
+
Contains layouts & more-
Must be developed from scratch?
Overlapping existing layout functionality?- Layout
-
Currently implemented for field items, not collections- Solution needs to allow for collection-wide processing
- Example: Admin layout
{form_start}{collection_items}{submit_button}{form_end}
- Need to register handlers for various placeholders
- Layout passed to
options->build()
as argument$options->build(array('layout' => 'admin'));