15 March 2015

yii总结

relations:
'blocks'=>array(self::HAS_MANY, 'ResourceBlock', 'machine_id', )

$machines = Machine::model()->with('blocks')->findAll('blocks.app_id=:app_id',array(
'app_id'=>$appId,));

json_decode($machine['machine_spec'],true)  //将json数据转为数组

json_decode($machine['machine_spec']);     //json转为stdObject对象   

将xml解析成数组

public function xmlToArray($xml) {
    $xml = (array)(simplexml_load_string)($xml);
    $ret = array();
    foreach($xmlArray as $key=>$item) {
        $ret[$ret] = $this->structToArray($item);
    }
    return $ret;
}

public function structToArray($item) {
    if(!is_string($item)) {
        $item = (array)$item;
        foreach($item as $key=>$value) {
            $item[$key] = $this->strcutToArray($value);
        }
    }
    return $item;
}

returnUrl



/**
 * 获取返回 URL
 * 用于动作执行完毕后的跳转.
 * @param mixed $defaultUrl 默认跳转
 * @return string
 */
 public function getReturnUrl($defaultUrl = null) {
    if (isset($_GET['returnUrl'])) {
        return $_GET['returnUrl'];
    }
    if (isset($_POST['returnUrl'])) {
       return $_POST['returnUrl'];
    }
    if ($this->_returnUrl !== null) {
       return $this->_returnUrl;
    }
    if (Yii::app()->request->urlReferrer != null) {
       return Yii::app()->request->urlReferrer;
    }
    if ($defaultUrl != null) {
        return CHtml::normalizeUrl($defaultUrl);
    }
    return Yii::app()->getBaseUrl();
}

解释:
就是如果找不到回头路,就默认走一条之前指定的路。
如果在参数里有returnUrl 就返回returnUrl 
如果没有,就找从哪个网页来的,就是referer 
如果还找不到,就看默认值
默认值没有,就返回网站根目录。