5

Cakephp 3 create a radio container with label -> input like that

<div class="radio">
    <label class="radio-acces-checked" for="condition-access-1">
      <input id="condition-access-1" type="radio" value="1" name="condition_access">
      Free access
    </label>
</div>
...

I would like change structure but it does not work, it's always the same strucure... Do you have an idea about how to solve my problem ?

$myTemplates = [
  'radioWrapper' => '<div class="radio">{{label}}{{input}}</div>'
];
echo $this->Form->radio('condition_access', [
      ['value' => 1, 'text' => __('Free Access')],
      ['value' => 2, 'text' => __('Payment Access')],
      ['value' => 3, 'text' => __('Reduce price')]
    ]);
1
  • 1
    Where do you set the template? Commented Jan 12, 2016 at 8:57

1 Answer 1

11

You need to set the nestingLabel template:

echo $this->Form->input('condition_access', [
    'type' => 'radio',
    'options' => [
        ['value' => 1, 'text' => __('Free Access')],
        ['value' => 2, 'text' => __('Payment Access')],
        ['value' => 3, 'text' => __('Reduce price')]
    ],
    'templates' => [
        'nestingLabel' => '{{hidden}}<label{{attrs}}>{{text}}</label>{{input}}',
        'radioWrapper' => '<div class="radio">{{label}}</div>'
    ]
]);

Output:

<div class="input radio">
    <label>Condition Access</label>
    <input name="condition_access" value="" type="hidden">
    <div class="radio">
        <label for="condition-access-1">Free Access</label>
        <input name="condition_access" value="1" id="condition-access-1" type="radio">
    </div>
    <div class="radio">
        <label for="condition-access-2">Payment Access</label>
        <input name="condition_access" value="2" id="condition-access-2" type="radio">
    </div>
    <div class="radio">
        <label for="condition-access-3">Reduce price</label>
        <input name="condition_access" value="3" id="condition-access-3" type="radio">
    </div>
</div>
Sign up to request clarification or add additional context in comments.

3 Comments

Is there any way to place some HTML in the templates so I could do something better in labels? book.cakephp.org/3.0/en/views/helpers/… {{input}}<label{{attrs}}>{{text}} {{SOME HTML}}</label>
@PatricePoliquin You can add whatever you want in templates, as long as it does not mess up with the template engine (e.g. avoid using {{ or }}).
@Holt Would it be possible for me to add additonnal HTML after each {{text}} (<label for="condition-access-1">Payment Access <b>$1.00 / month "</label>) ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.