6

我正在使用表单助手生成标签:

$this->Form->label('Contact.name', 'Name');

生成以下内容:

<label for="ContactName">Name</label>

是否可以使用帮助程序生成以下内容:

<label for="ContactName"><span class="mandatory">*</span> Name</label>

虽然我可以手动编写上面的 html,但当我使用自动生成标签的输入法时会变得有点困难。

例如:

$this->Form->input('Contact.forename',array('div' =>false,
                   'label' => array(
                   text'=> 'First Name',class =>'myclass'),
                   'class' => 'input','size' => '25' ,'tabindex' => '1'));

这可能在蛋糕中还是我必须在页面加载时使用javascript手动注入html?我认为这是相当丑陋的。

4

4 回答 4

8

如果您对必填字段使用模型验证,那么 cakephp 会自动在标签上应用“*”,否则您可以按如下方式使用帮助程序 -

echo $this->Form->label('name', '<span class="mandatory">*</span> Name');

如果您不希望标签自动生成,您可以在使用帮助程序时使用“label => false”。

echo $this->Form->input('Contact.forename',array('label' =>false));
于 2012-08-01T08:02:50.447 回答
4

不确定 CakePHP 是否支持(无论如何它会变得有点混乱)。我能想到的最简单的解决方案是通过表单助手为标签分配一个“强制”类:

$this->Form->label('User.name', 'Your username', array('class'=>'mandatory'));

这会产生类似的东西:

<label class="mandatory" for="ContactName">Name</label>

然后其余的完全在 CSS 中完成:

label.mandatory:after {
    content: ' *';
    color: red;
    display: inline;
}

避免使用任何额外的 HTML。

于 2012-08-01T00:44:15.393 回答
1

我知道这是旧的,但也许有 Cakephp 3 的人有同样的问题。这就是为我解决的问题,没有任何内联代码。

<?php
echo $this->Form->input(
'renovate_old',
[
 'type' => 'checkbox',
 'label' => ['text' => __('Alte Wohnung'), 'class' => 'moCheckLabel']
]); ?>

因此,您可以命名您的标签并使用 Databasefield 来编写。

于 2016-03-08T19:22:05.703 回答
0

你可以通过

echo $this->Form->input('whatever', array('between'=>'<label for="ContactName"><span class="mandatory">*</span> Name</label>','label'=>false));
于 2014-02-28T11:59:17.340 回答