Cake PHP 2自定义Form->标签

时间:2012-08-01 00:26:10

标签: cakephp formhelper

我正在使用Form帮助程序生成标签:

$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?我认为这是相当丑陋的。

3 个答案:

答案 0 :(得分:8)

如果您对必填字段使用模型验证,那么cakephp会自动在Label上应用'*',否则您可以使用帮助程序,如下所示 -

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

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

echo $this->Form->input('Contact.forename',array('label' =>false));

答案 1 :(得分: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。

答案 2 :(得分:0)

你可以通过

轻松完成
echo $this->Form->input('whatever', array('between'=>'<label for="ContactName"><span class="mandatory">*</span> Name</label>','label'=>false));