Support

Account

Home Forums Add-ons Repeater Field Pre-populate checkbox choices per repeater row

Solved

Pre-populate checkbox choices per repeater row

  • Hi there,

    I was wundering if the following is possible;

    1) I have a repeater in my options page to add questions to a form. Each row has a label and another repeater containing every possible answer.

    2) In one of my field groups I want to pre-populate a repeater field with rows for each question from this options page, containing:

    – a checkbox field containing all the answers for that question as choices and the question label as the checkbox field label.

    The problem is that if I use this method:
    https://www.advancedcustomfields.com/resources/acf-load_field/
    it will populate the choices for each row, but I need them to be unique on each row.

    Is this even possible or is it necessary to already have a unique field for each question in my field group in order to populate the choices uniquely?

    Thanks a lot!

  • You cannot do this using PHP. To do this you would need to write the values to a JavaScript variable on the page and then use the ACF JS API to populate the values of each row. There are no examples that I know of for this.

  • Ok thanks for your reply!

    I thought I could use the acf_add_local_field instead for this, so I added the following action that displays my checkboxes correctly now:

    add_action('acf/init',	array(&$this, 'addServiceMatchMakerFilter'));
    public function addServiceMatchMakerFilter() {
    	if (function_exists('acf_add_local_field')) {
    		$posts     = new Posts();
    		$global    = $posts->getGlobalInfo();
    		$questions = $global['match_maker_questions'];
    
    		// Add field for each match maker question
    		if (!empty($questions)) {
    			foreach ($questions as $question) {
    				$choices = [];
    
    				if (!empty($question['choices'])) {
    					foreach ($question['choices'] as $choice) {
    						$value           = $choice['choice_value'] ? $choice['choice_value'] : $choice['choice_label'];
    						$choices[$value] = $choice['choice_label'];
    					}
    				}
    
    				acf_add_local_field([
    					'key'          => 'field_' . uniqid(),
    					'label'        => $question['label'],
    					'name'         => sanitize_title($question['label']),
    					'type'         => 'checkbox',
    					'parent'       => 'field_5d3ebbd2fef0c',
    					'choices'      => $choices,
    					//'layout'       => 'horizontal',
    				]);
    			}
    		}
    	}
    }

    However, when saving my post the values from these fields are empty again (also in frontend). Any idea why this is happening?

    Thanks, Toine

  • Ah duh! This line messed it up:
    'key' => 'field_' . uniqid()

    This is different on every page load…
    Is there a best practice on how many characters this key should be?

Viewing 4 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic.

We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.