2013-08-08 5 views
1

나는 사용자 클래스를 만들었고 데이터베이스 상호 작용을위한 다른 함수를 정의한 zend framework.in에서 간단한 데이터베이스 응용 프로그램을 만들었습니다.이 함수는 컨트롤러 클래스에서 호출되었지만 클래스 객체가있을 때마다 선언해야합니다. 각각의 action.how에서 사용자 클래스의 메소드를 호출하기 위해 사용자 클래스 객체를 한 번 선언하고 컨트롤러의 모든 동작 메소드에서 사용할 수 있습니다. 여기 내 컨트롤러 페이지 클래스 UserController 당신은 초기화() 메소드에 사용자 개체를 만들고, 클래스 변수로 저장할 수 있습니다 Zend_Controller_Action에는 {동적 가져 오기 데이터 함수

public function init() 
    { 
     /* Initialize action controller here */ 
     Zend_Session::start(); 

    } 

    public function indexAction() 
    { 

     $title = Zend_Registry::get('title'); 
     $this->view->assign('name', 'Wiwit'); 
     $this->view->assign('title', $title); 
    } 


    public function logoutAction() 
    { 

     Zend_Session::destroy(); 
     $this->redirect("/user/login"); 

    } 

    public function registerAction() 
    { 

     $this->view->assign('title','Register'); 
     $request = $this->getRequest(); 
     $this->view->assign('action', $request->getBaseURL()."/user/register"); 
     if($request->isPost()) 
     { 
     $data = array('first_name' => $request->getParam('first_name'), 
         'last_name' => $request->getParam('last_name'), 
         'user_name' => $request->getParam('user_name'), 
         'password' => $request->getParam('password') 
        ); 

     $user = new Application_Model_User(); 
     $rows_affected=$user->user_insert($data); 
     $this->redirect("/user/login"); 
     } 

    } 
    public function loginAction() 
     { 
      if(isset($_SESSION['username'])) 
      { 
       $this->redirect("/user/home"); 
      } 
      $this->view->assign('title','Register'); 
      $request = $this->getRequest(); 
      $this->view->assign('action', $request->getBaseURL()."/user/login"); 
      if($request->getParam('msg')) 
      { 

       $this->view->msg='username or password is invalid'; 
      } 
      if($request->isPost()) 
      { 
       $data = array(
           'user_name' => $request->getParam('user_name'), 
           'password' => $request->getParam('password') 
          ); 

       $user = new Application_Model_User(); 
       $result=$user->user_login($data); 
       if(empty($result)){ 

       $this->redirect("/user/login/msg/login failed"); 

      } 
      else{ 
       $_SESSION['username']=$result->user_name; 

       $this->redirect("/user/home"); 

      } 

      } 
     } 

     public function homeAction() 
     { 
      if(isset($_SESSION['username'])) 
      { 
       $this->view->title='home'; 
       $request = $this->getRequest(); 
       $user = new Application_Model_User(); 
       $result=$user->user_grid(); 
       $this->view->rows=$result; 
      } 
      else 
      { 
       $this->redirect("/user/login"); 
      } 
     } 

     public function editAction() 
     { 

     $request = $this->getRequest(); 
     $id= $request->getParam("id"); 

     $user = new Application_Model_User(); 
     $result=$user->user_edit($id); 

     $this->view->assign('data',$result); 
     $this->view->action= $request->getBaseURL()."/user/update"; 

    } 


    } 


and here is my user class 

<?php 

class Application_Model_User extends Zend_Db_Table 
{ 

     public function user_insert($data)  
     { 

      global $DB; 
     $rows_affected = $DB->insert('user', $data); 
     return $rows_affected; 
     } 

     public function user_login($data)  
     {  

     $u_name=array_shift($data); 
     $pass=array_shift($data); 
     $select = $this->_db->select() 
         ->from('user') 
         ->where("user_name = ?",$u_name) 
         ->where("password = ?",$pass); 
         $result = $this->getAdapter()->fetchRow($select); 
         return $result; 


     } 

     public function user_grid()  
     { 
     global $DB;  
     $sql = 'SELECT * FROM user'; 
     $stmt = $DB->query($sql); 
     $result = $stmt->fetchall(); 
     return $result; 
     } 

     public function user_edit($data)  
     {  

     $select = $this->_db->select() 
         ->from('user') 
         ->where("id = ?",$data); 
         $result = $this->getAdapter()->fetchRow($select); 
         $data = (array) $result; 
         return $data; 


     } 

     public function userupdate($data,$id)  
     { 

     global $DB; 
     $rows_affected =$DB->update('user', $data,'id = '.$id); 
     return $rows_affected; 
     } 

     public function userdelete($id)  
     { 

     global $DB; 
     $rows_affected =$DB->delete('user','id = '.$id); 
     return $rows_affected; 
     } 
} 
?> 
+0

@ NullPoiileteя, 귀하의 진술은 사실이지만이 질문과 무관합니다. 젠드 프레임 워크는 mysql_ * 확장자를 사용하지 않습니다. –

+0

죄송합니다. 내 의견을 잘못 놓았습니다 .... 나는 다른 질문을하고 싶었습니다. 덕분에 –

답변

1

확장이다.

public function init() 
{ 
    /* Initialize action controller here */ 
    Zend_Session::start(); 
    $this->user = new Application_Model_User(); 
} 

그러면 모든 작업 방법에서 사용할 수 있습니다.

public function homeAction() 
{ 
    if(isset($_SESSION['username'])) 
    { 
     $this->view->title='home'; 
     $request = $this->getRequest(); 
     $result = $this->user->user_grid(); // changed 
     $this->view->rows=$result; 
    } 
    else 
    { 
     $this->redirect("/user/login"); 
    } 
} 
+0

강철이 작동하지 않습니다. – unnati