2013-02-18 26 views
6

我正在尋找一種方法來測試連接是否正常工作或不與教條2.如何測試連接在doctrine 2中工作?

因爲在我的應用程序中,用戶可以自行更改信息連接。 我想檢查用戶是否輸入了正確的登錄名和正確的密碼。

我該怎麼做?

我試圖把這個代碼放到一個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", 
     ) ; 
    } 

的問題是,即使信息CONNEXIONS是正確的,我不能捕獲該異常。

否則我得到這個錯誤:

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

你有我如何能當了連接測試工作任何想法?

謝謝。

回答

15

請勿直接使用EntityManager。您可以改用以下檢查連接參數:

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

這是可悲的是唯一的真正的方法來檢查,如果出事了,因爲這取決於你使用的驅動程序異常類型的變化。

對於其他異常(視圖相關的),您只需調整視圖腳本路徑。我建議你保持skeleton application module啓用,以便默認佈局總是在那裏:你可以override it at any time

+0

謝謝奧克拉米斯= D – 2013-02-18 14:12:20

+0

請問我爲什麼在Exception上使用反斜槓?我從來沒有見過這種方式。這是否需要確保名稱空間的完整性? – SquareCat 2013-09-16 16:35:02

+1

@CummanderCheckov請參閱http://www.youtube.com/watch?v=d1kDT8YFAhI – Ocramius 2013-09-16 19:01:35

2

您可以使用。

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

    $cnx->isConnected() ? 'Connected' : 'not connected';