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

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -