Yii Framework Forum: Yii::import 似乎有时无法加载 - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Yii::import 似乎有时无法加载 Rate Topic: -----

#1 User is offline   Ease 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 01-January 12

Posted 13 December 2012 - 11:08 PM

- operating system:windows7
- Web server:xampp
- browser type:ie,ff
- Yii version ,1.1.12

下面的代码比较多,只是为了提供完整的环境信息,调用流程并不复杂,希望帮助查看解决。谢谢。
问题概要:
代码1函数中 如果取消注释 import Stock,则整个过程执行正常符合预期。
如果注释掉 import Stock 则整个过程执行异常。在代码3处无法调用 Stock 的静态方法
但代码3 开始就 import 了 Stock。。。。


代码1:下面的代码通过 ajax 调用
    public function actionCheck2() {
        Yii::import('application.modules.stock.models.Alert');
        //Yii::import('application.modules.stock.models.Stock'); //这里如果注释掉程序异常
        $transaction = Yii::app()->db->beginTransaction();
        try {
            if (!$this->_check(2)) {
                throw new Exception();
            }
            $this->plan2record(); // 确认入库
            Alert::check(); // 产品入库后要更新报警状态
            $transaction->commit();
            echo json_encode(array('type' => 'flash-success', 'msg' => '操作成功!'));
        } catch (Exception $e) {
            echo json_encode(array('type' => 'flash-error', 'msg' => '操作错误!')); // 审批
            $transaction->rollback();
        }
    }


代码2:Alert::check 部分代码
    public static function check() {
        Yii::import('application.modules.stock.models.Stock');
        $pid = Yii::app()->user->pid;
        // 取出此项目所有 打开的报警器
        $models = self::model()->findAllByAttributes(array('pid' => $pid, 'active' => 1));
        foreach ($models as $model) {
            $name = $model->name;
            $value = unserialize($model->value);
            $result = $model->$name($value);
            // 这里不用重置 报警状态,因为在一个肯定回滚的事务内。无法保存。
            // 经过分析 这里可以保存:在事务内时,不会保存。
            // 当进行正常出库后,事务外执行,则更新并保存了 报警的状态。
            $model->state = $result;
            $model->save();
            if ($result == 3)  // 有任何一个 达到限制 则返回
                return "【警报】" . $value['text'] . " 受限";
        }
        return true;
    }


代码3:上面:$result = $model->$name($value); 会调用下面的代码:
问题:这里的Stock::ssum();调用失败,不执行,Stock::ssum() 又其他过程调用没有问题。
    public function goods_amount($value) {
        Yii::import('application.modules.stock.models.Stock');
        $test1 = Stock::test1();
        $test2 = 3;
        $stock = Stock::ssum($value['gid']);
        if($stock > $value['v1']) return 0;
        else if(($stock > $value['v2'])) return 1;
        else if(($stock > $value['v3'])) return 2;
        else return 3;
    }

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users