2011-12-28 17 views
0

私は、特定のデータベース接続情報が正しいかどうかをチェックするために、データソースを即座に作成するクラスメソッドを作成しました。CakePHPデータソースを即座に作成するエラーを作成する

Array 
(
    [datasource] => Database/Mysql 
    [persistent] => 0 
    [host] => localhost 
    [login] => root 
    [password] => 
    [database] => wp33 
    [prefix] => dr_ 
    [encoding] => UTF8 
    [port] => 
) 

、私の方法はそれにそのコードを持っています:接続のための情報を保持する配列は、次の形式である$の設定は、上記の配列からデータを保持することを

@App::import('Model', 'ConnectionManager'); 

ConnectionManager::create('Default', $config); 
$db = ConnectionManager::getDataSource('default'); 

if(!$db->isConnected()) 
{ 
    $this->Session->setFlash(__d('dir', 'Could not connect to database.'), 'Flash/error'); 
    return; 
} 

注意を。

問題がエラーというメソッドのコードリターンということである。

データベース接続 エラーの欠落:SQLSTATE [42000] [1049]不明なデータベース「wp33は」データベース接続 エラーが必要です:あなたは、ファイルを作成して確認してください:app \ Config \ database.php。

データベースshema wp33がデータベースサーバーに存在しないため、

私がしたいのは、CakePHP側からこのエラーを止めて、デフォルトのCakePHPエラーではなく$ this-> Session-> setFlashでクライアントにエラーを表示することです。

良いアイデアはありますか?

答えて

1

MissingDatabaseExceptionをキャッチし、getMessage()を使用してエラーメッセージをセッションフラッシュに設定します。

try { 
    ConnectionManager::create('Default', $config); 
    $db = ConnectionManager::getDataSource('default'); 
} catch (MissingDatabaseException $e) { 
    $this->Session->setFlash($e->getMessage()); 
} 

このようなものです。

関連する問題