public function resolvePath($path)
    {
        $path = Yii::getAlias($path);

        $pi = pathinfo($this->owner->{$this->attribute});
        $fileName = ArrayHelper::getValue($pi, 'filename');
        $extension = strtolower(ArrayHelper::getValue($pi, 'extension'));

        return preg_replace_callback('|\[\[([\w\_/]+)\]\]|', function ($matches) use ($fileName, $extension) {
            $name = $matches[1];
            switch ($name) {
                case 'extension':
                    return $extension;
                case 'filename':
                    return $fileName;
                case 'basename':
                    return implode('.', array_filter([$fileName, $extension]));
                case 'app_root':
                    return Yii::getAlias('@app');
                case 'web_root':
                    return Yii::getAlias('@webroot');
                case 'base_url':
                    return Yii::getAlias('@web');
                case 'model':
                    $r = new \ReflectionClass($this->owner->className());
                    return lcfirst($r->getShortName());
                case 'attribute':
                    return lcfirst($this->attribute);
                case 'id':
                case 'pk':
                    $pk = implode('_', $this->owner->getPrimaryKey(true));
                    return lcfirst($pk);
                case 'id_path':
                    return static::makeIdPath($this->owner->getPrimaryKey());
                case 'parent_id':
                    return $this->owner->{$this->parentRelationAttribute};
            }
            if (preg_match('|^attribute_(\w+)$|', $name, $am)) {
                $attribute = $am[1];
                return $this->owner->{$attribute};
            }
            if (preg_match('|^md5_attribute_(\w+)$|', $name, $am)) {
                $attribute = $am[1];
                return md5($this->owner->{$attribute});
            }
            return '[[' . $name . ']]';
        }, $path);
    }
public function resolvePath($path)
    {
        $path = Yii::getAlias($path);

        $pi = pathinfo($this->owner->{$this->attribute});
        $fileName = ArrayHelper::getValue($pi, 'filename');
        $extension = strtolower(ArrayHelper::getValue($pi, 'extension'));

        return preg_replace_callback('|\[\[([\w\_/]+)\]\]|', function ($matches) use ($fileName, $extension) {
            $name = $matches[1];
            switch ($name) {
                case 'extension':
                    return $extension;
                case 'filename':
                    return $fileName;
                case 'basename':
                    return implode('.', array_filter([$fileName, $extension]));
                case 'app_root':
                    return Yii::getAlias('@app');
                case 'web_root':
                    return Yii::getAlias('@webroot');
                case 'base_url':
                    return Yii::getAlias('@web');
                case 'model':
                    $r = new \ReflectionClass($this->owner->className());
                    return lcfirst($r->getShortName());
                case 'attribute':
                    return lcfirst($this->attribute);
                case 'id':
                case 'pk':
                    $pk = implode('_', $this->owner->getPrimaryKey(true));
                    return lcfirst($pk);
                case 'id_path':
                    return static::makeIdPath($this->owner->getPrimaryKey());
                case 'parent_id':
                    return $this->owner->{$this->parentRelationAttribute};
            }
            if (preg_match('|^attribute_(\w+)$|', $name, $am)) {
                $attribute = $am[1];
                return $this->owner->{$attribute};
            }
            if (preg_match('|^md5_attribute_(\w+)$|', $name, $am)) {
                $attribute = $am[1];
                return md5($this->owner->{$attribute});
            }
            return '[[' . $name . ']]';
        }, $path);
    }
public function resolvePath ( $ path ) { $ path = Yii :: getAlias ( $ path ) ; $ pi = pathinfo ( $ this -> owner -> { $ this -> attribute } ) ; $ fileName = ArrayHelper :: getValue ( $ pi , 'filename' ) ; $ extension = strtolower ( ArrayHelper :: getValue ( $ pi , 'extension' ) ) ; return preg_replace_callback ( '|\[\[([\w\_/]+)\]\]|' , function ( $ matches ) use ( $ fileName , $ extension ) { $ name = $ matches [ 1 ] ; switch ( $ name ) { case 'extension' : return $ extension ; case 'filename' : return $ fileName ; case 'basename' : return implode ( '.' , array_filter ( [ $ fileName , $ extension ] ) ) ; case 'app_root' : return Yii :: getAlias ( '@app' ) ; case 'web_root' : return Yii :: getAlias ( '@webroot' ) ; case 'base_url' : return Yii :: getAlias ( '@web' ) ; case 'model' : $ r = new \ ReflectionClass ( $ this -> owner -> className ( ) ) ; return lcfirst ( $ r -> getShortName ( ) ) ; case 'attribute' : return lcfirst ( $ this -> attribute ) ; case 'id' : case 'pk' : $ pk = implode ( '_' , $ this -> owner -> getPrimaryKey ( true ) ) ; return lcfirst ( $ pk ) ; case 'id_path' : return static :: makeIdPath ( $ this -> owner -> getPrimaryKey ( ) ) ; case 'parent_id' : return $ this -> owner -> { $ this -> parentRelationAttribute } ; } if ( preg_match ( '|^attribute_(\w+)$|' , $ name , $ am ) ) { $ attribute = $ am [ 1 ] ; return $ this -> owner -> { $ attribute } ; } if ( preg_match ( '|^md5_attribute_(\w+)$|' , $ name , $ am ) ) { $ attribute = $ am [ 1 ] ; return md5 ( $ this -> owner -> { $ attribute } ) ; } return '[[' . $ name . ']]' ; } , $ path ) ; }
Replaces all placeholders in path variable with corresponding values

@param string $path
@return string
Replaces all placeholders in path variable with corresponding values