2013-02-18 24 views
6

Tôi đang tìm cách kiểm tra xem kết nối có hoạt động hay không với học thuyết 2.cách kiểm tra kết nối hoạt động trong học thuyết 2?

Vì trong ứng dụng của tôi, người dùng có thể tự thay đổi kết nối thông tin. Tôi muốn kiểm tra xem người dùng đã nhập đúng thông tin đăng nhập và mật khẩu đúng chưa.

Tôi có thể làm như thế nào?

Tôi cố gắng để đặt mã này vào một khối 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", 
     ) ; 
    } 

Vấn đề là ngay cả khi Connexions thông tin là chính xác tôi không thể bắt các ngoại lệ.

Nếu không tôi đã có lỗi này:

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

Bạn có bất cứ ý tưởng về cách tôi thể kiểm tra xem các công trình liên quan?

Cảm ơn bạn.

Trả lời

15

Không sử dụng trực tiếp EntityManager. Bạn có thể sử dụng thay vì sau để kiểm tra các thông số kết nối:

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

Đó là buồn bã cách thực chỉ để kiểm tra xem một cái gì đó đã đi sai, vì những thay đổi kiểu ngoại lệ tùy thuộc vào trình điều khiển bạn sử dụng.

Đối với ngoại lệ khác (chế độ xem có liên quan đến chế độ xem), bạn chỉ cần điều chỉnh đường dẫn tập lệnh chế độ xem của mình. Tôi khuyên bạn nên giữ kích hoạt skeleton application module để bố cục mặc định luôn ở đó: bạn có thể override it at any time.

+0

Cảm ơn bạn Ocramius = D –

+0

Tôi có thể hỏi - tại sao bạn sử dụng dấu gạch chéo ngược trên Ngoại lệ? Tôi chưa bao giờ thấy nó theo cách này. Đây có phải là bằng cách nào đó được yêu cầu để đảm bảo tính toàn vẹn không gian tên? – SquareCat

+1

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

2

Bạn có thể sử dụng.

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

    $cnx->isConnected() ? 'Connected' : 'not connected'; 
Các vấn đề liên quan