Wie kann ich einen benutzerdefinierten DataGrid-Filter in SonataAdmin erstellen?

Ich habe eine Entitätstransaktion mit zahlreichen Statuscodes. Ich möchte, dass der Benutzer diese Statuscodes als Zeichenfolgen in SonataAdmin sehen kann. Der Benutzer sollte auch in der Lage sein, anhand dieser Statuscodes zu filtern.

<code>Entity Transaction 
{
    const TRANSACTION_STATUS_WAITING = 1;
    const TRANSACTION_STATUS_PENDING = 2;
    const TRANSACTION_STATUS_CONFIRMED = 3;

   /**
     * Set status
     *
     * @param smallint $status
     */
    public function setStatus($status)
    {
        $this->status = $status;
    }

    /**
     * Get status
     *
     * @return smallint 
     */
    public function getStatus()
    {
        return $this->status;
    }

    public function getStatusAsString()
    {
        switch($this->status){
            case(self::TRANSACTION_STATUS_WAITING): return "Waiting for Merchant";
            case(self::TRANSACTION_STATUS_PENDING): return "Pending Confirmation";
            case(self::TRANSACTION_STATUS_CONFIRMED): return "Confirmed";
        }
    }
}
</code>

Ich habe meinen Sonata List Mapper folgendermaßen konfiguriert:

<code>protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('statusAsString', null, array('sortable' => true, 'label' => 'Status'))
}
</code>

das funktioniert einwandfrei:

Ich kann jedoch nicht dasselbe als Filter verwenden.

Wenn ich das versuche:

<code>protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('user')
        ->add('status') // Works well 
        ->add('statusAsString', null, array('label' => 'Status')) // Doesn't work: 
    ;
}
</code>

Das geht nicht. Es gibt folgenden Fehler ->

<code>Notice: Undefined index: statusAsString in ..../Sonata\DoctrineORMAdminBundle\Guesser\FilterTypeGuesser.php 
</code>

Wie kann ich es zum Laufen bringen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage