我创建了一个多无线电传递选项:
$this->Form->radio(
'edu_tests_items.0.edu_sheets_items_grade_id',
$eduSheetsGradesItems,
['autocomplete' => 'off']
);
每个$eduSheetsGradesItems
的内容如下:
(int) 0 => [
'value' => (int) 1,
'text' => 'Mal',
'label' => [
'class' => 'btn btn-danger'
],
'class' => 'btn btn-danger'
],
然后我为每个单选按钮组获取了这个html(这里我只显示了第一个标签元素)
<input name="edu_tests_items[0][edu_sheets_items_grade_id]" value="" type="hidden">
<label for="edu-tests-items-0-edu-sheets-items-grade-id-1">
<input
name="edu_tests_items[0][edu_sheets_items_grade_id]"
value="1"
class="btn btn-danger"
id="edu-tests-items-0-edu-sheets-items-grade-id-1"
autocomplete="off"
type="radio">
Mal
</label>
我尝试做的是为标签元素(示例中为btn btn-danger
)设置一个特定的类(每个单选按钮标签不同),但我无法弄清楚如何。
答案 0 :(得分:2)
单选小部件不支持单个无线标签配置,它仅支持所有标签(current not properly documented in the Cookbook)的配置,可以通过<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Commentaire_blog
*
* @ORM\Table(name="commentaire_blog")
* @ORM\Entity(repositoryClass="AppBundle\Repository\Commentaire_blogRepository")
*/
class Commentaire_blog
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="usernamne", type="string", length=255)
*/
private $usernamne;
/**
* @var string
*
* @ORM\Column(name="message", type="text")
*/
private $message;
/**
* @var bool
*
* @ORM\Column(name="is_visible", type="boolean")
*/
private $isVisible;
/**
* @return mixed
*/
public function getArticle()
{
return $this->article;
}
/**
* @param mixed $article
*/
public function setArticle($article)
{
$this->article = $article;
}
/*
* @ORM\ManytoOne(targetEntity="Article", inversedBy="commentaires")
* @ORM\JoinColumn(nullable=true)
*/
private $article;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set usernamne
*
* @param string $usernamne
*
* @return Commentaire_blog
*/
public function setUsernamne($usernamne)
{
$this->usernamne = $usernamne;
return $this;
}
/**
* Get usernamne
*
* @return string
*/
public function getUsernamne()
{
return $this->usernamne;
}
/**
* Set message
*
* @param string $message
*
* @return Commentaire_blog
*/
public function setMessage($message)
{
$this->message = $message;
return $this;
}
/**
* Get message
*
* @return string
*/
public function getMessage()
{
return $this->message;
}
/**
* Set isVisible
*
* @param boolean $isVisible
*
* @return Commentaire_blog
*/
public function setIsVisible($isVisible)
{
$this->isVisible = $isVisible;
return $this;
}
/**
* Get isVisible
*
* @return bool
*/
public function getIsVisible()
{
return $this->isVisible;
}
}
方法第三个参数传递,如:< / p>
radio()
您也可以通过模板配置此功能,但这只能使用$this->Form->radio(
'edu_tests_items.0.edu_sheets_items_grade_id',
$eduSheetsGradesItems,
[
'autocomplete' => 'off',
'label' => [
'class' => 'btn btn-danger'
]
]
);
方法,但您并非真的必须这样做。
因此,如果您想将同一个类应用于所有标签,那么上面的内容就是这样做的。如果您需要应用不同的类做不同的标签,那么您必须使用自定义小部件,例如扩展FormHelper::control/input()
并覆盖Cake\View\Widget\RadioWidget
方法以支持可能的{{1 RadioWidget::_renderLabel()
参数中的键,它映射到您的个人选项集。
这是一个快速的&amp;肮脏的例子:
label
另见