public function exchangeWidget(IView $aView, $sWidgetId, $nWay = self::MODEL_TO_WIDGET) { if (!isset($this->arrLinks[$sWidgetId])) { return; } if (!($aModel = $aView->model())) { throw new Exception("视图尚未设置模型,无法进行数据交换"); } if (!($aWidget = $aView->widget($sWidgetId))) { throw new Exception("视图中缺少指定的窗体(%s),无法进行数据交换", $sWidgetId); } switch ($nWay) { // 从模型数据到ui窗体 case self::MODEL_TO_WIDGET: $sModelName = end($this->arrLinks[$sWidgetId]); $aWidget->setValueFromString($aModel->data($sModelName)); break; // 从ui窗体到模型控件 // 从ui窗体到模型控件 case self::WIDGET_TO_MODEL: $widgetVal = $aWidget->valueToString(); foreach ($this->arrLinks[$sWidgetId] as $sModelName) { $aModel->setData($sModelName, $widgetVal); } break; default: throw new Exception("参数(\$nWay)无效"); break; } }