9

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" => "Wrong login/password combination",
    ) ;
}

問題は、情報の接続が正しい場合でも、例外をキャッチできないことです。

そうしないと、次のエラーが表示されます。

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

接続が機能するかどうかをテストする方法について何か考えはありますか?

ありがとうございました。

4

2 に答える 2

18

EntityManagerを直接使用しないでください。代わりに、次を使用して接続パラメーターを確認できます。

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

残念ながら、使用するドライバーによって例外の種類が変わるため、これが実際に問題が発生したかどうかを確認する唯一の方法です。

もう 1 つの例外 (ビュー関連のもの) については、ビュー スクリプトのパスを調整するだけです。デフォルトのレイアウトが常に存在するように、スケルトン アプリケーション モジュールを有効にしておくことをお勧めします。いつでもオーバーライドできます。

于 2013-02-18T10:06:00.330 に答える
5

使えます。

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

$cnx->isConnected() ? 
  'Connected' : 
  'not connected';
于 2016-11-30T09:29:03.737 に答える