2013-02-18 17 views
6

Szukam sposobu sprawdzenia, czy połączenie działa, czy nie, z doktryną 2.jak testuje połączenie w doktrynie 2?

Ponieważ w mojej aplikacji użytkownicy mogą samodzielnie zmienić połączenia informacyjne. Chcę sprawdzić, czy użytkownik wprowadził prawidłowy login i właściwe hasło.

Jak mogę to zrobić?

Starałem się umieścić ten kod w bloku try/catch:

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", 
     ) ; 
    } 

Problemem jest to, że nawet jeśli informacje są poprawne Connexions nie mogę złapać wyjątek.

przeciwnym razie mam ten błąd:

<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 /> 

Czy masz jakiś pomysł, w jaki sposób mogę sprawdzić, czy prace Connexion?

Dziękuję.

Odpowiedz

15

Nie używaj bezpośrednio urządzenia EntityManager. Zamiast tego można użyć następujących czynności, aby sprawdzić parametry połączenia:

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

to niestety jedynym sposobem, aby sprawdzić, czy coś poszło nie tak, ponieważ zmienia się w zależności od typu wyjątek kierowcy używasz.

Dla innego wyjątku (związanego z wyświetlaniem) wystarczy zmienić ścieżkę skryptów widoku. Proponuję włączyć opcję skeleton application module, aby domyślny układ był zawsze dostępny: możesz override it at any time.

+0

Dziękuję Ocramius = D –

+0

mogę zapytać - dlaczego używacie odwrotny ukośnik na wyjątek? Nigdy nie widziałem tego w ten sposób. Czy jest to w jakiś sposób wymagane do zapewnienia integralności przestrzeni nazw? – SquareCat

+1

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

2

Możesz użyć.

$cnx = $this->getDoctrine()->getConnection(); 

    $cnx->isConnected() ? 'Connected' : 'not connected'; 
Powiązane problemy