CakePHP - 重新导入的模型和(i18n)使用空字符串进行翻译

时间:2013-06-25 13:32:35

标签: cakephp internationalization translation cakephp-2.1 cakephp-appmodel

问题是我导入了一个模型。

App::import('Model', 'Carrier');
$this->Carrier = new Carrier;

我稍后重新导入并修改此模型。通常它也会起作用。但是,这是一个多语言网站。第二个实例,它返回一个空字符串。

我试过这个

App::import('Model', 'Carrier');
$this->Carrier = new Carrier;
... blabla...
App::import('Model', 'Carrier');
$this->getCarrier = new Carrier;
... blabla...

并尝试了这个:

App::import('Model', 'Carrier');
$this->Carrier = new Carrier;
... blabla...
unset($this->Carrier);
App::import('Model', 'Carrier');
$this->Carrier = new Carrier;
... blabla...

相同的结果:它从数据库返回一个空字符串的第二个实例。

我的翻译模式:

<?php
class Carrier extends AppModel
        {
        var $name = 'Carrier';
        public $actsAs = array('Translate' => array(
                                                'name',
                                                'description'
                                                     )
                                );
        }
?>

更新

通常结果:

Array ( [Carrier] => Array ( [id] => 1 [name] => TestCarrier [description] => Example  [status] => 1 ) )

重新导入模型的结果错误:

Array ( [Carrier] => Array ( [id] => 1 [name] =>  [description] => [status] => 1 ) )

1 个答案:

答案 0 :(得分:1)

您不应该使用App :: import()。这仅适用于供应商类别。 在内部,它的App :: uses()。

但对于模型,这也不适用。 只需使用ClassRegistry :: init():

$Carrier = ClassRegistry::init('Carrier');
$results = Carrier->find(...);

对于模型,cake有自己的加载机制。