vendor/phpzlc/admin/Bundle/Extension/StrategyExtension.php line 24

Open in your IDE?
  1. <?php
  2. /**
  3.  * PhpStorm.
  4.  * User: Jay
  5.  * Date: 2020/7/28
  6.  */
  7. namespace PHPZlc\Admin\Bundle\Extension;
  8. use PHPZlc\Admin\Strategy\AdminStrategy;
  9. use PHPZlc\Validate\Validate;
  10. use Psr\Container\ContainerInterface;
  11. use Twig\Extension\AbstractExtension;
  12. use Twig\TwigFilter;
  13. use Twig\TwigFunction;
  14. class StrategyExtension extends AbstractExtension
  15. {
  16.     private $adminStrategy;
  17.     public function __construct(ContainerInterface $container null)
  18.     {
  19.         $this->adminStrategy = new AdminStrategy($container);
  20.     }
  21.     public function getFunctions()
  22.     {
  23.         return [
  24.             new TwigFunction('admin_title', [$this->adminStrategy'getTitle']),
  25.             new TwigFunction('admin_favicon_ico', [$this->adminStrategy'getFaviconIco']),
  26.             new TwigFunction('admin_entrance_url', [$this->adminStrategy'getEntranceUrl']),
  27.             new TwigFunction('admin_logo', [$this->adminStrategy'getLogo']),
  28.             new TwigFunction('admin_end_url', [$this->adminStrategy'getEndUrl']),
  29.             new TwigFunction('admin_page_tag', [$this->adminStrategy'getPageTag']),
  30.             new TwigFunction('admin_setting_pwd_url', [$this->adminStrategy'getSettingPwdUrl']),
  31.             new TwigFunction('admin_name', [$this->adminStrategy'getAdminName']),
  32.             new TwigFunction('admin_role_name', [$this->adminStrategy'getAdminRoleName']),
  33.             new TwigFunction('admin_avatar', [$this->adminStrategy'getAdminAvatar']),
  34.             new TwigFunction('admin_url_anchor', [$this->adminStrategy'getUrlAnchor']),
  35.             new TwigFunction('admin_env', [$this->adminStrategy'getAdminEnv']),
  36.             new TwigFunction('admin_menus', [$this->adminStrategy'getMenus']),
  37.             new TwigFunction('admin_top_menus', [$this->adminStrategy'getTopMenus']),
  38.             new TwigFunction('admin_menu_model', [$this->adminStrategy'getMenuModel']),
  39.             new TwigFunction('admin_login_lack_ground_img', [$this->adminStrategy'getLoginLackGroundImg']),
  40.             new TwigFunction('admin_navigations', [$this->adminStrategy'getNavigations']),
  41.             new TwigFunction('admin_asset', [$this'asset']),
  42.             new TwigFunction('admin_clear_cache_api_url', [$this->adminStrategy'getClearCacheApiUrl']),
  43.             new TwigFunction('admin_hend_code', [$this->adminStrategy'getHendCode']),
  44.         ];
  45.     }
  46.     public function getFilters()
  47.     {
  48.         return [
  49.             new TwigFilter('explode', [$this'explode']),
  50.             new TwigFilter('boolToString', [$this'boolToString']),
  51.             new TwigFilter('boolToInt', [$this'boolToInt'])
  52.         ];
  53.     }
  54.     public function boolToString($bool$strings = ['是''否'])
  55.     {
  56.         return $bool $strings[0] : $strings[1];
  57.     }
  58.     public function boolToInt($bool)
  59.     {
  60.         return $bool 10;
  61.     }
  62.     public function explode($string$delimiter ',')
  63.     {
  64.         return explode($delimiter$string);
  65.     }
  66.     public function asset($path)
  67.     {
  68.         if(Validate::isUrl($path)){
  69.             return $path;
  70.         }
  71.         if(!empty($this->adminStrategy->getAssetBaseUrl())){
  72.             return $this->adminStrategy->getAssetBaseUrl() . '/' $path;
  73.         }else{
  74.             return $this->adminStrategy->getBaseUrl() . '/' $path;
  75.         }
  76.     }
  77. }