Browse Source

Add link to existing package in error message, fixes #279

Jordi Boggiano 12 years ago
parent
commit
ba9d754336

+ 2 - 0
src/Packagist/WebBundle/Controller/WebController.php

@@ -318,6 +318,7 @@ class WebController extends Controller
     {
         $package = new Package;
         $package->setEntityRepository($this->getDoctrine()->getRepository('PackagistWebBundle:Package'));
+        $package->setRouter($this->get('router'));
         $form = $this->createForm(new PackageType, $package);
 
         if ('POST' === $req->getMethod()) {
@@ -350,6 +351,7 @@ class WebController extends Controller
     {
         $package = new Package;
         $package->setEntityRepository($this->getDoctrine()->getRepository('PackagistWebBundle:Package'));
+        $package->setRouter($this->get('router'));
         $form = $this->createForm(new PackageType, $package);
 
         $response = array('status' => 'error', 'reason' => 'No data posted.');

+ 7 - 1
src/Packagist/WebBundle/Entity/Package.php

@@ -117,6 +117,7 @@ class Package
     private $updateFailureNotified = false;
 
     private $entityRepository;
+    private $router;
 
     /**
      * @var \Composer\Repository\Vcs\VcsDriverInterface
@@ -204,11 +205,16 @@ class Package
         $this->entityRepository = $repository;
     }
 
+    public function setRouter($router)
+    {
+        $this->router = $router;
+    }
+
     public function isPackageUnique(ExecutionContext $context)
     {
         try {
             if ($this->entityRepository->findOneByName($this->name)) {
-                $context->addViolationAtSubPath('repository', 'A package with the name '.$this->name.' already exists.', array(), null);
+                $context->addViolationAtSubPath('repository', 'A package with the name <a href="'.$this->router->generate('view_package', array('name' => $this->name)).'">'.$this->name.'</a> already exists.', array(), null);
             }
         } catch (\Doctrine\ORM\NoResultException $e) {}
     }