Переключение контроллеров и отправка данных в codeigniter - PullRequest
0 голосов
/ 08 августа 2011

Мне нужно разработать внутреннее веб-приложение с codeigniter, и мне нужно объединить в цепочку различные формы (генерировать данные, выбранные в предыдущей форме).Прямо сейчас я пытался использовать проверку формы в том же методе контроллера, но цепочка проверяет только первую форму, я пробовал также с переменными $ _SESSION, но мне приходится отправлять большое количество данных между каждой формой.Я пытался с переменной класса (в контроллерах и моделях), но каждый раз при отправке формы переменные инициализируются ... Так что мне интересно, есть ли способ переключиться с метода на другой в моем контроллере, передавая данные новомуконтроллер.

моя первая форма:

<p>Filtres: </p>

        <br/><br/>
        <form action="" method="post" id="form_ajout_manip" >
        <label for="thematique[]">Thématique</label><br/>
        <select name="thematique[]" size="20" multiple>
        <?php
            foreach($list_thema->result() as $thema)
            {
                echo "<option value='".$thema->THEMATIQUE_ID."'>".$thema->PARENT_THEMATIQUE_ID." - ".
                $thema->NOM."</option>";
            }
        ?>

        </select>
        <input type="hidden" value="true"/>

        <br/>
        <br/>

        <br/>

            <input type="submit" value="Rechercher" />
        </form>

моя вторая форма:

<form action="" method="post" id="form_ajout_manip_cdt">
<label for="nom_manip" >Nom manipulation: </label>
<br/>
<input type="text" name="nom_manip"/>

<TABLE border="1">

  <CAPTION><?php echo $data->num_rows.'  '; ?>resuuultat</CAPTION>
  <TR>
    <?php
    foreach($data->list_fields() as $titre)
    {
        echo '<TH>'.$titre.'</TH>';
    }
    ?>
  </TR>

<?php
    foreach($data->result() as $ligne)
    {
        echo '<TR>';
        foreach($ligne as $case)
        {
            echo '<TD>'.$case.'</TD>';

        }
        echo '<TD><input type="checkbox" name="cdt[]"  value="'.$ligne->ID_CANDIDAT.'"
                checked="true"</TD>';

        echo '</TR>';
    }
?>

</TABLE>
<br/><br/>
<input type="submit" value="créer"/>
</form>

Это два метода моего контроллера

public function choix()
{
    //controller for the second form
    $this->info_page['title']='Ajout manipulation';
    $this->load->view('ui_items/header',$this->info_page);
    $this->load->view('ui_items/top_menu'); 

    $this->load->view("manipulation/choix",$data);
}

public function filtre()
{
    //controller for the first form

    $this->form_validation->set_rules('thematique[]','Thematique','');
    if($this->form_validation->run())
    {

            $data['data']=$this->manipulation_mod->select_par_filtre($this->input->post('thematique'));
            //need to send $data to the second method "choix()"
    }
    else
    {

        $this->info_page['title']='Filtre ajout manipulation';
        $this->load->view('ui_items/header',$this->info_page);
        $this->load->view('ui_items/top_menu');

        $data= array();
        $data['list_op']= $this->candidat_mod->list_operateur();
        $data['list_thema']= $this->thematique_mod->list_all_thematique();
        $data['list_gene']= $this->candidat_mod->list_gene();

        $this->load->view('manipulation/filtre', $data);
    }
}

Есть идеи?Я полностью застрял ...

1 Ответ

1 голос
/ 09 августа 2011

Основываясь на ваших пояснениях, позвольте мне дать вам общее представление о том, что будет работать

Просмотр

Имеют обе формы на одной странице

<? if(!$filtered): ?>

<input type="hidden" name="filtered" value="true"/>
/*  Form 1 content here  */

<? else: ?>
<input type="hidden" name="filtered" value="true"/>
/*  Form 2 content here */

<? endif; ?>

Контроллер

Вам просто нужно использовать один контроллер

public function filter() {

    $filtered = $this->input->post('filtered');
    $data['filtered'] = $filtered;

    if(empty($filtered)) {
        /*  Form validation rules for Form 1    */
        /*  Run form validation etc. */
        /*  Set title etc. for Form 1   */
    } else {
        /*  Form validation rules for Form 2    */            
        /*  Run form validation etc. */
        /*  Set title etc. for Form 2   */        
    }

    /*  Load view  */
}

Возможно, есть лучший способ сделать это, но я уверен, что это сработает.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...