2011-12-24 50 views
0

我的文件夾/命名空間層次:鋰關係名稱空間錯誤?

  • 應用程序/模型/實體
    • Entities.php
      • People.php
      • (其他型號)

我跟着每這一問題的說明:lithium fill multiple models from view,卻得到了一個錯誤「未能打開流:C中沒有這樣的文件或目錄:\ XAMPP \ htdocs中\ PhiCRM \庫\鋰\核心\ Libraries.php在468" 線,這,是啊......曲子,你上面看到的,其嵌套在另一個文件夾,這是CONFIGS數組中指示,下面

我修復所示:我改變

public $belongsTo = array(
    'People' => array(
     'class' => '\app\models\entities\people\People', 
     'key' => 'person_id', 
    ), 
); 

public $belongsTo = array(
    'people\People' => array(
     'class' => '\app\models\entities\people\People', 
     'key' => 'person_id', 
    ), 
); 

現在錯誤消失(將第二行從'People'更改爲'people \ People'),但現在出現錯誤:'Related model class'app \ models \ entities \ people \ people \ People ' 未找到。'在第159行的C:\ xampp \ htdocs \ PhiCRM \ libraries \ lithium \ data \ model \ Relationship.php中,所以現在它將其他人添加到路徑字符串中。

我的問題:這是預期的行爲?關係模型不應該使用我在$ configs數組中提供的類路徑而不是使用類名字符串連接?如果它有缺陷,我應該報告它,以及如何?

回答

1
public $belongsTo = array(
    'People' => array(
     'to' => '\app\models\entities\people\People', 
     'key' => 'person_id', 
    ), 
); 

應工作更好 '到' 代替 '類' ;-)

0

在librarires /鋰/數據/模型/ Relashionships.php,LN 115,原來的代碼是:

if (!$config['to']) { 
     $assoc = preg_replace("/\\w+$/", "", $config['from']) . $name; 
     $config['to'] = Libraries::locate('models', $assoc); 
    } 

改爲

if (!$config['to']) { 
     if(!$config['class']){ 
      $assoc = preg_replace("/\\w+$/", "", $config['from']) . $name; 
     } 
     else{ 
      $assoc = $config['class']; 
     } 
     $config['to'] = Libraries::locate('models', $assoc); 
    } 

似乎框架假設相關模型將在相同的命名空間。我改變了它,所以如果在模型中的關係聲明中填寫了類配置,它將使用它。

相關問題