Jakie są kroki programistyczne, aby zmienić ten ciąg:
AcmeProjectBundle::home.html.twig
Zaangażowany w to?
/path/Symfony/src/Acme/ProjectBundle/Resources/views/home.html.twig
2 odpowiedzi
Jeśli chcesz pobrać ścieżkę z kontrolera, możesz użyć tego kodu:
$parser = $this->container->get('templating.name_parser');
$locator = $this->container->get('templating.locator');
$path = $locator->locate($parser->parse('AcmeProjectBundle::home.html.twig'));
Aby uzyskać więcej informacji, spójrz na kod:
Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser::parse
Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator::locate
(Aby rozwinąć odpowiedź Molecular Man)
Dla osób, które tego potrzebują w Symfony 4:
Usługa templating.name_parser
nie jest już domyślnie zarejestrowana jako taka i potrzebujesz zależności symfony/templating
w Composer, aby można było z niej korzystać.
Ponadto zaleca się, aby teraz nie używać kontenera bezpośrednio do pobierania usług (nie wspominając o tym, że nowy kontroler AbstractController nie udostępnia wszystkich usług), ale raczej wykonywać wstrzykiwanie zależności za pomocą podpowiedzi typu.
Tak więc, sposób na to, aby działał z Symfony 4:
//...
use Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator;
use Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser;
class DefaultController extends AbstractController
{
public function indexAction(TemplateNameParser $parser, TemplateLocator $locator)
{
$path = $locator->locate($parser->parse('AcmeProjectBundle::home.html.twig'));
//...
}
}
Podobne pytania
Powiązane pytania
Nowe pytania
symfony
Symfony odnosi się zarówno do frameworka PHP do budowania aplikacji internetowych, jak i zestawu komponentów, na których zbudowany jest framework. Ten tag odnosi się do aktualnie obsługiwanych głównych wersji 3.x, 4.x i 5.x. Alternatywnie możesz określić dokładną wersję za pomocą odpowiedniego tagu. Tego znacznika nie należy używać w przypadku pytań o Symfony 1.x. Zamiast tego użyj tagu Symfony1.