Получить URL-адрес Symfony относительно файла индекса - PullRequest
1 голос
/ 22 декабря 2010

У меня есть проект 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;
}

Ответы [ 2 ]

6 голосов
/ 22 декабря 2010

try public_path('images/smilie.jpg') function

public_path () manual

3 голосов
/ 30 декабря 2010

Я только что столкнулся с ситуацией, когда хелпер public_path работает не очень хорошо, но есть альтернатива:

    // this populates $host with absolue URL of the parent directory 
    // of the Symfony script
    $host = $request->isSecure()? 'http://':'https://';
    $host .= $request->getHost() . $request->getRelativeUrlRoot();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...