0
Я пытаюсь получить полный список всех моделей под app/Model
.Получить список моделей в CakePHP 2
Уже пробовали App::objects('Model')
, но он загружает только загруженные модели.
Возможно ли это в CakePHP 2?
Я пытаюсь получить полный список всех моделей под app/Model
.Получить список моделей в CakePHP 2
Уже пробовали App::objects('Model')
, но он загружает только загруженные модели.
Возможно ли это в CakePHP 2?
После некоторых исследований я обнаружил, что 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;
}
используя торт 2.8 он дает все модели, а не только загруженные из них – arilia