3

モジュールから管理 URL と管理ディレクトリを取得しようとしています。

モジュールphpページから管理者URLと管理者ディレクトリを見つける例を教えてください。

<?php
define('PS_ADMIN_DIR', dirname(__file__) . '/../../testadmin');  
echo PS_ADMIN_DIR;

このコードは私に与えます

/home/myaccount/public_html/modules/suppliers/../../testadmin

私は得ることを期待していた

/home/myaccount/public_html/testadmin

何か案は?

4

6 に答える 6

4

「 _PS_ROOT_DIR_ 」を使用して取得し、以下のように管理ディレクトリ名を追加できます

 _PS_ROOT_DIR_."/testadmin" 

これにより、admin ディレクトリへのフル パスが得られます。_PS_ROOT_DIR_ は、PS がインストールされているディレクトリへの完全なパスを取得するために使用されます。

セキュリティ上の理由から、管理ディレクトリ名はいつでも任意の名前に変更できるため、PS システムは管理ディレクトリを認識しないため、管理 URL を直接取得することはできません。したがって、管理ディレクトリ名「testadmin」とコントローラー名「AdminTest」を認識して管理 URL を作成するには、以下のように URL を作成できます。

$link = new Link(); 
_PS_BASE_URL_.__PS_BASE_URI__."testadmin/".$link->getAdminLink('AdminTest', true);

これにより、完全なドメインとサブ ディレクトリ (サブ ディレクトリにインストールされている場合) を含む完全なリンクが得られます。

getAdminLink は 2 つの引数、コントローラー名を取得し、2 番目はブール値の true / false です。デフォルトでは、2 番目は true に設定されているため、渡す必要があります。コントローラーのトークンを作成するために使用されます。

これがお役に立てば幸いです。

注:上記のコードは単なるアイデアであり、変更が必要な場合とそうでない場合があります。

于 2013-04-29T06:14:15.887 に答える
2

PS_BASE_URI .basename(_PS_ADMIN_DIR_)

于 2017-01-12T13:56:02.740 に答える
-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/
于 2013-04-28T12:45:13.210 に答える