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')); 

这有效,但前提是我在我的用户表中添加了一个我不需要的消息列。我宁愿做这样的事情

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

但这不起作用,我猜是因为“消息”与模型无关。有一个更好的方法吗?

4

1 回答 1

1

你是什​​么意思?当然可以,拥有与数据库表字段不对应的表单字段是一件非常正常/微不足道的事情。

但你最初的问题是错误的。它们通常总是属于一个模型(可以说是一个范围),但不一定属于一个数据库表。您甚至可以在没有任何相关模型的情况下拥有它们。但在大多数情况下,这没有多大意义。

问题是:您是否需要为他们提供蛋糕魔法(根据类型通过 input() 自动生成复选框/文本区域)?你想验证他们吗?那么您至少需要为它们考虑一些架构条目。

请参阅http://www.dereuromark.de/2011/12/15/tools-plugin-part-2-contact-form/示例如何使用模型中的 _schema 来获得所有这些(就像使用真实的数据库字段)。

哦,还有

  1. 'controller' => 'users' 不像你说的那样工作,只有 'action' 和 'url' 键。
  2. 'value' 是错误的(使用 'default' 代替)
于 2012-10-09T23:22:52.943 回答