Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom helper not working as expected #11

Open
abhishek-ejam opened this issue Jul 20, 2022 · 0 comments
Open

Custom helper not working as expected #11

abhishek-ejam opened this issue Jul 20, 2022 · 0 comments

Comments

@abhishek-ejam
Copy link

abhishek-ejam commented Jul 20, 2022

I've created a custom helper that evaulates a conditional expression (similar to if with conditional expression) as below:

$this->handlebars->addHelper("compare",
    function($template, $context, $args, $source){
        
        list($operandSpecName, $operator, $operand2) = explode(" ",$args);

        $operand1 = $context->get($operandSpecName);
        $operator = str_replace("'", "", $operator);
        $operand2 = str_replace("'", "", $operand2);

        switch($operator){
            case '==':
                return ($operand1 == $operand2) ? true: false;
            case '===':
                return ($operand1 === $operand2) ? true: false;
            case '!=':
                return ($operand1 != $operand2) ? true: false;
            case '!==':
                return ($operand1 !== $operand2) ? true: false;
            default:
                return false;
        }
    }
);

Here's my template:

$template = `"{{#compare comics '==' 'Marvel'}}{{#compare movie '==' 'Avenger'}}8{{\/compare}}{{\/compare}}{{#compare comics '==' 'DC'}}{{#compare movie '==' 'Batman'}}9{{\/compare}}{{\/compare}}"

And here's the data I've passed:

$data = [
    "comics" => "Marvel",
    "movie" => "Avenger"
];

I've called the render function as below:

$this->handlebars->render($template, $data);

I expect the result of expression as 8 since only the first two expression of compare helper are evaluated as being true.
However, I get the output as 1189. I noticed that the helper returns 1 each time it evaluates a true condition and it also outputs result even if the codition does not evaluates true.
I was wondering if anyone can help me to correct the logic of my custom helper?
Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant