【问题标题】:Cake PHP 2 custom Form->LabelCake PHP 2 自定义表单->标签
【发布时间】:2012-08-01 00:26:09
【问题描述】:

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

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

【问题讨论】:

    标签: cakephp formhelper


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢。我最终都使用了这两种方法,因为我发现我的表单验证错误仅在使用表单->输入时显示,而在使用表单->文本时不显示。 $this->Form->label('Contact.forename', '* Name');和 $this->Form->input('Contact.forename',array('div' =>false,'label' => false,'class' => 'input','size' => '25' , 'tabindex' => '2'));工作得很好:-)。
    【解决方案2】:

    不确定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。

    【讨论】:

    • 非常感谢您的回答,没想到会这样做。我看到的唯一缺点是我必须为不同的内容创建几个类。考虑如果我想要(如果适用)作为内容。
    【解决方案3】:

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

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

    因此您可以命名您的标签并使用数据库字段来编写。

    【讨论】:

      【解决方案4】:

      你可以简单地做到这一点

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

      【讨论】:

        猜你喜欢
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-20
        • 2012-05-07
        • 2016-09-20
        • 1970-01-01
        相关资源
        最近更新 更多