2017-05-10 1 views
0

Je ne sais pas si c'est possible, mais ce que j'essaie de faire, c'est passer une chaîne de requête via une requête get à mon contrôleur. De là, j'obtiens la valeur de la chaîne de requête en utilisant $ _GET ['nom']. Ce que je voudrais faire alors, c'est utiliser cette valeur GET et l'ajouter en tant que nom de la méthode que je transmettrai à mon modèle pour retourner les données dont j'ai besoin. Ceci est dû au fait que plusieurs actions permettent de transmettre des valeurs de chaîne de requête différentes au même contrôleur, puis d'utiliser la valeur pour obtenir les données de différentes fonctions dans mon modèle.Codeigniter - Ajout de noms de variables à un nom de méthode à exécuter Fonction du modèle

par exemple.

contrôleur

class ControllerName extends CI_Controller { 

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

    public function index() { 
     $queryName = $_GET['query_string'] 
     // e.g. $queryName = 'customer' 

     //Use the query string and append to method to pass to Model function 
     $result = $this->my_model->$queryName._get_query(); //??? 

     //e.g. $result = $this->my_model->customer_get_query(); 
    } 
} 

My_model

class My_model extends CI_Model { 

    function __construct() { 
     parent::__construct(); 
     $this->load->database(); 
    } 

    function customer_get_query() { 
     //...run database query and return result 
    } 
} 

Toute pensée?

+0

vous pouvez essayer $ this-> my_model -> {$ queryName de la get_query '}(); – jagad89

+0

Grand merci, a travaillé un régal! – swood

Répondre

0

L'habitude php devrait fonctionner parfaitement:

$result = call_user_func([$this->my_model, $queryName.'_get_query']); 
+0

Aussi travaillé, merci – swood