2016-01-21 4 views
1

Большое спасибо за ответы my question beforeCodeigniter Сбой для вызова функции внутри контроллера

Поэтому у меня есть еще одна проблема в моем Codeigniter, это все тот же проект, просто подсчет строк данных в моей базе данных.

Что я хотел бы сделать, это создать функцию в контроллере, а затем вызвать эту функцию в представлении.

Так вот мой код ORIGINAL:

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Dash_control extends CI_Controller { 

    public function __construct() 
     { 
      parent::__construct(); 
      $this->load->database(); 
      $this->load->model('dash_model'); 
     } 



    public function index() 
    { 
     $data['cashtotal']=$this->dash_model->totalCash(); 
     $data['approvedtocash']=$this->dash_model->cashapproved(); 
     $data['rejectedtocash']=$this->dash_model->cashrejected(); 

     $this->load->view('dashboard',$data); 
    } 

} 

, а затем вот мой взгляд код:

<thead> 
<tr> 
<th>Bank Name</th> 
<th>Total Transaction</th> 
<th>Cash Approved</th> 
<th>Cash Rejected</th> 
</tr> 
</thead> 
<tbody> 
<tr class="warning"> 
<td>Awesome Bank</td> 
<td><?php echo $cashtotal; ?></td> 
<td><?php echo $approvedtocash; ?></td> 
<td><?php echo $rejectedtocash; ?></td> 
</tr> 
</tbody>  

С учетом указанных выше кодов, все работает отлично. Пока я не изменил мой код, как этот ниже (с тем же файлом вида, как выше):

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Dash_control extends CI_Controller { 

    public function __construct() 
     { 
      parent::__construct(); 
      $this->load->database(); 
      $this->load->model('dash_model'); 
     } 



    public function index() 
    { 

     $this->load->view('dashboard'); 
    } 

    public function anotherfunction() 
    { 
     $data['cashtotal']=$this->dash_model->totalCash(); 
     $data['approvedtocash']=$this->dash_model->cashapproved(); 
     $data['rejectedtocash']=$this->dash_model->cashrejected(); 

     $this->load->view('dashboard',$data); 
    } 

} 

После того, что я получил эту ошибку в моем браузере:

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: cashtotal 

Filename: views/dashboard.php 

Line Number: 147 

Backtrace: 

File: C:\xampp\htdocs\application\views\dashboard.php 
Line: 147 
Function: _error_handler 

File: C:\xampp\htdocs\application\controllers\dash_control.php 
Line: 18 
Function: view 

File: C:\xampp\htdocs\index.php 
Line: 292 
Function: require_once 

Что я сделал не так? Есть что-то, что мне не хватает? Так что я не могу создать несколько функций внутри моего контроллера? Спасибо вам раньше.

UPDATE

Я последовал за руководство šaty и она работала. Большое спасибо! Поскольку это таблица, я хотел бы добавить еще одну функцию, поэтому я добавляю его так:

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Dash_control extends CI_Controller { 

    public function __construct() 
     { 
      parent::__construct(); 
      $this->load->database(); 
      $this->load->model('dash_model'); 
     } 



    public function index() 
    { 
     $this->CashTransSum(); 
     $this->PayTransSum(); 
    } 

    public function CashTransSum() 
    { 
     $data['cashtotal']=$this->dash_model->totalCash(); 
     $data['approvedcash']=$this->dash_model->cashapproved(); 
     $data['rejectedcash']=$this->dash_model->cashrejected(); 

     $this->load->view('dashboard',$data); 
    } 

    public function PayTransSum() 
    { 
     $data['paytotal']=$this->dash_model->totalPay(); 
     $data['approvedpay']=$this->dash_model->payapproved(); 
     $data['acqrejectedpay']=$this->dash_model->payrejected(); 

     $this->load->view('dashboard',$data); 
    } 

} 

А потом я получил ту же ошибку:

Severity: Notice 

Message: Undefined variable: paytotal 

Filename: views/dashboard.php 

Line Number: 156 

Backtrace: 

File: C:\xampp\htdocs\application\views\dashboard.php 
Line: 156 
Function: _error_handler 

File: C:\xampp\htdocs\application\controllers\dash_control.php 
Line: 29 
Function: view 

File: C:\xampp\htdocs\application\controllers\dash_control.php 
Line: 17 
Function: CashTransSum 

File: C:\xampp\htdocs\index.php 
Line: 292 
Function: require_once 

Он говорит здесь, что я нужно называть его ОДНИМ ... Кого? Я неправильно поставил код?

+0

Вы все еще нажимаете на индекс? Если да, то ошибки верны. Если вы все еще хотите нажать индексный метод, просто добавьте туда объявления. – Kisaragi

ответ

3

Вы должны вызвать anotherfunction() внутри index функции, как

public function index() 
    { 

     $this->anotherfunction();// call your function 
    } 
public function anotherfunction() 
    { 
     $data['cashtotal']=$this->dash_model->totalCash(); 
     $data['approvedtocash']=$this->dash_model->cashapproved(); 
     $data['rejectedtocash']=$this->dash_model->cashrejected(); 

     $this->load->view('dashboard',$data); 
    } 
1

ошибка у вас есть, это совершенно нормально, вам нужно заполнить $data массив со всеми переменными, попробуйте это:

protected $data; 

public function index() 
{ 
    $this->CashTransSum(); 
    $this->PayTransSum(); 

    $this->load->view('dashboard', $this->data); 
} 

public function CashTransSum() 
{ 
    $this->data['cashtotal']=$this->dash_model->totalCash(); 
    $this->data['approvedcash']=$this->dash_model->cashapproved(); 
    $this->data['rejectedcash']=$this->dash_model->cashrejected(); 
} 

public function PayTransSum() 
{ 
    $this->data['paytotal']=$this->dash_model->totalPay(); 
    $this->data['approvedpay']=$this->dash_model->payapproved(); 
    $this->data['acqrejectedpay']=$this->dash_model->payrejected(); 
} 
Смежные вопросы