0

ユーザーモデルに対応するメールアドレスを収集するためのフォームがあります。フォームに電子メールメッセージ用のテキストフィールドも含めたいのですが、メッセージをデータベースに保存する必要はありません。

echo $this->Form->create('User', array('action' => 'invite','controller' => 'users'));
echo $this->Form->input('User.from', array('label'=>"Your email",'value'=>'your         email','class'=>"",'type'=>'email'));
echo $this->Form->input('User.to', array('label'=>"Your friend's", 'value'=>"your friend's email",'class'=>"",'type'=>'email'));
echo $this->Form->textarea('User.message', array('label'=>'Your message', 'value'=>"some message"));
echo $this->Form->end(array('label'=>'Invite', 'class'=>'buttonstyle')); 

これは機能しますが、Usersテーブルにメッセージ列を追加した場合に限ります。これは必要ありません。私はむしろこのようなことをしたい

echo $this->Form->textarea('message', array('label'=>'Your message', 'value'=>"some message"));

しかし、それはうまくいきません。「メッセージ」がモデルに関連付けられていないためだと思います。これを行うためのより良い方法はありますか?

4

1 に答える 1

1

どういう意味?もちろん、それは機能しますが、dbテーブルフィールドに対応しないフォームフィールドを持つことは、ごく普通のことです。

しかし、あなたの最初の質問は間違っています。それらは通常、常にモデル(いわばスコープ)に属しますが、必ずしもdbテーブルに属するとは限りません。あなたはそれに関連するモデルなしでそれらを持つことさえできます。しかし、ほとんどの場合、これはあまり意味がありません。

問題は、それらにケーキの魔法が必要ですか(タイプに基づいてinput()を介してチェックボックス/テキストエリアを自動生成する)ですか?それらの検証が必要ですか?次に、それらの少なくともいくつかのスキーマエントリを考慮する必要があります。

モデルで_schemaを使用してすべてを取得する方法の例については、http: //www.dereuromark.de/2011/12/15/tools-plugin-part-2-contact-form/を参照してください(実際の場合と同様)。 dbフィールド)。

ああ、そして

  1. 'controller' =>'users'は、入力したとおりに機能しません。'action'キーと'url'キーのみがあります。
  2. 'value'は間違っています(代わりに'default'を使用してください)
于 2012-10-09T23:22:52.943 に答える