如何获得Prestashop admin dir&;管理员url?

如何获得Prestashop admin dir&;管理员url?,prestashop,Prestashop,我试图从一个模块中获取管理员url和管理员目录 您能给出一个从模块php页面查找管理员url和管理员目录的示例吗 <?php define('PS_ADMIN_DIR', dirname(__file__) . '/../../testadmin'); echo PS_ADMIN_DIR; 我本想得到 /home/myaccount/public_html/testadmin 有什么想法吗 <?php $path = '/http/fpm/http/data/../../n

我试图从一个模块中获取管理员url和管理员目录

您能给出一个从模块php页面查找管理员url和管理员目录的示例吗

<?php
define('PS_ADMIN_DIR', dirname(__file__) . '/../../testadmin');  
echo PS_ADMIN_DIR;
我本想得到

/home/myaccount/public_html/testadmin
有什么想法吗

<?php

$path = '/http/fpm/http/data/../../node/';

print 'path : '.$path.'<br/>';

$isdir = ( is_dir($path) === true ) ? 'yes':'no';

print 'isdir ? ['.$isdir.']<br/>';

print 'dirname : '.dirname($path).'<br/>';

$nfo = pathinfo($path);

print 'pathinfo : '.$nfo['dirname'].'<br/>';

function trimpath($p){
    $p = explode('/',$p);
        $out = array();
        foreach($p as $n => $v)
            switch($v)
            {   case '.': continue; break;
                case '..':
                    array_pop($out);
                break;
                default :
                    $out[] = $v;
                break;
            };
        return implode('/',$out);
}

print 'trimpath : '.trimpath($path);

?>
您可以通过使用“\u PS\u ROOT\u DIR\u”获得它,并将您的admin DIR名称附加在它后面,如下所示

 _PS_ROOT_DIR_."/testadmin" 
这将为您提供管理目录的完整路径。_PS_ROOT_DIR_u用于获取安装它的目录的PS完整路径

您无法直接获取管理员url,因为PS系统不知道管理员目录,因为出于安全原因,我们可以随时将管理员目录名称更改为任何名称。因此,要构造一个知道管理员目录名“testadmin”和控制器名“AdminTest”的管理员url,您可以创建如下url

$link = new Link(); 
_PS_BASE_URL_.__PS_BASE_URI__."testadmin/".$link->getAdminLink('AdminTest', true);
这将为您提供完整的链接,包括完整的域和子目录(如果安装在子目录中)

getAdminLink获得两个参数,控制器名称和第二个参数为布尔值true/false。默认情况下,第二个值设置为true,因此需要传递它。它用于为控制器创建令牌

我希望这对你有帮助

注意:上面的代码只是为了构思,可能需要也可能不需要做一些更改。

您可以通过使用“\u PS\u ROOT\u DIR\u”来获得它,并将您的管理员目录名称附加在后面,如下所示

 _PS_ROOT_DIR_."/testadmin" 
这将为您提供管理目录的完整路径。_PS_ROOT_DIR_u用于获取安装它的目录的PS完整路径

您无法直接获取管理员url,因为PS系统不知道管理员目录,因为出于安全原因,我们可以随时将管理员目录名称更改为任何名称。因此,要构造一个知道管理员目录名“testadmin”和控制器名“AdminTest”的管理员url,您可以创建如下url

$link = new Link(); 
_PS_BASE_URL_.__PS_BASE_URI__."testadmin/".$link->getAdminLink('AdminTest', true);
这将为您提供完整的链接,包括完整的域和子目录(如果安装在子目录中)

getAdminLink获得两个参数,控制器名称和第二个参数为布尔值true/false。默认情况下,第二个值设置为true,因此需要传递它。它用于为控制器创建令牌

我希望这对你有帮助


注意:上面的代码只是为了构思,可能需要也可能不需要一些更改。Admin dir存储在
\u PS\u Admin\u dir\u
变量中

管理目录存储在
变量中

对于admin dir,您可以这样获得它

 $admin = explode(DIRECTORY_SEPARATOR,_PS_ADMIN_DIR_);
 $admin_folder = array_pop((array_slice($admin, -1)));
管理员url

$admin_url =_PS_BASE_URL_.__PS_BASE_URI__.$admin_folder

对于admin dir,您可以这样获得它

 $admin = explode(DIRECTORY_SEPARATOR,_PS_ADMIN_DIR_);
 $admin_folder = array_pop((array_slice($admin, -1)));
管理员url

$admin_url =_PS_BASE_URL_.__PS_BASE_URI__.$admin_folder

PS\u BASE\u URI.basename(\u PS\u ADMIN\u DIR)

PS\u BASE\u URI.basename(\u PS\u ADMIN\u DIR)

但此变量不适用于任何地方,但此变量不适用于任何可以获得管理员文件夹名称的地方,如$ADMIN=explode(目录分隔符,PS\u ADMIN\u DIR)$admin_folder=array_pop((array_slice($admin,-1));您可以获得如下的管理员文件夹名$admin=explode(目录分隔符,PS\u admin\u DIR)$admin_folder=array_pop((array_slice($admin,-1));