1

我有以下代码行:

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 新手,所以请详细回复我。

4

2 回答 2

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>or<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>

源文档

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

于 2013-08-29T21:45:43.423 回答
1

只需围绕它手动设置'label'=>false和/或'div'=>false编写您的 HTML、CSS...等您认为合适的任何方式。

更多信息: CakePHP Book - Form Helper

于 2013-05-28T02:48:01.037 回答