使用i18n数据库表(cakePHP)从两个表转换

时间:2013-04-21 19:39:25

标签: cakephp internationalization

我有四张桌子:

gallery_categories表: id(int); title(varchar);

gallery_pictures表: id(int); title(varchar);

gallery_categories_gallery_pictures表联合上表: gallery_category_id(int); gallery_picture_id(int);

和i18n表: id(int) locale(varchar) model(varchar) foreign_key(int) 字段(varchar) 内容(文字)

我试过了:

$this->GalleryCategory->bindModel(array(
            'hasOne' => array(
                'GalleryCategoriesGalleryPicture',
                'GalleryPicture' => array(
                    'className' => 'GalleryPicture',
                    'foreignKey' => false,
                    'conditions' => array('GalleryPicture.id = GalleryCategoriesGalleryPicture.gallery_picture_id')
            ))));
            $galleryCategories = $this->GalleryCategory->find('all', array(
                'fields' => array('GalleryCategory.*','GalleryPicture.*')
            ));

但是它一直返回正确的Category表字段和错误的Pictures表字段...... “类别”字段包含正确的翻译单词。 Pictrures字段包含错误的翻译单词。

模特:

class GalleryCategory extends AppModel
{
    public $tablePrefix = 'ef_';
    var $name = 'GalleryCategory';

    public $actsAs = array('Translate' => array(
                                                'title'             => 'titleTranslation'
                                                )
                            );
}



class GalleryPicture extends AppModel
{
    public $tablePrefix = 'ef_';
    var $name = 'GalleryPicture';

    public $actsAs = array('Translate' => array(
                                                'title'             => 'titleTranslation'
                                                )
                            );
}

我怎样才能从两个表中得到正确的翻译单词?

ps:使用“i18n数据库表”的翻译仅适用于一个表(exp:仅限GalleryCategory或仅限GalleryPicture)。

1 个答案:

答案 0 :(得分:1)

翻译不适用于相关模型,请参阅last couple of lines here

  

请注意,只会翻译您直接执行find的模型字段。通过关联附加的模型将不会被翻译,因为目前不支持在关联模型上触发回调。

<强>更新 这可能很棘手,因为你有一个HABTM关系 - 以前我通过在模型的afterFind回调中添加第二个数据检索来解决这个问题,但这是一个更简单的关联。希望这会有所帮助。