2016-05-20 38 views
1

私は自分自身のMVCを持っていて、私のBaseControllerでは簡単なメソッドflashMessageを作成します。PHPセッションフラッシュメッセージを削除するとき

public function flashMessage($name, $value) 
{ 
    if(!isset($_SESSION['message'][$name])) { 
     $_SESSION['message'][$name] = $value; 
    } 
} 

この作業はうまくいくものの、このセッションを破棄する時期はわかりません。 __destructorsession_unset($_SESSION['message']);に入れるのはいいですか?

この作品の良いが、私のメッセージは、私はすでに実装フラッシュメッセージアルゴリズムで探して提案する全く生涯

public function authenticate() 
    { 

     if(isset($_POST['submit'])) 
     { 
      $username = $this->inputFilter($_POST['username']); 
      $password = $this->inputFilter($_POST['password']); 

      // check if user exist 
      if(!$this->auth->autheticate($username, $password)) { 
       $this->flashMessage('error', 'Error: Invalid username or password!'); 

       return $this->redirect('login'); 
      }else { 
       $this->flashMessage('success', 'Success: Uspešno ste se prijavili na sistem!'); 
       return $this->redirect('home'); 
      } 

     } 
    } 

答えて

1

読み込み中に削除します。 簡単な例として、フラッシュメッセージをクラスにする。

class FlashMessage 
{ 

    static function create($name, $value) 
    { 
     if(!isset($_SESSION['message'][$name])) { 
      $_SESSION['message'][$name] = $value; 
     } 

    } 

    static function read($name) 
    { 
     if(isset($_SESSION['message'][$name])) { 
      $message = $_SESSION['message'][$name]; 
      unset($_SESSION['message'][$name]); 
      return $message; 
     } 
     //return null, false or throw exception 

    } 
} 
+0

ええ、その仕事。ありがとう@スティーブ – Ivan

1

を持っていません。

など。 Yiiでフラッシュメッセージが表示されたら削除するように設定することができます:

$this->setFlash('type', 'message'); 
$this->showFlash('type'); 

function showFlash($type) { 
    $msg = isset($_SESSION['message'][$type]) ? $_SESSION['message'][$type] : null; 

    if (!is_null($msg)) { 
     unset($_SESSION['message'][$type]); 
    } 

    return $msg; 
} 
関連する問題