2015-07-22 13:39:55 3874次浏览 3条回答 0 悬赏 5 金钱

前提
新增與修改 同一個表單,情境(scenario) 那我在送出後 新增可執行
但在修改的時候($model->validate())
假使欄位為 account_name 已有相同名稱就會無法驗證成功
但我的需求是 account_name 他初始的值可以修改並存入資料庫 但有重複到的值就無法修改
請問:
1.假使碰到這種狀況 新增與修改 需要用同一個情境嗎(小弟我是用同一個)
2.如果同一情境(scenario)下,有辦法可以解決嗎??
3.又或者自行附加 rules function
(附加過function rules 但同一情境下會先被 unique 先擋掉而不執行, 除非使用不同得情境)

第一次發文 請指教

最佳答案

  • 师阳 发布于 2015-07-22 20:23 举报

    也不一定要分不同情境。Yii model 有一个isNewRecord方法,用它来判断是否是新增记录,这样一来就可以做个条件判断,判断是新增还是修改。如果不是新增,再查询是否有重复的值,有重复的值就不保存。

    1 条回复
    回复于 2015-07-23 10:09 回复

    thx shiyang :
    我自己後來是附帶 rules function 我會再去看看怎麼應用 isNewRecord 的 save();

    觉得很赞
  • 回答于 2015-07-22 18:20 举报

    $model->getErrors()打印下就知道错那了

    3 条回复
    回复于 2015-07-23 10:14 回复

    thx 張三风 :
    感謝您的回覆,對我也很有幫助!!

    回复于 2015-07-23 10:34 回复

    $model->getErrors()这个很有帮助的说~

    回复于 2017-07-19 18:11 回复

    用unique验证属性,没有报错,但是验证的唯一性属性没有起作用,数据库存在还是可以存进去,是什么原因

  • 回答于 2015-07-23 10:41 举报

    rules 中有一个 when属性,这个属性能让你判断是否运行接下来的验证,相当于beforeValidateAttribute;

    1 条回复
    回复于 2015-07-23 10:54 回复

    thx 然 : 您的回覆讓我獲益良多 !!

您需要登录后才可以回答。登录 | 立即注册
bryson
副总裁

bryson Taipei

注册时间:2015-07-22
最后登录:2017-04-03
在线时长:84小时54分
  • 粉丝19
  • 金钱4885
  • 威望230
  • 积分8025

热门问题