2011-01-25 3 views
0

근본적으로 잘못 접근하고 있는지, 아니면 그냥 누락 된 것인지 확실하지 않습니다.CodeIgniter - 색인 함수의 원래 URL을 표시합니까?

내가 컨트롤러와 그 안에 분명히있는 인덱스 기능이 기본은 컨트롤러가 호출 될 때로드 :

function index($showMessage = false) { 
    $currentEmployee = $this->getCurrentEmployee(); 
    $data['currentEmp'] = $currentEmployee; 
    $data['callList'] = $currentEmployee->getDirectReports(); 
    $data['showMessage'] = $showMessage; 
    $this->load->view('main', $data); 
} 

나는 대량 업데이 트를 수행하는 컨트롤러 내에서 다른 기능을 가지고있다. 업데이트가 완료된 후, 나는 원래 페이지는 메시지가 표시 다시 보여주고 싶은, 그래서 난이 시도 :

/** 
* Will save all employee information and return to the call sheet page 
*/ 
function bulkSave() { 
    //update each employee 
    for ($x = 0; $x < sizeof($_POST['id']); $x++) { 
     $success = Employee::updateEmployeeManualData($_POST['id'][$x], $_POST['ext'][$x], $_POST['pager'][$x], $_POST['cell'][$x], $_POST['other'][$x], $_POST['notes'][$x]); 
    } 

    $this->index($success);     
} 

어떤 일이 일어나고하면 원래 페이지를 사용하여 액세스 점이다 로컬 호스트 /을 myApp/MYCONTROLLER

대량 후

을 업데이트가 보여주는 등 : 로컬 호스트 /을 myApp/MYCONTROLLER/bulkSave

내가 정말 사용자가 정말/bulkSave 부분을 볼 수 없습니다 것을 의미, 다시 인덱스 페이지와 URL을 표시 할

URL의 이는 사용자가 페이지를 새로 고치면 bulkSave() 함수가 아닌 컨트롤러에서 index() 함수를 호출한다는 것을 의미합니다.

미리 감사드립니다.

이것이 가능합니까?

답변

1

(맨 아래)

http://codeigniter.com/user_guide/helpers/url_helper.html

, 당신은 당신의 컨트롤러 내에서 이동된다 수업. 이 형태의 경우

나는 보통 ... $_POST 데이터를 전달하거나 마음에 들지되었는지 여부에 따라 트래픽을 지시, 그리고

function index() { 

    if($_POST) { 

     //process posted data 
     for ($x = 0; $x < sizeof($_POST['id']); $x++) { 
      $data['showMessage'] = Employee::updateEmployeeManualData($_POST['id'][$x], $_POST['ext'][$x], $_POST['pager'][$x], $_POST['cell'][$x], $_POST['other'][$x], $_POST['notes'][$x]); 
     }    
    } 
    else { 

     //show page normally 
     $data['showMessage'] = FALSE; 

    } 

    //continue to load page 
    $currentEmployee = $this->getCurrentEmployee(); 
    $data['currentEmp'] = $currentEmployee; 
    $data['callList'] = $currentEmployee->getDirectReports(); 
    $this->load->view('main', $data); 

} 

을이 같은 작업에 대해 동일한 컨트롤러 기능을 사용하여 당신을 제출, 단지

<?= form_open($this->uri->uri_string()) ?> 

이 인덱스 다시 형태 포인트, 당신은 $_POST를 통해 양식 데이터를 게시하는 때문에 데이터를 처리합니다 ...이 같은보기에 자체 양식을 가리 킵니다.

+0

감사합니다. –

1

일반적으로 사용자가 데이터를 새로 고침 (두 번 제출)하지 못하도록 이전 페이지로 리디렉션합니다.

redirect() CI의 도우미 기능을 사용할 수 있습니다. 당신은 bulkUpdate() 내에서 직접 index() funciton를 호출 새 서버 요청을하지 않기 때문에 따라서 URI가 인덱스로 다시 변경되지 않습니다