2016-06-09 7 views
5

W szablonów składni SilverStripe $AbsoluteLink Zwraca pełny adres URL strony/obiektu, w tym protokole i gospodarz:

http://www.example.com/event/ics 

Chcę być w stanie aby wywołać pełny adres URL z innym protokołem:

webcal://www.example.com/event/ics 

Jaki jest najlepszy sposób, aby to osiągnąć?

Odpowiedz

5

zdefiniować niestandardową metodę linku, który zastępuje aktualny protokół internetowej z żądanym jeden. to znaczy.

public function WebCalLink() 
{ 
    return str_replace(Director::protocol(), 'webcal://', Director::protocolAndHost()) . $this->Link(); 
} 
+1

Czy $ this-> Link() nie jest linkiem względnym? więc str_replace nie zadziała w tym przypadku? – wmk

+0

Str_replace nie działa na $ this-> Link(), działa na Director :: protocolAndHost() –

5

Dodać nową funkcję getter na swojej stronie:

public function WebcalLink() { 
    $absolute = $this->AbsoluteLink(); 
    $webcal = str_replace(Director::protocol(), "webcal://", $absolute); 
    return $webcal; 
} 

Można zadzwonić z szablonu za pomocą $ WebcalLink

Powiązane problemy