2012-08-01 13 views
6

私はラベルを生成するために、Formヘルパーを使用しています:ケーキPHP 2カスタムフォーム - >ラベル

次を生成
$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を注入することがありますか?私はどちらかというとかなり醜いと思います。

答えて

8

あなたはラベルを生成したくない場合は、他のあなたはfollows-

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

としてヘルパーを使用することができ、ラベルに自動的に適用されます「*」CakePHPの必須フィールドのためのモデルの検証を使用している場合ヘルパーの使用中に自動的に "label => false"を使用することができます。

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

多くのありがとう。私は私のフォーム検証エラーがフォーム - >入力を使用するときにのみ表示され、フォーム - >テキストを使用するときには表示されないので、両方を使用して終了しました。 $ this-> Form-> label( 'Contact.forename'、 ' * Name'); $ this-> Form-> input( 'Contact.forename'、array( 'div' => false、 'label' => false、 'class' => 'input'、 'size' => '25' 'tabindex' => '2'));素晴らしい仕事:-)。 – Bear

4

CakePHPがこれをサポートしているかどうかはわかりません(とにかくちょっと混乱します)。

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

ような何か生成します:

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

が続いて残りはCSSで純粋に行われているが、私は考えることができる最も簡単な解決策は、フォームヘルパーを用いてラベルに「必須」クラスを割り当てることです:

追加のHTMLは必要ありません。

+0

答えに多くの感謝、このようにするとは思わない。私が見る唯一の欠点は、異なるコンテンツ用にいくつかのクラスを作成する必要があることです。コンテンツとして(もしあれば)欲しかったかどうかを考えてください。 – Bear

0

あなたはそれが簡単な、私はこれが古いですけど、多分CakePHPの3との誰かが同じ問題を抱えている

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

によって行うことができます。これはインラインコードなしで私のために修正されたものです。

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

ラベルに名前を付けて、書き込むためにデータベースフィールドを使用することができます。

関連する問題