protected function execute(InputInterface $input, OutputInterface $output) { $application = $this->container->getApplication(); $webRoot = $application->getWebRoot(); foreach ($application->getPackages() as $package) { $target = $application->locatePublicFolder($package); $link = $this->container->getParameter('directories.public') . DIRECTORY_SEPARATOR . $package->getName(); if (!is_dir($this->container->getParameter('directories.public'))) { mkdir($this->container->getParameter('directories.public'), 0777, true); } if (is_dir($target)) { $output->writeln(sprintf('Publishing assets for package <info>%s</info>, <info>%s</info> -> <info>%s</info>', $package->getName(), $target, $link)); if (is_link($link)) { unlink($link); } symlink($target, $link); } } $event = new ConsoleEvent($this, $input, $output); $event->setData(array('webRoot' => $webRoot, 'webRootPublic' => $webRoot . '/public/')); $this->container->getEventDispatcher()->dispatch(FrameworkConsoleEvent::ASSETS_PUBLISH, $event); }