나는 나뭇 가지와 함께 슬림 3을 사용하고 있습니다. 이제 나뭇 가지 템플릿에 path_for
도우미가있는 링크를 "빌드"하려고 할 때 https://domain.tld/path/to/something
과 같은 전체 URL을 얻지 못하고 대신 /path/to/something
입니다. 내가 뭘 놓치고 있니? 방금 절대 하나가 아닌 전체 URL을 반환 나뭇 가지 도우미에게 path_for 을 원하는 경우에Slim3 + Twig> 관련 URL 대신 href 링크의 전체 URL.
답변
내가 다소 작업을 얻을 수있는 slim/twig-view 확장을 해킹했습니다. 그래서 TwigExtension.php에서 나는 이것이 해결하려면 더 우아한 방법이 있음을
public function pathFor($name, $data = [], $queryParams = [], $appName = 'default')
{
if (getenv('APP_HOST') != '') {
return getenv('APP_HOST') . $this->router->pathFor($name, $data, $queryParams);
}
return $this->router->pathFor($name, $data, $queryParams);
}
I 내기에
public function pathFor($name, $data = [], $queryParams = [], $appName = 'default')
{
return $this->router->pathFor($name, $data, $queryParams);
}
을 변경했습니다. 하지만 현재 그 수정 내 문제.
물론이 변수는을 통해 변수에 액세스 할 수있게하는 라이브러리와 함께 .env 파일을 사용해야합니다. 그 때문에 나는 PHPDotenv을 사용합니다. 당신은 모든 각도에서이 문제를 해결할 수 있습니다.
@ Scriptonomy의 해결책이 작동하지 않는 이유는 아직도 알지 못합니다. 그것은 정말로해야합니다. 그러나 나의 경우에는 그것은 단지하지 않는다. .. 내가 비틀었을지도 모르는 것에 관해서는 환영 받는다! :)
, 당신은 라우터의 basePath 속성을 설정해야합니다.
잡아 컨테이너 :
$container = $app->getContainer();
잡아 라우터 :
$router= $container->get('router');
설정 basePath는 :
$router->setBasePath('https://domain.tld');
'$ container = $ app-> getContainer(); $ router = $ container-> get ('router'); $ router-> setBasePath (getenv ('APP_HOST')); ' 어떤 이유로 든 아무 것도하지 않았습니다. 링크는 여전히 페이지 소스에서 상대적입니다. '$ container-> get ('settings')'을'$ container-> get ('router')'으로 변경했습니다. 'settings'에는 setBasePath 메소드가 포함되어 있지 않으므로 이제 오류는 발생하지 않지만 변경된 사항은 없습니다. : P –
btw. '.env' 파일로 _vital_ 데이터를 관리하므로 getenv (작동합니다, var_dump로 검사 됨). –
라우터 설정이 아니므로 오류입니다. – Scriptonomy
가능한 복제본 https://stackoverflow.com/questions/17049712/how-to-use-absolute-path-in-twig-functions –
이것은 Twig 문제가 아니기 때문에 그렇게 생각하지 마십시오. 정말. 슬림 한 라우터 문제라고 생각합니다. 너무 틀릴 수도 ... –