2017-11-21 2 views
0

저는 Zend Framework에서 매우 새로워졌습니다. jQuery에서 $ .post를 통해 db에서 한 행을 삭제하고 싶습니다. 나는 또한 Google과 Youtube에 대한 많은 연구를 수행했지만 불행히도 결과를 얻지 못했습니다. 도와주세요. ZF 버전 : 1.11.2Zend Framework의 Ajax Post

응용 프로그램/Bootstrap.php에게 :

protected function _initDb(){ 
$con=array('host'=>'127.0.0.1','username'=>'root','password'=>'','dbname'=>'sample_db'); 
    $db=Zend_Db::factory('Pdo_Mysql',$con);$db->query("SET NAMES 'utf8'"); 
    Zend_Registry::set('db',$db); 
} 

응용 프로그램/컨트롤러/DashboardController.php :

public function indexAction(){ 
    $this->_helper->layout->setLayout('a'); 
} 

신청/조회/스크립트/대시 보드/index.phtml :

<a href="javascript:deleteTest('62989c12369ea3c1')">DELETE</a> 

공공 /의 JS/0.js :

function deleteTest(id){ 
    if(confirm('Are you sure?')) 
     $.post('http://127.0.0.1/Sample4/application/models/Guestdb.php',{funcName:'Delete_Test',id:id},function(r){alert(r)}) 
} 

응용 프로그램/모델/Guestdb.php :

class Model_Guestdb{ 
    public function Delete_Test(){ 
    $db=Zend_Registry::get('db'); 
     $r=$db->query("DELETE FROM `prac` WHERE `id`='".trim((new Zend_Filter_Decrypt(array('adapter'=>'mcrypt','key'=>'thisisakeytolock','vector'=>'myvector')))->filter(hex2bin($this->getRequest()->getPost()['id'])))."'"); 
     echo$r?'t':'f'; 
    } 
} 
$a=new Model_Guestdb(); 
if(isset($_POST['funcName']))call_user_func(array($a,$_POST['funcName'])); 
elseif(isset($_GET['funcName']))call_user_func(array($a,$_GET['funcName'])); 

출력 : 사전에 내 영어 제발 도와주세요

감사에 대한

Fatal error: Uncaught Error: Class 'Zend_Registry' not found in C:\xampp\htdocs\Sample4\application\models\Guestdb.php:6 Stack trace: #0 C:\xampp\htdocs\Sample4\application\models\Guestdb.php(35): Model_Guestdb->Delete_Test() #1 {main} thrown in C:\xampp\htdocs\Sample4\application\models\Guestdb.php on line 6 

죄송

+0

"클래스 'Zend_Registry'을 찾을 수 없습니다"귀하의 프로젝트에 Zend_Registry가 있습니까? 또한 zf에서 새로운 사람이라면 zf1에서 작동하지 마십시오. 그것은 이미 eol이 통과되었습니다. zf3 만 사용하십시오. –

+0

@Mehmet SöĞÜNMEZ 알다시피 나는 Bootstrap.php에서 Zend_Registry를 사용하는데 문제가 없다. 문제는 내 Ajax 또는 Guestdb와 관련된 것입니다. – WeLoveLinux

+1

문제는 다음과 같습니다. 모델에 직접 요청합니다 : "$ .post ('http://127.0.0.1/Sample4/application/models/Guestdb.php'") 라우팅, 컨트롤러 작업, 부트 스트래핑을하지 말고 public/index.php를보고 컨트롤러 파일 (예 : DefaultController.php 또는 IndexController.php)과 이들 안에 정의 된 액션 (예 : indexAction())을 찾으십시오. 시작하는 데 도움이됩니다. –

답변

0

내가 해결 이 문제는 다음과 같습니다 :

신청/조회/스크립트/대시 보드/index.phtml :

<a href="javascript:del('210')">DELETE</a> 

공공 /의 JS/0.js :

function del(id){ 
    if(confirm('Are you sure?')) 
     $.post('ajax',{func:'del',table:'prac',id:id}, 
      function(r){r=='t'?location.reload():alert('Error!')}) 
} 

응용 프로그램/컨트롤러/DashboardController.php :

<?php 
class DashboardController extends Zend_Controller_Action{ 
    public function ajaxAction(){ 
     $this->_helper->layout->disableLayout(); 
     $ajax=$this->getRequest()->getPost();$func=$ajax['func']; 
     (new Model_Guestdb)->$func($ajax['table'],$ajax['id']); 
    } 
} 

응용 프로그램/모델/Guestdb.php :

class Model_Guestdb{ 
    public function del($table,$id){ 
     echo Zend_Registry::get('db')->query 
     ("DELETE FROM `$table` WHERE `id`='$id'")?'t':'f'; 
    } 
} 

친구 의견에 감사드립니다.