Code Monkey home page Code Monkey logo

Comments (7)

everplays avatar everplays commented on August 15, 2024

Hey,

I would like to see that too.

have a look at 172th and 175th lines of Template.php file, that's where {{foo}} gets replaced by $context->get('foo'). probably changing _variable should be far easier but I think it's better to keep what it does as simple as possible and have another method that checks if there's any helper registered with $current[Tokenizer::NAME] and if there wasn't, it calls _variable.

from handlebars.php.

duckbox avatar duckbox commented on August 15, 2024

Thanks for the speedy response!

I'll have a look into that, I came up with a weaker method of checking the template source before compile, to correct any matching helpers,

if {{fullname => {{#fullname etc

Out of curiosity, if you could help, on registering helpers, I've only successfully added them in the actual Helper class.

Is there a more specific example of how to add them outside of the class with a Handlebars instance ?

from handlebars.php.

everplays avatar everplays commented on August 15, 2024

there's no need to do that, you can have your own helper class and register helpers like $handlebars->addHelper("foo", array("Namespace\\MyHelpers", "foo_method")) or just use closures like

$handlebars->addHelper('foo', function($template, $context, $args, $source) {
    ...
});

you can use anything that makes is_callable happy.

anyways, I keep this open until we fix calling helpers with {{helperName args}} syntax.

from handlebars.php.

duckbox avatar duckbox commented on August 15, 2024

@everplays Amazing. Again thank you.

from handlebars.php.

yuta1228 avatar yuta1228 commented on August 15, 2024

Hello, I'm running into similar issue.
Would love to see this as well.

I tried to modify the src to have it working, and my finding was that, for one, when doing with
{{helperName args}}
Tokenizer doesn't recognize the arguments, so I added T_ESCAPED, T_UNESCAPED, T_UNESCAPED2 to argument interpretation and expanded the Template.php in cases for types above to; if it has argument, run the _section instead of _variables.

It did work, but then it mis-interrupted the variable with path i.e ../variable

using php-52 version btw.

thanks for the cool port 👍

from handlebars.php.

everplays avatar everplays commented on August 15, 2024

@yuta1228 I don't understand, why it would interrupt ../variable? $context->get handles 'em which won't be touched at all.

from handlebars.php.

yuta1228 avatar yuta1228 commented on August 15, 2024

Sorry, let me try to make it clear.

So I was testing Tolkenizer::scan to let in
Tolkenizer::T_ESCAPED
Tolkenizer::T_UNESCAPED
Tolkenizer::T_UNESCAPED2
to checking if these type has arguments.

It would have ../variable go in for scan to see if it has arguments, and somehow it was interpreted as helper when it got to Template::render.

I found out that when checking those types for arguments, it should not default to have args variable default to empty string as it does in case for Tolkenizer::T_SECTION and others.

Once that was taken care of it seems to have no problem.

from handlebars.php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.