2016-05-01 7 views
-1

Ich übergab Parameter von Sicht zu Controller über URL. Jetzt möchte ich es vom Controller zum Modell senden, damit ich damit Daten aus Tabellen auswählen kann. Hier ist mein Code:Wie Daten von der Steuerung zu Modellen in Codeigniter übergeben werden

Controller:

function view(){ 
    if(isset($_GET['r'])) { 
     $rank = $_GET['r']; 
    } 

    $rank=$this->uri->segment($rank); 
    $this->load->model('names_rank'); 
    $data=$this->names_rank->get_names($rank); 
    print_r($rank); 
} 

Modell:

function get_names($rank){ 
    $this->db->select('u.*,v.*'); 
    $this->db->from('unit_member u, Vyeo v'); 
    $this->db->where('v.fno = u.fno'); 
    $this->db->where('u.present = ""'); 
    $this->db->where('v.rank', $rank); 
    $this->db->where('v.date_of_end="0000-00-00"'); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 

dies ist das Ergebnis:

Ein PHP-Fehler aufgetreten Schwere: Warnung Nachricht: Fehlende Argument 1 für Names_rank :: get_names(), aufgerufen in C: \ xampp \ htdocs \ unit \ application \ Controller \ Names.php auf der Leitung 32 und

definiert
+0

'$ rank' wird undefiniert, wenn' $ _GET ['r'] 'nicht gesetzt ist, also würde ich entweder zurückgeben, wenn es nicht gesetzt oder auf $ rank gesetzt ist auf einen Standardwert – winhowes

+0

Nur eine Anmerkung in CI3-Versionen Dateien und Klasse sollte ersten Buchstaben Großbuchstaben nur names.php zu Names.php – user4419336

+0

es ist mehr eine Konsistenz-Richtlinie als streng durchgesetzt (in diesem Stadium sowieso). Ich befolge dies streng, genauso wie die Benennung meiner Modelle Model_name_model.php zu –

Antwort

1

Dies funktioniert zu modellieren zu senden, aber der Code ist für mich nicht nachvollziehbar, Sie wieder erklären die Variable, nachdem es in der IF-Einstellung? Versuchen Sie, die Ausgabe des Modells zu drucken()?

Ich denke, Sie versuchen, dies vielleicht zu erreichen?

function view() { 

if(isset($_GET['r'])) { 

$rank = $_GET['r']; 
}else{ 

$rank = $this->uri->segment($rank); 
} 

$this->load->model('names_rank'); 

$data = $this->names_rank->get_names($rank); 
print_r($data); 
} 
0

können Sie einen Parameter zu Ihrem Modell übergeben. Zuerst müssen Sie Ihr Modell in Ihrem Controller aufrufen, wenn Sie es nicht beim Autoload aktivieren.

Ihr Modell:

<?php 
class AwesomeModel extends CI_Model 
{ 
    publif function do_work($param, $anotherParam) 
    { 
    //code here 
    } 
} 

Then your controller: 

<?php 
class AwesomeController extends CI_Controller 
{ 
    public function __construct() 
    { 
     /* 
     * load in constructor so not need to recall every time you want use it 
     * second parameter is model renaming (optional) 
     */ 
     $this->load->model('AwesomeModel', 'awe');            
    } 

    public function pass_data() 
    { 
     $this->awe->do_work($param1, $param2); 
    } 
?> 

Das ist alles.

+0

er nannte das Modell bereits in der Controller-Methode view() kurz bevor er es verwendete, was akzeptabel ist ... das ist nicht das Problem –

+0

im noy put es als ein Problem :) –

+0

In der CI3-Version sollten die Dateien und Klassen nur den ersten Großbuchstaben haben wie im Benutzerhandbuch http://www.codeigniter.com/user_guide/general/controllers.html#let-s-try -it-Hallo-Welt und Modelle http://www.codeigniter.com/user_guide/general/models.html#anatomy-of-a-model – user4419336

Verwandte Themen