2013-02-18 4 views
6

私は、接続が正常に動作しているかどうかをテストする方法を探しています。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", 
     ) ; 
    } 

問題は、情報コネクションズが正しい場合でも、私は例外をキャッチすることができないということです。

そうでなければ、私はこのエラーを持っている:

<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

ありがとうOcramiusは= D –

+0

は、私が聞いても - なぜあなたは例外でバックスラッシュを使うのですか?私はこのように見たことがない。これは何とか名前空間の完全性を保証する必要がありますか? – SquareCat

+1

@CummanderCheckov http://www.youtube.com/watch?v=d1kDT8YFAhIを参照してください。 – Ocramius

2

使用できます。

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

    $cnx->isConnected() ? 'Connected' : 'not connected'; 
関連する問題