Как получить список модулей в symfony - PullRequest
0 голосов
/ 21 апреля 2011

Я новичок в Symfony и изучаю его. Я хочу, чтобы все рабочие модули и их методы динамически формировали список для реализации ACL.

foreach(getModules() as $module)
{
   echo $moudule .' has following methods: '; 
   foreach( $module as $method )
   {
       echo $method.'<br />';
   }
}

Выше код не является допустимым кодом. это просто идея получить вещи.

Ответы [ 2 ]

2 голосов
/ 07 января 2013

Вы можете индексировать все модули вашего приложения, используя собственный код.Вы можете использовать действие или компонент для этого.Вот код:

  $this->modulos = array();

  $aplicacion = "admin"; //The name of your symfony app
  $directorio = opendir("../apps/$aplicacion/modules");
  while($file = readdir($directorio)){
      if($file=="..")continue;
      if($file==".")continue;
      // here you can filter the modules
      $this->modulos[] = $file;
  }

... и шаблон:

<?php foreach($modulos as $modulo):?>
    <div>
        <?php echo link_to($modulo,"@default?module=$modulo&action=index") ?>
    </div>
<?php endforeach; ?>

Теперь у вас есть список всех ваших модулей.

2 голосов
/ 03 июня 2011

Symfony 1 не (насколько я могу найти) не поддерживает список всех модулей во время выполнения.По соображениям производительности, он только пытается загрузить один, когда он вызывается.Вы можете попробовать что-нибудь грязное, например, разбор кэша автозагрузчика, но я бы не советовал.

Я предполагаю, что вам нужен список, чтобы вы могли создать интерфейс администратора для вашего инструмента ACL.Альтернативный подход заключается в получении списка маршрутов, что определенно возможно, например, sfContext::getInstance()->getRouting()->getRoutes().

Если вы хотите, чтобы ваши ACL-списки применялись к определенным классам или объектам, а не к URL-адресам или действиям, то я предлагаю перейти к Symfony2 со встроенной этой функцией .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...