У меня есть проект Symfony, который из-за проблем с DNS является http://<project-name>/
локально, но должен быть http://<qa-host-name>/<project-name>;/
при размещении в среде с более высоким уровнем QA, но может быть http://<domain-name>/
для производства (поэтому я нужно, чтобы это работало для обоих). Теперь папка с изображениями всегда будет относиться к каталогу <project-name>
, поэтому локально она будет http://<project-name>/my-smilie.png
, а в QA она будет http://<qa-host-name>/<project-name>/my-smilie.png
Поскольку все относится к URL-адресу index.php, я подумал, что у Symfony будет что-то для создания динамических URL-адресов, которые работают, даже если контекст отличается, так что мой template.php
может иметь что-то вроде
<?php echo image_url("my-smilie.png");
/*see below for potential implementation*/?>
и будет выведено http://<project-name>/my-smilie.png
, http://<qa-host-name>/<project-name>/my-smilie.png
или http://<domain-name>/my-smilie.png
. (Относительные URL-адреса хороши, но абсолютные лучше).
Ниже приведен пример того, что я ищу, но мне кажется, что я пытаюсь заново изобрести колесо, и что Symfony уже достиг этого.
function image_url($img)
{
return get_base_url() . '/images/' . $img;
}
function get_base_url()
{
$par = dirname( $_SERVER[ 'SCRIPT_NAME' ] );
if($par == "/") $par = "";
return $par;
}