vishal
vishal

Reputation: 4083

Twig is not calling getter method of object property

I have this class,


class SecurityStat
{

    /**
     * @var integer
     */
    private $number_of_holders;

    /**
    * Set number_of_holders
    *
    * @param integer $numberOfHolders
    * @return SecurityStat
    */
    public function setNumberOfHolders($numberOfHolders)
    {
      $this->number_of_holders = $numberOfHolders;

      return $this;
    }

    /**
    * Get number_of_holders
    *
    * @return integer 
    */
    public function getNumberOfHolders()
    {
      return $this->number_of_holders;
    }

}


Acme\DemoBundle\Entity\SecurityStat:
  type: entity
  table: security_stats
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    number_of_holders:
      type: integer
      length: 15
      nullable: true

In twig template file,

{{ stat.number_of_holders }}

As per this documentation,

http://twig.sensiolabs.org/doc/templates.html#variables

It should call stat.getNumberOfHolders() getter but I am getting error

Twig_Error_Runtime: Method "number_of_holders" for object "Acme\DemoBundle\Entity\SecurityStat" does not exist

Upvotes: 2

Views: 4526

Answers (1)

Hannes
Hannes

Reputation: 8237

Its pretty much what the error message says, your property is accessible via your getter getNumberOfHolders so the property access path should be {{ stat.numberOfHolders }}

The call you make in twig must match the actual method name in your class, there is no magic way for twig to know that your private property number_of_holders is accessible via your method getNumberOfHolders.

Upvotes: 4

Related Questions