RootAction.php 5.31 KB
<?php
namespace Action;

use Configs\StaticJS;
use Configs\StaticCss;
use Hood\Action as HoodAction;
use Yaf\Registry;
use Yaf\Dispatcher;
use Hood\Session;
use Hood\Cache;

class RootAction extends HoodAction
{
    protected $_appConfig = array();

    public function init()
    {
        $this->_appConfig = Registry::get('appConfig');
    }


    public function _assign($name, $value)
    {
        return $this->getView()->assign($name, $value);
    }

    /**
     * 获取JS URL
     *
     * @param String $jsName
     * @return String
     */
    public function _js($jsName, $local = false)
    {
        if (isset(StaticJS::$res[$jsName])) {
            $js = $this->_appConfig['website']['static']['url'];
            if ($local == false) {
                $js .= StaticJS::$res[$jsName];
            } else {
                $js = StaticJS::$res[$jsName];
            }
            return $js;
        }
        return '';
    }

    /**
     * 获取Css URL
     *
     * @param String $cssName
     * @return String
     */
    public function _css($cssName, $local = false)
    {
        if (isset(StaticCss::$res[$cssName])) {
            $css = $this->_appConfig['website']['static']['url'];
            if ($local == false) {
                $css .= StaticCss::$res[$cssName];
            } else {
                $css = StaticCss::$res[$cssName];
            }
            return $css;
        }
        return '';
    }
    
    /**
     * 获取JS URL
     *
     * @param String $jsName
     * @return String
     */
    public function _viewScriptPush(array $jsList, $scriptName = '_footerScript')
    {
        $script = $this->_viewScript($scriptName);
        foreach ($jsList as $js) {
            $script->appendFile($this->_js($js, true));
        }
    }
    
    /**
     * 获取JS URL
     *
     * @param String $jsName
     * @return String
     */
    public function _viewCssPush(array $cssList, $linkName = '_headLink')
    {
        $link = $this->_viewLink($linkName);
        foreach ($cssList as $css) {
            $link->appendFile($this->_css($css, true));
        }
    }

    /**
     * 获取参数
     * @param null $name
     * @param null $default
     * @return mixed
     */
    protected function _getEnv($name = null, $default = null)
    {
        return $this->getRequest()->getEnv($name, $default);
    }

    /**
     * 封装一下获取param参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _getParam($key, $default = null)
    {
        $request = $this->_request->getRequest();
        $route = $this->getRequest()->getParams();
        $allParams = array_merge($request, $route);
        return isset($allParams[$key]) ? $allParams[$key] : $default;
    }

    /**
     * 获取所有参数
     * @return array
     */
    protected function _getParams()
    {
        return $this->_request->getParams();
    }

    /**
     * 获取所有参数
     * @return mixed
     */
    protected function _getRequests()
    {
        return $this->_request->getRequest();
    }

    /**
     * 封装一下获取get参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _get($key, $default = null)
    {
        return $this->getRequest()->getQuery($key, $default);
    }

    /**
     * 封装一下获取post参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _post($key, $default = null)
    {
        return $this->getRequest()->getPost($key, $default);
    }

    /**
     * 封装一下获取post参数
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function _typePost($key, $settype = null, $default = null)
    {
        $result = $this->getRequest()->getPost($key, $default);
        switch ($settype) {
            case 'bool':
                $result = (bool)$result;
                break;
            case 'int':
                $result = (int)$result;
                break;
            case 'string':
                $result = (string)$result;
                break;
            case 'float':
                $result = (float)$result;
                break;
            case 'binary':
                $result = (binary)$result;
                break;
            default:
                $result = $result;
                break;
        }
        return $result;
    }

    /**
     * 关闭模板 & Layout
     */
    public function _disable()
    {
        $this->disableLayout();
        $this->disableView();
    }

    /**
     * 关闭模板
     */
    public function disableView()
    {
        Dispatcher::getInstance()->autoRender(FALSE);
    }

    /**
     * 关闭Layout
     */
    public function disableLayout()
    {
        $this->getView()->setLayout('');
    }
    
    /**
     * @param string $namespace
     * @return \Hood\Core\Session\SessionNamespace
     */
    public function _session($namespace = 'session_default')
    {
        if (isset($this->_appConfig['website']['session']) && $this->_appConfig['website']['session'] == 'file') {
            return Session::fileStart($namespace);
        } else {
            return Session::start($namespace);
        }
    }
    
    public function _mc($node = null, $childNode = 'hosts'){
        return Cache::memcached($node, $childNode);
    }
}