我可以使用与模型不对应的字段在Cake php中创建表单吗?

时间:2012-10-09 22:29:53

标签: cakephp

我有一个用于收集电子邮件地址的表单,该表单对应于我的用户模型。我希望表单还有一个电子邮件的文本字段,但我不需要将邮件保存到我的数据库中。

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

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

1 个答案:

答案 0 :(得分:1)

你是什​​么意思?当然这是有效的,使表单字段与db表字段不对应是一件非常普通/琐碎的事情。

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

问题是:你需要蛋糕魔术吗(根据类型通过input()自动生成复选框/ textarea)?你想要验证它们吗? 那么你需要考虑至少一些模式条目。

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

哦,

  1. 'controller'=> '用户'不会像你说的那样工作,只有'action'和'url'键。
  2. 'value'是错误的(使用'default'代替)