2013-02-18 4 views
6

Ich bin auf der Suche nach einer Möglichkeit zu testen, ob eine Verbindung funktioniert oder nicht mit Doktrin 2.Wie testen Sie, dass die Verbindung in Doktrin 2 funktioniert?

Da in meiner Anwendung können Benutzer selbst die Informationsverbindungen ändern. Ich möchte überprüfen, ob der Benutzer den richtigen Benutzernamen und das richtige Passwort eingegeben hat.

Wie kann ich das tun?

Ich habe versucht, diesen Code in einen try/catch-Block zu setzen:

try{ 
     $entityManager = $this->getEntityManager() ; 
     $repository = $entityManager->getRepository('Authentification\Entity\User'); 
     $userToIdentify = $repository->findOneBy(array('login' => $this->_username, 'password' => $this->_password)); 
    }catch(Exception $e){ 
     $code = Result::FAILURE ; 
     $identity = "unknow" ; 
     $messages = array(
       "message" => "Mauvaise combinaison de login/password", 
     ) ; 
    } 

Das Problem ist, dass selbst wenn die Informationen Verbindungen korrekt ist ich nicht die Ausnahme fangen.

Ansonsten habe ich diesen Fehler habe:

<b>Fatal error</b>: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template &quot;layout/layout&quot;; resolver could not resolve to a file' in C:\xampp\htdocs\poemsV3\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php:451 Stack trace: #0 C:\xampp\htdocs\poemsV3\vendor\zendframework\zendframework\library\Zend\View\View.php(203): Zend\View\Renderer\PhpRenderer-&gt;render(Object(Zend\View\Model\ViewModel)) #1 C:\xampp\htdocs\poemsV3\vendor\zendframework\zendframework\library\Zend\Mvc\View\Http\DefaultRenderingStrategy.php(128): Zend\View\View-&gt;render(Object(Zend\View\Model\ViewModel)) #2 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy-&gt;render(Object(Zend\Mvc\MvcEvent))#3 C:\xampp\htdocs\poemsV3\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(469): call_user_func(Array, Object(Zend\Mvc\MvcEvent))#4 C:\xampp\htdocs\poemsV3\vendor\zendframework\zendframework\library\Zend\EventManager\EventMa in <b>C:\xampp\htdocs\poemsV3\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php</b> on line <b>451</b><br /> 

Haben Sie eine Ahnung, wie ich, ob die Verbindung funktioniert testen könnte?

Vielen Dank.

Antwort

15

Verwenden Sie nicht die EntityManager direkt. Sie können stattdessen folgende verwenden, um die Verbindungsparameter zu überprüfen:

try { 
    $entityManager->getConnection()->connect(); 
} catch (\Exception $e) { 
    // failed to connect 
} 

, die leider ist die einzige wirkliche Möglichkeit, zu überprüfen, ob etwas schief gelaufen ist, da die Ausnahmetyp ändert sich je nach Treiber, den Sie verwenden.

Für die andere Ausnahme (die View-bezogene) müssen Sie nur Ihre Ansicht Skripts Pfad anpassen. Ich empfehle Ihnen, die skeleton application module aktiviert zu lassen, so dass das Standardlayout immer da ist: Sie können override it at any time.

+0

Vielen Dank Ocramius = D –

+0

Darf ich fragen - warum verwenden Sie einen Backslash auf Exception? Ich habe es nie so gesehen. Ist dies irgendwie erforderlich, um die Integrität des Namensraums sicherzustellen? – SquareCat

+1

@CummanderCheckov siehe http://www.youtube.com/watch?v=d1kDT8YFAhI – Ocramius