Comments (3)
In this example from gitter chat:
$text = new FieldsBuilder('Text');
$text
->addText('Name', ['key' => 'my_key']);
$foo = new FieldsBuilder('foo');
$foo
->addFields($text)
->modifyField('Name', function($fieldsBuilder) {
return $fieldsBuilder
->defaultValue('Foo');
})
->setLocation('post_type', '==', 'page');
$bar = new FieldsBuilder('bar');
$bar
->addFields($text)
->modifyField('Name', function($fieldsBuilder) {
return $fieldsBuilder
->defaultValue('Bar');
})
->setLocation('post_type', '==', 'page');
This will generate the field keys field_foo_my_key
and field_bar_my_key
. There is still a fundamental issue which will prevent this example from working. Both fields attempt to use the field name Name
on the same post type. This won't work because the field names don't get namespaced by ACF unless they are part of a repeater or flexible content area. So one of the above fields must be set to use a different name in the modify callback.
I'm not sure the best solution. Should we automatically generate a namespaced field name based on their field group name? This would make retrieving the fields using get_post_meta
or ACF's get_field
less transparent, because you would have to know the formula to which a field name is modified.
Instead of simply calling get_field('Name')
in the template, you'd have to do something like get_field('foo_Name')
or know how the field was namespaced, rather than just having the 1 to 1 mapping of field definition and field retrieval.
That is why I am inclined to leave that as something to be managed in user land.
from acf-builder.
The question now becomes how to handle field groups composed with addFields
Should the key of a field being added to another, maintain its Field Group's namespace? Or should it abandon the namespace of its original field group and only take on the namespace of its new Field Group?
Given:
$banner = new FieldsBuilder('banner');
$banner
->addText('title')
->addWysiwyg('content');
$builder = new FieldsBuilder('content');
$builder
->addTextarea('summary')
->addFields($banner);
Should the keys be:
field_content_summary
field_content_banner_title
field_content_banner_content
or should they be:
field_content_summary
field_content_title
field_content_content
The latter is how it currently works. But what if the content field group already had a title
field?
There would be a collision of field keys and names. Solving the key collision issue wouldn't solve the name issue, because when you go to retrieve the value using get_field
or get_post_meta
based on the name title
, there would still be ambiguity.
Perhaps a better system would be to have some sort of collision exception being thrown that tells the user there is a configuration error.
from acf-builder.
Closing this issue. An exception will be thrown if a field name already exists for a given field group.
from acf-builder.
Related Issues (20)
- Add empty conditional info to docs HOT 1
- Will ACF 6 be supported? HOT 1
- Invalid argument supplied for foreach() in .../stoutlogic/acf-builder/src/Transform/RecursiveTransform.php on line 34 (v1.12.0) HOT 3
- ACF 6 repeater pagination not working HOT 1
- Image field return_format returns an ID instead of array or URL HOT 2
- Is there documentation about get_field_partial? HOT 1
- post_object field empty when using WPML language HOT 5
- Incorrect typing/interface? HOT 6
- Dynamically populate a field’s choices based on another field HOT 1
- ACF Builder fails silently - Sage 10 HOT 4
- Can not determine field key for repeater's collapsed value HOT 2
- ACF Extended Compatible? HOT 3
- ❤️ FAQ: difference between acf-builder and extended-acf
- Label placement 'left' doesn't work for options pages
- Feature Request - Update Default Values for Fields in Partials HOT 1
- WP-CLI Error : Segmentation fault HOT 1
- Repeater is not Working HOT 9
- ACF setLocation('page_template') Not Working HOT 2
- Migrating excisting field keys HOT 1
- Issue with WPML may require moving away from acf-builder. Is there a way to get JSON/PHP to import into ACF Pro UI? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from acf-builder.