php - twig: How to add Twig extension file whilst NOT using symfony -
i using v1.12.2 twig standalone templating engine.
i wrote twig extension called utility_twig_extension in file called utilityextension.php
and index.php
//index.php require_once '../vendor/twig/twig/lib/twig/autoloader.php'; twig_autoloader::register(); $loader = new twig_loader_filesystem(oebps); $twig = new twig_environment($loader, array( 'cache' => app . ds . 'cache', )); require_once '../vendor/twig/twig/ext/utility/utilityextension.php'; $twig->addextension(new utility_twig_extension()); here utilityextension.php //utilityextension.php namespace utilitytwigextension;
class utility_twig_extension extends twig_extension { public function getname() { return "utility"; } } here directory structure:
src |__app | |__ index.php |__vendor |__twig |__twig |__ext |__lib i cannot load file properly.
i have traced issue fact extension class tries extend twig_extension.php.
so require_once twig_extension extension.php file in utilityextension.php. however, still not working.
most documentation talks adding custom twig extension in context of symfony.
i using twig standalone, have yet find documentation on that.
please advise.
update1:
by not working, meant 500 server error. ran error_reporting(e_all) no avail.
the error relieved moment removed words extends twig_extension extension class.
update2: realized namespace issue. because removed namespace utilitytwigextension; utilityextension.php , server 500 error gone.
so put namespace utilitytwigextension; , call
require_once '../vendor/twig/twig/ext/utility/utilityextension.php'; $twig->addextension(new utilitytwigextension\utility_twig_extension()); the error came back.
question: how call twigextension if insist on using namespace? there better way of using namespace?
update3:
i still server 500 after trying luceos answer.
error_reporting(e_all); require_once 'constants.php'; require_once 'ziplib.php'; require_once '../vendor/twig/twig/lib/twig/autoloader.php'; twig_autoloader::register(); $loader = new twig_loader_filesystem(oebps); $twig = new twig_environment($loader, array( 'cache' => app . ds . 'cache', )); require_once '../vendor/twig/twig/ext/utility/utilityextension.php'; use utilitytwigextension\utility_twig_extension; $twig->addextension(new utility_twig_extension()); the utilityextension.php
namespace utilitytwigextension; class utility_twig_extension extends twig_extension { /** * returns name of extension. * * @return string extension name */ public function getname() { return 'utility'; } }
so let's put comments in answer , move on there without crowding comments:
first of call extension correct namespace:
use utilitytwigextension\utility_twig_extension; $twig->addextension(new utility_twig_extension()); use , namespaces calls placed @ top of file.
you can try calling namespace + object directly using:
$twig->addextension(new utilitytwigextension\utility_twig_extension());
update 3
the utility_twig_extension extends twig_extension namespace utilitytwigextension, not exist. assume twig_extension not in namespace you'll use \twig_extension:
namespace utilitytwigextension; class utility_twig_extension extends \twig_extension { /** * returns name of extension. * * @return string extension name */ public function getname() { return 'utility'; } }
Comments
Post a Comment