3

現在、CRUD フォームに CakePHP の「automagic」フィールド要素を使用しています。
これは、私が使用していることを意味します

echo $form->input('fieldname', $options);

すべてを生成するメソッド。

これにより、正しい要素タイプが選択され、すべてが <label> 要素で div にラップされます。

現在、編集できないフィールドがいくつかありますが、それらを表示したいと思います(したがって、実際にはラベルはなく、スパンのみであり、 <input> コントロールの代わりに、単にいくつかのテキストがあります、またはスパン
また、「フィールド値」の内容を任意に制御できる必要があります。

$form->input でこれを行う方法はありますか?
これらすべてのマークアップを簡単に生成できることはわかっていますが、見栄えが悪く、非常に反復的です。

ありがとう!
ダニエル

4

6 に答える 6

2

いつでも入力のままにしておくことができますが、編集オプションは削除してください。入力パラメーターに追加'readonly' => trueすると、次のようなものが入力に追加されますreadonly="readonly"

于 2010-02-17T16:24:20.380 に答える
1

あなたはやったほうがいいでしょう:

$form->data["fieldname"]

必要なマークアップで囲みます。必要に応じて、リチャードが提案したように、独自のヘルパーを追加します。

ただし、コアを変更しないでください。それはあなたにさらに先の頭痛を与えるだけでしょう。

于 2010-02-18T16:11:07.980 に答える
1

どうですか:

$html->tag("span", $form->data["fieldname"]);

それがあまりにも醜い場合は、独自のヘルパーを書くことができます:

<?php
class WhateverHelper extends AppHelper {
    var $helpers = array('Html');
    function whatever($fieldname) {
        return $this->Html->tag("span", $form->data[$fieldname]);
    }
}
?>
于 2010-02-17T16:22:23.033 に答える
1

コア ファイルに触れる必要はありません (絶対にすべきではありません)。

組み込みの FormHelper に基づいて独自の FormHelper を作成し、入力メソッドをオーバーライドできます。

HtmlHelper の sort メソッドをオーバーライドして、ページ分割されたテーブルの並べ替え方向クラスを追加する方法は次のとおりです。

http://richardathome.com/blog/cakephp-extend-paginatorhelper-indicate-sort-field-and-direction

于 2010-02-18T09:59:58.097 に答える
0

echo $form->input('something', array('div'=>false, 'label'=>false));

于 2010-02-19T00:11:24.860 に答える
0

結局、私はCakePHPを修正することになりました:-(

これを行うためのオプションを追加しました:

echo $form->input('customer_id', array('type' => 'output', 'value' => 'xxxx' ));

コアファイルにはあま​​り触れたくないのですが、そうするのは比較的簡単でした。

将来のリリースで追加することを検討するかどうかを確認するために、バグ システムにその方法の詳細を追加しました。

これが誰かを助けることを願っています!

于 2010-02-17T16:52:18.510 に答える