2010-12-22 12 views
1

ich ein symfony-Projekt haben, die wegen DNS-Probleme, http://<project-name>/ lokal ist, aber es muss http://<qa-host-name>/<project-name>;/ sein, wenn in einem QS-Level-Umgebung gehostet, aber es http://<domain-name>/ für die Produktion (so sein kann, Ich brauche das für beide). Nun wird die Bilder-Ordner immer relativ sein werden das <project-name> Verzeichnis, so lokal es http://<project-name>/my-smilie.png sein wird und auf QA wird es http://<qa-host-name>/<project-name>/my-smilie.pngGet Symfony URL in Bezug auf die Indexdatei

werden, da alles auf die URL der index.php relativ ist, dachte ich, dass Symfony hätte etwas dynamischen URLs zu erstellen, die auch funktionieren, wenn der Kontext anders ist, so dass meine template.php so etwas wie

<?php echo image_url("my-smilie.png"); 
     /*see below for potential implementation*/?> 

haben könnte und es ausgeben würde http://<project-name>/my-smilie.png, http://<qa-host-name>/<project-name>/my-smilie.png oder http://<domain-name>/my-smilie.png. (Relative URLs sind in Ordnung, aber absolut wäre besser).

Unten ist ein Beispiel von dem, was ich suche, aber ich fühle mich wie ich versuche, das Rad neu zu erfinden und dass Symfony dies bereits erreicht hat.

function image_url($img) 
{ 
    return get_base_url() . '/images/' . $img; 
} 


function get_base_url() 
{ 
    $par = dirname($_SERVER[ 'SCRIPT_NAME' ]); 
    if($par == "/") $par = ""; 
    return $par; 
} 
+0

Warum nicht Subdomains in der QA-Domäne für jedes Projekt? – lonesomeday

+0

Eine der Phasen wird über dyndns gesendet, dh ich kann keine Subdomains erstellen. – cwallenpoole

+0

Ich gebe zu, das ist eine schreckliche Lösung, aber es löst eine Reihe anderer Probleme. – cwallenpoole

Antwort

3

ich auf eine Situation gerade kam, wo der public_path Helfer nicht sehr gut funktioniert, aber es gibt eine Alternative:

// this populates $host with absolue URL of the parent directory 
    // of the Symfony script 
    $host = $request->isSecure()? 'http://':'https://'; 
    $host .= $request->getHost() . $request->getRelativeUrlRoot();