9

CakePHP のフォーム ヘルパーを使用して入力要素を生成しようとしています。

私が生成しようとしているHTMLは次のとおりです。

<div class="formRow">
    <label>LabelText:</label>
    <div class="formRight">
        <input name="data[User][email_address]" type="text" value="">
    </div>
    <div class="clear"></div>
</div>

私は Cake のドキュメント (Using 2.1) を調べましたが、これを行う方法について十分な情報が見つかりません。

入力メソッドで format オプションを使用する必要があるようですが、それを正しく行う方法がわかりません。特に、入力フィールドをクラス名で囲む div が心配です。

たとえば、私は次のようなことを試しました:

echo $this->Form->input('email_address', array(
                                                "input" => array('attributes' => array('wrap' => 'div','class' => 'formRight'))));

しかし、これはマークアップを変更せず、次のエラーをスローするだけです: Notice (8): Array to string conversion [CORE\Cake\View\Helper.php, line 459]

私の質問は、このフォーム ヘルパーにそのマークアップを作成させる方法を教えてください。

どんな助けでも大歓迎です

4

2 に答える 2

15

難しく考えすぎだよ。(心配ありません、私たちは皆そうしています)。覚えておいてほしいのは、CakePHP は (とりわけ) 物事を簡単にするためのものです - Cake に何かを強制しようとして苦労している場合は、覚えておいてください、基本に戻ることができます - それはただの PHP/HTML です結局。

<div class="formRow">
    <label>LabelText:</label>
    <div class="formRight">
        <?php echo $this->Form->input('email_address', array(
            'div'=>false, 'label'=>false)); ?>
    </div>
    <div class="clear"></div>
</div>

可能であれば、フォームにフォーム ヘルパーを使用する必要がありますが、周囲の div やラベルなどのすべてのプリセットを使用する必要はありません。上記の場合、div が不要であることを伝え、自分で div でラップします。

<div>入力をs またはs で囲んだくない場合<label>は、フォームの inputDefaults を設定することもできます。

$this->Form->create('Whatever', array(
    'inputDefaults' => array('label'=>false, 'div'=>false)
));
于 2012-05-07T01:04:41.220 に答える
0

フィールドがたくさんある場合は、Jquery を使用できます。

php:

echo $this->Form->input('email_address', array('class' => 'formRow'));

Jクエリ:

$(".formRow").each(function() {
    $(this).wrapInner( "<div class='formRight'></div>");
    $(this).find("label").prependTo(this);
    $(this).append('<div class="clear"></div>');
});
于 2015-04-20T05:24:27.090 に答える