2016-03-15 11 views
5

Wiem, że to głupie, ale mam sytuację, że tworzę menu w różnych folderach. I próbowałem stworzyć baseurl dla menu.W jaki sposób utworzyć adres URL BASE strony internetowej, jeśli menu jest w innym folderze?

function getBaseUrl() 
{ 
    $currentPath = $_SERVER['PHP_SELF']; 
    $pathInfo = pathinfo($currentPath); 
    $hostName = $_SERVER['HTTP_HOST']; 
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; 
    return $protocol.$hostName.$pathInfo['dirname']."/"; 
} 

Użyj adresu URL bazowego, takiego jak <?php echo getBaseUrl(); ?>. Mój problem polega na:

Niech I posiadają menu aaa bbb ccc ddd. I strona z menu aaa znajduje się wewnątrz folder1/page1.php menu jest w środku folder2/page2.php. Nie mogę przejść z menu aaa do menu bbb.

Ktoś ma pomysł? proszę sugerować

+0

Gdzie jesteś wywołanie tej funkcji 'getBaseUrl'? Czy możesz opublikować menu HTML? – KAD

+0

@ KAD Używam getBaseUrl() na stronie nawigacyjnej i uwzględniam na wszystkich stronach. Strony menu są proste. Nie tak skomponowane. Po prostu chcę uzyskać poprawny hiperłącze do wszystkich menu –

+0

'| >Operating Expences | >Revenue 'Operacyjne Expences znajduje się w głównym folderze (go), a dochód jest w nim/proponowanym folderze –

Odpowiedz

2

Można utworzyć tablicę z listy stron, które zostały indeksowane przez wytwórnię:

function getBaseUrl($naviItem) 
{ 
    var $navigation = array( 
     'aaa_menu' => '/folder1/page1.php', 
     'bbb_menu' => '/folder2/page2.php' 
    ); 

    //$currentPath = $_SERVER['PHP_SELF']; 
    //$pathInfo = pathinfo($currentPath); 
    $hostName = $_SERVER['HTTP_HOST']; 
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; 

    // return the path relative to the passed navitem 
    return $protocol.$hostName.$navigation[$naviItem]; 
} 

Następnie w kodzie HTML, możesz przekazać tę etykietę względem elementu nawigacyjnego chcesz osiągnąć baseURL dla:

<a href="<?php echo getBaseUrl('aaa_menu'); ?>">aaa</a> 
<a href="<?php echo getBaseUrl('bbb_menu'); ?>">bbb</a> 
0

Witam Shrestha to bardzo proste wystarczy zdefiniować stałe i używać

define('DOMAIN_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/projectname/'); 

A przy ustalaniu powiązań -

<a href="<?php echo DOMAIN_URL; ?>/folder1/page1.php">aaa</a> 
<a href="<?php echo DOMAIN_URL ?>/folder2/page2.php">bbb</a> 
+0

ok, ale mam stronę nagłówkową, która zawiera plik css i js. Może być użyty do obu menu. Nie mogę użyć 2 różnych linków. Jak to zrobić? –

+0

Gdzie powinienem umieścić definicję? Kontrakt na kontrolerze? Czy gdzie? –

Powiązane problemy