Designer:
tableName: designers
actAs:
I18n:
fields: [name]
columns:
id:
type: integer(2)
unsigned: true
primary: true
autoincrement: true
name:
type: string(30)
notnull: true
Default I18n
davranış bu şekilde kullanılması gerekir iken
$d = Doctrine_Query::create()
->select('id, t.name')
->from('Designer d')
->leftJoin('d.Translation t')
->where("t.lang = 'en'")
->execute();
Ben mevcut dilinde bazı sabit ayarlamak için faaar daha uygun olurdu, en
demek, her i18nable
alanı böylece bu tür sorgu sahip, buna karşılık var
$d = Doctrine_Query::create()
->select('id, name')
->from('Designer d')
->execute();
Yukarıdaki birine denk.
Ben böyle şeyleri sağlayabilir varsayılan birini, uzanan, yeni bir davranışı yapmak için çalışıyorum, ama yardımına ihtiyacım var.
Gerekli dil almak kolaydır, o yüzden sadece define('LANGUAGE', 'en')
var diyelim. Temel davranış sınıfı
class TransparentI18N extends Doctrine_Template
{
private $_translation = NULL;
public function setUp()
{
$this->addListener(new TransparentI18NListener());
$this->actAs(new Doctrine_Template_I18n($this->_options));
}
}
Yani fikir bir dinleyicisi eklemek için, yani ayarlamak için sorgu katılır değiştirebilir ve alanları seçme fıkra mevcut zaman gerekli alanları seçmek olacaktır. TransparentI18NListener
preDqlSelect
, Doctrine_Event
nesne aldığı içerir. Ve ben ilgili Doctrine_Query
alabilir ve hatta getDqlPart('select')
ikincisi döner gibi ham seçin dize, çalışır, ama id, t.name
, how can I get, to which table each clause corresponds?
Sonra Doctrine_Record
Mesela alanlarını ayarlamak gerekiyor. Is it possible without making models extend some custom class which would give such functionality? Ben böyle bir sınıf eklemek için gerçekten isteksiz değilim, ama diğer her şey başarısız durumda, ben bu alanları kaydetmek ve tercüme alanları göstermek için __get
yöntemini geçersiz kılmak gerekir Onlar istendiği takdirde.
Ben ekleme / güncelleme / silme parçası hakkında düşünmek için çok korktum, ama ben yukarıdaki sorunları ile uğraşmak durumunda umarım, ben DQL ve işi almak için kanca eklemek mümkün olurdu.
Eğer böyle bir düşünce çekirdek doktrin kütüphaneleri ile karışıklık olmadan genel olarak mümkün olduğunu düşünüyor musunuz? Varsayılan şekilde kullanmak zorunda * büyük bir acı olurdu ...