Можно ли использовать две разные папки плагинов в Symfony? - PullRequest
1 голос
/ 15 сентября 2010

В symfony папкой плагинов по умолчанию является / plugin, мне интересно, есть ли способ использовать более одной папки для классификации различных типов плагинов?

Существует sf_plugin_dir, но я не уверен, что его можно настроить как массив, что-то вроде

array(
  '/plugin-folder1/..',
  '/plugin-folder2/..',
)

и до сих пор все работает? Как и плагин: задача publish-assets.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

У меня есть другое решение, которое не требует, чтобы вы поддерживали список плагинов:

В ProjectConfiguration.class.php

public function getAllPluginPaths()
{
  $pluginPaths = array();

  // search for *Plugin directories representing plugins
  // follow links and do not recurse. No need to exclude VC because they do not end with *Plugin
  $finder = sfFinder::type('dir')->maxdepth(0)->ignore_version_control(false)->follow_link()->name('*Plugin');
  $dirs = array(
    $this->getSymfonyLibDir().'/plugins',
    'path/to/some/other/dir/plugins', # add path to your dir here.
    sfConfig::get('sf_plugins_dir'),
  );

  foreach ($finder->in($dirs) as $path)
  {
    $pluginPaths[basename($path)] = $path;
  }

  foreach ($this->overriddenPluginPaths as $plugin => $path)
  {
    $pluginPaths[$plugin] = $path;
  }

  return $pluginPaths;
}

(это небольшой мод для методанайдено в ядре Symfony)

0 голосов
/ 16 сентября 2010

Вы найдете решение здесь: http://gist.github.com/572781

Позвольте мне скопировать его здесь для удобства и использования в будущем:

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setupProjectPlugins();
  }

  /**
   * Responsible for initiating any plugins and pointing vendor plugins
   * to the "vendor" subdirectory
   */
  protected function setupProjectPlugins()
  {
    $this->enableAllPluginsExcept(array('sfPropelPlugin'));

    $vendorPlugins = array(
      'ioMenuPlugin',
      'sfCKEditorPlugin',
      'vjCommentPlugin',
      'sfThemePlugin',
      'sfDoctrineSlotPlugin',
      'sfFormExtraPlugin',
      'sfFeed2Plugin',
      'sfImageTransformPlugin',
      'sfDoctrineGuardPlugin',
      'isicsBreadcrumbsPlugin',
      'sfDoctrineActAsTaggablePlugin',
      'sfInlineObjectPlugin',
      'ioEditableContentPlugin',
    );

    foreach ($vendorPlugins as $plugin)
    {
      $this->setPluginPath($plugin, sfConfig::get('sf_plugins_dir').'/vendor/'.$plugin);
    }
    $this->enablePlugins($vendorPlugins);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...