我正在尝试从模块中获取管理员网址和管理员目录。
你能举一个例子从模块php页面找到admin url和admin dir吗?
<?php
define('PS_ADMIN_DIR', dirname(__file__) . '/../../testadmin');
echo PS_ADMIN_DIR;
这段代码给了我
/home/myaccount/public_html/modules/suppliers/../../testadmin
我期待得到
/home/myaccount/public_html/testadmin
有什么想法吗?
答案 0 :(得分:4)
您可以使用“_PS_ROOT_DIR_”获取它,并在其下方附加您的管理员目录名称
_PS_ROOT_DIR_."/testadmin"
这将为您提供管理目录的完整路径。 _PS_ROOT_DIR_用于获取安装它的目录的PS完整路径。
您无法直接获取管理网址,因为PS系统不知道管理员目录,因为出于安全原因,我们可以随时将管理目录名称更改为任何名称。因此,要构建一个知道您的管理目录名称为“testadmin”且控制器名称为“AdminTest”的管理URL,您可以创建一个URL,如下所示
$link = new Link();
_PS_BASE_URL_.__PS_BASE_URI__."testadmin/".$link->getAdminLink('AdminTest', true);
这将为您提供完整的链接,包括完整的域和子目录(如果安装在子目录中)。
getAdminLink获取两个参数,控制器名称,第二个是布尔值true / false。默认情况下,第二个设置为true,因此需要传递它。它用于为控制器创建令牌。
我希望这会对你有所帮助。
注意:以上代码仅供参考,可能需要也可能不需要进行一些更改。
答案 1 :(得分:1)
<强> PS_BASE_URI 强> .basename(_PS_ADMIN_DIR _)
答案 2 :(得分:0)
Admin dir存储在_PS_ADMIN_DIR_
变量中。
答案 3 :(得分:0)
对于管理员目录,你可以像那样
$admin = explode(DIRECTORY_SEPARATOR,_PS_ADMIN_DIR_);
$admin_folder = array_pop((array_slice($admin, -1)));
管理员网址
$admin_url =_PS_BASE_URL_.__PS_BASE_URI__.$admin_folder
答案 4 :(得分:-2)
<?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);
?>
这将打印
path : /http/fpm/http/data/../../node/ isdir ? [yes] dirname : /http/fpm/http/data/../.. pathinfo : /http/fpm/http/data/../.. trimpath : /http/fpm/node/