2015-08-26 4 views
0

У меня есть две функции в моем контроллере, как это.Как передать переменную от одной функции к другой функции в codeigniter

function search_keyword() 
{ 
    $keyword = $this->input->post('keyword'); 
    $this->data['result'] = $this->mymodel->search($keyword); 
    //print_r($this->data); 
    //$pro_id = []; 
    foreach($this->data['result'] as $key => $val){ 
     $pro_id[] = $val->product_id; 
    } 
    print_r($pro_id);  
    $this->download_function(); 
    $this->twig->display('home.html', $this->data); 
} 
function download_function() 
{ 
    //print_r($keyword); 
    $this->data['re'] = $this->csv->ExportCSV($keyword); 
    $this->twig->display('home.html', $this->data); 
} 

Я хочу передать pro_id переменную download_function от SEARCH_KEYWORD funtion.please помочь мне сделать это.

это моя модель

function ExportCSV($pro_id) 
{ 

    //print_r($keyword); 
    $this->load->dbutil(); 
    $this->load->helper('file'); 
    $this->load->helper('download'); 
    $delimiter = ","; 
    $newline = "\r\n"; 
    $filename = "filename_you_wish.csv"; 
    $query = "SELECT * FROM products WHERE product_id LIKE '%$pro_id%'"; 
    $result = $this->db->query($query); 
    $data = $this->dbutil->csv_from_result($result, $delimiter, $newline); 
    force_download($filename, $data); 
} 
+0

Разве вы не можете просто сделать это: '$ this-> download_function ($ pro_id); ' – madforstrength

+0

Передать переменную' $ this-> download_function (VARIABLE); 'и получить с помощью' function download_function (VARIABLE) ' – Saty

+0

@saty Я делаю то, что вы сказали. function download_function ($ pro_id) , тогда я получил сообщение об ошибке Missing argument 1 для Search :: download_function(), что мне теперь делать? –

ответ

0

Его довольно просто, сделайте именно то, что вы сделали бы, чтобы передать параметр любой функции.

public function search_keyword() { 
    $keyword = $this->input->post('keyword'); 
    $this->data['result'] = $this->mymodel->search($keyword); 
    //print_r($this->data); 
    $pro_id = []; 
    foreach($this->data['result'] as $key => $val){ 
     $pro_id[] = $val->product_id; 
    } 
    print_r($pro_id);  
    $this->download_function($pro_id); 
    $this->twig->display('home.html', $this->data); 
} 

public function download_function($pro_ids) { 
    //print_r($keyword); 
    $this->data['re']  = $this->csv->ExportCSV($keyword); 
    $this->data['pro_ids'] = $pro_ids; 
    $this->twig->display('home.html', $this->data); 
} 

Через некоторое время в комнате чата решение, которое мы придумали было chnage код для этого:

function search_keyword() 
{ 
    $pro_id = $this->input->post('keyword'); 
    $this->download_function($pro_id); 
    $this->twig->display('home.html', $this->data); 
} 

function download_function($pro_id) 
{ 
    $this->data['re'] = $this->csv->ExportCSV($pro_id); 
    $this->twig->display('home.html', $this->data); 
} 
+0

yep. Я попробовал это. Но у меня есть ошибка. также не могли бы вы рассказать мне, почему вы положили 's' после $ pro_id во вторую функцию. –

+0

'$ pro_ids'' '' умножает имя, указывающее, что, вероятно, будет больше того, что есть. Это массив после. ** Какую ошибку вы получили ** – RiggsFolly

+0

На самом деле, думая об этом, вы сказали, что это контроллер. Если у вас нет указателей 'public' /' protected'/'private' в определениях функций! См. Изменение кода – RiggsFolly

1
function search_keyword() 
{ 
    $keyword = $this->input->post('keyword'); 
    $this->data['result'] = $this->mymodel->search($keyword); 
    //print_r($this->data); 
    //$pro_id = []; 
    foreach($this->data['result'] as $key => $val){ 
     $pro_id[] = $val->product_id; 
    } 
    print_r($pro_id);  
    $this->download_function($pro_id); 
    $this->twig->display('home.html', $this->data); 
} 
function download_function($pro_id) 
{ 
    //print_r($keyword); 
    $this->data['re'] = $this->csv->ExportCSV($keyword); 
    $this->twig->display('home.html', $this->data); 
} 

Вы можете передать его через параметр.

+0

Я пробую это , но затем я получил ошибку, как этот Missing аргумент 1 для Search :: download_function(). Что мне теперь делать. –

+0

Если вы хотите получить доступ к функции download_function, вы должны указать аргумент. Например, $ pro_id = 1; http: // localhost/diectory/controllername/download_function/$ pro_id –