2016-06-15 16 views
0

Wie kann ich den Typ des aktuellen Benutzers mit PUGXMultiUserBundle erhalten? Dieser Code gibt diesen Fehler zurückPUGXMultiUserBundle erhalten Typ des aktuellen Benutzers

{% if app.user.type == 'user_one' %} 
//... 
{% endif %} 

Dies wird den Fehler

Method "type" for object "AppBundle\Entity\UserOne" does not exist 

Diese Entität Benutzer

namespace AppBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="user") 
* @ORM\InheritanceType("JOINED") 
* @ORM\DiscriminatorColumn(name="type", type="string") 
* @ORM\DiscriminatorMap({"user_one" = "UserOne", "user_two" = "UserTwo"}) 
* 
*/ 

abstract class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 

} 

nach Aktualisieren der Datenbank gibt es einen neuen Feldtyp in der Tabelle Benutzern mit dem Namen erstellt

+0

Sie haben nicht genug Informationen gepostet ... –

+0

@AlvinBunk, Ich habe meine Frage aktualisiert – hous

Antwort

1

Ah, ich sehe das Problem. In der Zweig Datei, die Sie anrufen:

{% if app.user.type == 'user_one' %} 

Wo „app.user“ das Objekt angibt und „Typen“ die Methode angibt. Aber Sie haben keine "Methode" in der Klasse definiert. Stattdessen haben Sie die DiscriminatorColumn.

Verfahren wäre so etwas wie:

public function type(){ 
    ... 
} 

Hoffentlich, die Sinn macht.

+0

Ich denke, dass ich die DiscriminatorColumn vergessen und ein anderes Attribut erstellen muss. [http://stackoverflow.com/questions/21284964/map-a-discriminator-column-to-a-field-with-doctrine-2?answertab=active#tab-top] – hous

+0

Hat ich Ihre Frage beantwortet? Wenn ja, solltest du meine Antwort verbessern. –

Verwandte Themen