Cakephp 3 - 无线电输入标签的自定义类

时间:2018-01-13 14:41:00

标签: css templates cakephp radio-button cakephp-3.x

我创建了一个多无线电传递选项:

$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)设置一个特定的类(每个单选按钮标签不同),但我无法弄清楚如何。

1 个答案:

答案 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

另见