Symfony eklenti sfDoctrineActAsTaggablePlugin çalışmıyor

0 Cevap php

Benim doktrin modelinin bazı nesneler için bazı etiketler atfetmek istiyorum.

Ben ihtiyacım tam olarak ne gibi görünüyor sfDoctrineActAsTaggablePlugin hangi bulundu.

Sorun bir taggable nesneyi kaydetmek istediğiniz zaman, bu hatayı alıyorum olduğunu:

Unknown record property / related component "saved_tags" on "Mishidea"

Mishidea Ben taggable olmak istiyorum sınıf / tablonun adıdır.

İşte benim schema.yml dosyasının ilgili kısmıdır:

Mishidea:
  connection: doctrine
  actAs: {Timestampable: ~ , Taggable: ~ }      
  tableName: mishidea
  columns:
    idea_id:
      type: integer(4)
      primary: true
      autoincrement: true
    idea_title:
      type: string()
      notnull: true
      primary: false
    idea_summary:
      type: string()
      notnull: true
      primary: false
    idea_description:
      type: string()
      notnull: true
      primary: false
    idea_up:
      type: integer(8)
      notnull: true
      default: 0
      primary: false
    idea_down:
      type: integer(8)
      notnull: true
      default: 0
      primary: false
    idea_confirmation:
      type: boolean(1)
      default: false
      primary: false
    group_id:
      type: integer(4)
      notnull: false
      primary: false
  relations:
    Mishgroup:
      local: group_id
      foreign: group_id
      type: one
    Ideacomment:
      local: idea_id
      foreign: idea_id
      type: many
    Mishdocument:
      local: idea_id
      foreign: idea_id
      type: many
    RelIdeafollower:
      local: idea_id
      foreign: idea_id
      type: many

Ben de gibi sınıfının ACTAS özniteliği için sözdizimi diğer türleri çalıştı:

actAs:
    Timestampable: ~
    Taggable: ~

ve:

actAs:[Timestampable,Taggable]

Ben olsun ama bu sorun değil:

$timestampable0 = new Doctrine_Template_Timestampable();
$taggable0 = new Taggable();
$this->actAs($timestampable0);
$this->actAs($taggable0);

benim modeli BaseMishidea.php sınıfında.

Modeli $ this-> ACTAS () deyimi yoluyla davranış eklemek gibi görünüyor beri Mishidea sınıf taggable sınıfı buna eklemek gerekir özelliklerini almaz neden anlamıyorum.

Bu eklenti nasıl çalışma almak için?

Eğer yardımcı olur, ben MySQL / InnoDB ile Symfony 1.4 kullanımı ve ben aynı sonucu ile, PostgreSQL DBMS ile daha önce denemişti.

Senin yardım çok takdir.

Teşekkürler

FuzzyTern


Edit1 - johnwards ne dedi İlişkin: herkes taggable davranış yoluyla schema.yml dosyasına eklenir teyit edebilir "ACTAS:" değil, "şablonları:"? Ben orada burada okumak ne (johnwards 'yazı üzerine benim yorum bakınız) ancak her ikisi de çözümler benim için çalışmak ne Beri, emin değilim. "Şablonlar" anahtar sözcüğünü kullanarak alıyorum:

Unknown method Mishidea::addTag

ve modelin spesifik sınıfları oluşturulmaz.


EDIT2 - After a further investigation, I found that the Symfony stack trace is interresting. Indeed, when I do:

$idea = new Mishidea();
$idea->save();

TaggableListener ilişkisi çalışma olduğunu gösterir, (aşağıdaki yığın izleme noktası 8) denir. Ama sonra ne oluyor anlamak ve istisna yol yoktur.

Iz Stack:

1. at ()
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/Standard.php line 55 ...

    public function filterGet(Doctrine_Record $record, $name)

    {

        throw new Doctrine_Record_UnknownPropertyException(sprintf('Unknown record property / related component "%s" on "%s"', $name, get_class($record)));

    }

}

2. at Doctrine_Record_Filter_Standard->filterGet(object('Mishidea'), 'saved_tags')
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php line 1374 ...
3. at Doctrine_Record->_get('saved_tags', 1)
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php line 1333 ...
4. at Doctrine_Record->get('saved_tags')
in n/a line n/a ...
5. at call_user_func_array(array(object('Mishidea'), 'get'), array('saved_tags'))
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php line 212 ...
6. at sfDoctrineRecord->__call('getSavedTags', array())
in n/a line n/a ...
7. at Mishidea->getSavedTags()
in SF_ROOT_DIR/plugins/sfDoctrineActAsTaggablePlugin/lib/TaggableTemplate.class.php line 93 ...
8. at TaggableListener->postSave(object('Doctrine_Event'))
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/Chain.php line 237 ...
9. at Doctrine_Record_Listener_Chain->postSave(object('Doctrine_Event'))
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php line 355 ...
10. at Doctrine_Record->invokeSaveHooks('post', 'save', object('Doctrine_Event'))
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php line 112 ...
11. at Doctrine_Connection_UnitOfWork->saveGraph(object('Mishidea'))
in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php line 1691 ...
12. at Doctrine_Record->save()
in SF_ROOT_DIR/apps/frontend/modules/idea/actions/actions.class.php line 24 ...

If someone wants to see the code for any point of the stack trace (only 1. is expanded here), just ask. Any suggestion is welcomed.

0 Cevap