2016-07-27 7 views
0

Я пытаюсь получить полный список всех моделей под app/Model.Получить список моделей в CakePHP 2

Уже пробовали App::objects('Model'), но он загружает только загруженные модели.

Возможно ли это в CakePHP 2?

+0

используя торт 2.8 он дает все модели, а не только загруженные из них – arilia

ответ

0

После некоторых исследований я обнаружил, что App::objects('Model') возвращает все модели под app/Models и не включает в себя модели плагинов.

Чтобы включить все модели (модели приложений и плагинов моделей) я создал следующую функцию:

/** 
* Get models list. 
* 
* @return array 
*/ 
public static function getModels() { 

    // Get app models 
    $models = App::objects('Model'); 

    $models = array_combine($models, $models); 

    // Get plugins models 
    $pluginsFolder = new Folder(APP . 'Plugin'); 

    $plugins = $pluginsFolder->read(); 

    foreach ($plugins[0] as $plugin) { 

     $pluginModels = App::objects($plugin . '.Model'); 

     foreach ($pluginModels as $pluginModel) { 

      $models[$plugin . '.' . $pluginModel] = $plugin . '.' . $pluginModel; 

     } 

    } 

    // Exclude tableless and application models 
    $dataSource = ConnectionManager::getDataSource('default'); 

    $sources = $dataSource->listSources(); 

    foreach($models as $key => $model) { 

     $table = Inflector::tableize(self::modelName($key)); 

     if (stripos($model, 'AppModel') > -1 || !in_array($table, $sources)) { 

      unset($models[$key]); 

     } 

    } 

    return $models; 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^