cakephp habtm与输入而不是选择框的关系?

时间:2010-01-28 00:14:09

标签: cakephp

我正在cakephp中创建一个具有典型HABTM关系的表单。假设我正在开发一个带有优惠券代码的订单。从逻辑的角度来看,我需要接受优惠券代码的文本输入,因此传入的数据不是正确的主键,而是不同的字段。

然后我需要验证该数据,并检索正确的主键ID,然后使用该coupon_id和order_id更新orders_coupons表。

当使用选择框时,值始终是正确的coupon_id,但是我在哪里放置逻辑来处理这个?我应该使用beforeSave修改数据吗?

3 个答案:

答案 0 :(得分:0)

你的问题不是很清楚b / c听起来你可以通过选择框或只是一个自由形式的文本框来指定优惠券。

我倾向于向模型中添加一个新方法,该方法将使用“人类可读密钥”更新记录。因此该函数首先从数据库中读取coupon_id,然后进行更新。

答案 1 :(得分:0)

如果我认为这是正确的,这与标记几乎相同?! (habtm项目有一个文本输入框,字符串在没有id的情况下提交给控制器。)

如果是这样,我建议拆分处理。将数据提交给控制器,然后将优惠券字符串传递给优惠券模型中的正确函数,该函数获取优惠券ID(保存新项目)并将它们返回给控制器以保存完整的habtm数据。 / p>

答案 2 :(得分:0)

正如你所说,你只需要查看优惠券ID ......

// assuming $data looks like:
// array('Order' => array(...), 'Coupon' => array('code' => ...))

$coupon_id = $this->Order->Coupon->field('id', array('code' => $data['Coupon']['code']));

if (!$coupon_id) {
    // user put in a non-existing coupon code, punish him!
} else {
    $data['Order']['coupon_id'] = $coupon_id;
    $this->Order->save($data);
}
相关问题