je le code suivant dans un contrôleur:CodeIgniter - répétition de code et les variables passage aux fonctions
<?php
class Student extends CI_Controller
{
function index()
{
$data = $this->init->set();
$this->parser->parse('include/header', $data);
$this->parser->parse('student/student_index', $data);
$this->parser->parse('include/footer', $data);
}
function planner()
{
$data = $this->init->set();
$this->parser->parse('include/header', $data);
$this->parser->parse('student/student_cal', $data);
$this->parser->parse('include/footer', $data);
}
}
?>
Comme vous pouvez le voir, il y a beaucoup de répétitions ici. Fondamentalement tout cela. J'ai déjà mis mes variables dans un modèle, donc je n'ai qu'à appeler la fonction modèle à chaque fois au lieu de mettre l'ensemble des données $ array au début de chaque fonction. Quoi qu'il en soit, j'ai essayé de réduire la répétition ici en procédant comme suit:
<?php
class Student extends CI_Controller
{
function index()
{
$data = $this->init->set();
$this->parser->parse('include/header', $data);
switch($this->uri->segment(2))
{
case '': $this->home($data); break;
case 'planner': $this->planner($data); break;
}
$this->parser->parse('include/footer', $data);
}
function home($data)
{
$this->parser->parse('student/student_index', $data);
}
function planner($data)
{
$this->parser->parse('student/student_cal', $data);
}
}
?>
Cela fonctionne en quelque sorte, très bien pour ma page d'accueil. Il analyse les variables et il n'y a aucun problème. Cependant, sur la page 'planificateur', je reçois des erreurs:
Message: Missing argument 1 pour le planificateur de l'élève()
du message: Undefined variable: données
Message: Invalid argument fourni pour foreach()
Je suis assez sûr que je reçois ces erreurs parce que la fonction ne reçoit pas en quelque sorte le tableau $data
. J'ai également lu dans les documents de CI que le troisième segment d'une URL est passé en argument, et dans ce cas le troisième segment est inexistant, donc rien n'est passé. Cependant, les documents CI ne m'ont pas dit comment je pouvais passer mon tableau $data
de la fonction index()
à ma fonction planner()
. Je me demande également pourquoi la fonction de la maison fonctionne très bien, sans erreurs.
Hmm, j'ai essayé mais je n'arrivais pas à le faire fonctionner. Je suppose que je vais jouer avec ça plus tard; Un peu perdu un peu de temps à essayer cette autre «solution» ici. Je regardais la fonction _remap plus tôt, mais cela ne ferait pas vraiment ce que je voulais faire. Peut-être que je l'utilisais mal! :) Je vais jeter un coup d'oeil à nouveau, et peut-être chercher des modèles .. Je suppose que je ne comprends vraiment pas ce cadre :( – cabaret