在cakephp中的表单div内的复选框上的自定义样式

时间:2013-05-27 11:17:51

标签: cakephp

我有以下代码行:

echo $form->input('terms', array('type' => 'checkbox', 'label' => 'I have read and accept the <a target="_blank" href="/terms">Terms</a>.')); 

我想在此复选框上使用自定义样式。我怎么能在cakephp中做到这一点?

问题是出现在复选框中的错误消息未与其他输入文本字段正确对齐。所以我想对齐错误消息文本,所以我需要自定义样式或其他方式来解决它。我在浏览器调试器中获得了div术语字段,当我在那里更改它有效时,但我不知道如何在cakephp中更改div?当我看到.ctp文件没有div时,我将如何更改它。我是cakephp的新手,所以请详细回复我。

2 个答案:

答案 0 :(得分:2)

只需设置'label'=>false和/或'div'=>false,然后以您认为合适的任何方式手动编写HTML,CSS等。

此处有更多信息:CakePHP Book - Form Helper

答案 1 :(得分:1)

您可以通过向数组中添加'class' => 'name'来在字段上放置自定义类,CakePHP会将该类放在输入上。

echo $form->input(
    'terms', 
    array(
        'type' => 'checkbox', 
        'class' => 'some-class-name',
        'label' => 'I have read and accept the <a target="_blank" href="/terms">Terms</a>.'
    )); 

产地:

<div class="input checkbox">
    <input type="hidden" name="" id="" value="0">
    <input type="checkbox" name="" class="some-class-name" value="1" id="">
    <label for="">I have read and accept the <a target="_blank" href="/terms">Terms</a>.</label>
</div>

您可以使用'style' => 'some:style;'

将自定义样式应用于输入
echo $form->input(
    'terms', 
    array(
        'type' => 'checkbox', 
        'style' => 'width:200px;',
        'label' => 'I have read and accept the <a target="_blank" href="/terms">Terms</a>.'
    )); 

产地:

<div class="input checkbox">
    <input type="hidden" name="" id="" value="0">
    <input type="checkbox" name="" style="width:200px;" value="1" id="">
    <label for="">I have read and accept the <a target="_blank" href="/terms">Terms</a>.</label>
</div>

您还可以在输入分组的<div>以及与<label>相关联的<input>上应用自定义样式或类。

echo $form->input(
    'terms', 
    array(
        'type' => 'checkbox', 
        'label' => array(
            'text' => 'I have read and accept the <a target="_blank" href="/terms">Terms</a>.',
            'style' => 'width:200px;',
            'class' => 'class-for-label'
        ),
        'div' => array(
            'style' => 'width:200px;',
            'class' => 'class-for-div'
        )
    )); 

产地:

<div class="class-for-div" style="width:200px;">
    <input type="hidden" name="" id="" value="0">
    <input type="checkbox" name="" value="1" id="">
    <label for="" style="width:200px;" class="class-for-label">I have read and accept the <a target="_blank" href="/terms">Terms</a>.</label>
</div>

最后,正如@dave建议的那样,您可以将<div><label>设置为false并插入您自己的自定义HTML来删除它。

echo '<div class="input checkbox">';
echo $form->input(
    'terms', 
    array(
        'type' => 'checkbox', 
        'label' => false,
        'div' => false
    ));
echo '<label>I have read and accept the <a target="_blank" href="/terms">Terms</a>.</label>';
echo '</div>';

产地:

<div class="input checkbox">
    <input type="hidden" name="" id="" value="0">
    <input type="checkbox" name="" value="1" id="">
    <label>I have read and accept the <a target="_blank" href="/terms">Terms</a>.</label>
</div>

source documentation

(我删除了一些元素属性,因为它们特定于数据库,使用的表格和模型)