-
-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow callable for block config options #26
base: main
Are you sure you want to change the base?
Conversation
Allow options for block config to be AJAX-derived options.
@damsfx would you be interested in looking into refactoring the options processing in backend forms in the Winter core so that we can have a helper of some sort that can be used from anywhere in order to support all of the different ways that options can be defined (I think we're up to 6 or 7 now)? |
@LukeTowers Yes, I'd like to ... but I need to know where to start and if it's within my reach. |
@LukeTowers @damsfx it's like 4am but from memory I think it happens here: https://github.com/wintercms/storm/blob/6855ef4280d2587367f6127a2bd56a89e727e490/src/Parse/Syntax/FieldParser.php#L416 Although that might just be for values defined in cms pages and not in yaml configs. @damsfx let me know how you get on and if you need help feel free to @ me :) |
Ideally, I think a trait that can process them would be beneficial, then we can use it wherever it is required :) |
I've tried to dive back into this request ... but I'm a bit lost! FieldParser.php - processOptionsToArray() :
but in options() method, the possible values are And in this plugin's Blocks.php - processInspectorConfig(): Mayday .. mayday Before going any further ... I wonder if it wouldn't be better to merge this PR and make a survey of the various places where a trait could be generalized. |
@damsfx what do you think about supporting calling a method inside of the PHP code of the block file as a way to get the options; similar to the model derived options in Forms? something like: config:
bg_color:
label: Background color
type: dropdown
span: auto
options: myMethod ==
<?php
function myMethod(): array
{
return ['key' => 'value'];
}
?>
== As well as the other two ways: function getBgColorOptions(?string $value = null, array $data = []): array
{
return ['key' => 'value'];
} and function getDropdownOptions(string $name, ?string $value = null, array $data = []): array
{
return ['key' => 'value'];
} |
@LukeTowers that's would be nice too! Are you also thinking of keeping the option of calling a static method? |
@damsfx yes, I'm proposing that we could merge this to support the callable if we also add support for the derived options, then later on we can look at making a helper to standardize it across all of the places that make use of options in Winter. |
Allow options for block config to be AJAX-derived options.
Supplying the dropdown options in the helper class :
or returns different options depending on the field name