ユーザーが新しいストアを作成したり、既存のストアを編集したりするために使用できるフォームがあります。このフォームを使用してストアを編集している場合、ユーザーには表示しても編集しないようにする特定のフィールドがあります。store_id。ある種の静的要素を見つけることを期待して、さまざまなZend_Form_Elementsを探索しましたが、運がありませんでした。
だから私の質問は、ユーザーが編集できないZend_Formを使用して情報を表示するにはどうすればよいですか?
ありがとう。
ユーザーが新しいストアを作成したり、既存のストアを編集したりするために使用できるフォームがあります。このフォームを使用してストアを編集している場合、ユーザーには表示しても編集しないようにする特定のフィールドがあります。store_id。ある種の静的要素を見つけることを期待して、さまざまなZend_Form_Elementsを探索しましたが、運がありませんでした。
だから私の質問は、ユーザーが編集できないZend_Formを使用して情報を表示するにはどうすればよいですか?
ありがとう。
私はこれを自分で解決することができました。解決策は、要素のビュー ヘルパーを formNote ヘルパーに変更することでした。$element->helper = 'formNote'. この結果、値はフォーム要素内ではなく、ストレート テキストとして表示されました。
回答ありがとうございます。
readonly
ユーザーが本当に必要に応じて編集できるため、それだけでは十分ではありません。これを使用して、POST/GET から要素を入力しようとしないようにする必要があります。それも再確認します$element->setIgnore(true)
。Zend_Form_Element
データベースに取得する値にこの要素が含まれないようにする必要があります。
最後に、要素を とは異なる方法で表示したい場合はreadonly
、要素のデコレータを変更することで実現できます。
これは、フォームの送信時に要素値を入力する必要がない場合に非常に優れたソリューションです。同等の解決策は、Form Elementメソッドを使用して、formelementsetAttrib()
を無効にすることです。
$formElement->setAttrib('disable','disable')
要素をフリーズするだけです。
ただし、フィールドにデータを入力する必要がある場合は、以前のソリューションを使用して、値を渡す追加の非表示フィールドを追加する必要があります。カスタムフォーム要素の開発は良いスタイルですが、それは各開発者に歓迎されていないため、フォーム要素をテキストとしてのみ設定し、その値を入力するためのトリッキーな方法を使用できます。このように、要素を非表示フィールドとして作成し、その値を設定し、FormElementメソッドを使用しsetDescription()
て要素のテキスト値を設定および表示します。
$formElement = new Zend_Form_Element_Hidden( 'elName',
array( 'label' => 'elLabel', 'value' => 'elValue' ) );
$formElement->setDescription( 'elValue' );
次に、その非表示の要素をレンダリングし、値をで表示できます
$formElement->getDescription()
。
$element->setAttrib('readonly', 'true');
http://www.w3.org/TR/html401/interact/forms.html#adef-readonly
Amr Mostafa によると、以下を使用する場合:
$element->setAttrib('readonly', 'true');
また
$element->setAttribs(array('disabled' => 'disabled'));
ユーザーは引き続き POST/GET で値を送信し、それらは DB に保存されます。
POST/GES の値を考慮しない唯一の方法は次のとおりです。
$element->setIgnore(true)
例:
$element = new Zend_Form_Element_Text('element');
$element->setIgnore(true);