2017-09-27 12 views
0

ボタンが1つあります。私がボタンをクリックすると、それは私のtestcontroller.I内の関数のデモと呼ばれているcreatesectionと呼ばれるビューのページを呼び出す必要があります(私は動作している電子メールを送信するための)モデルを呼び出す必要があります。codeigniterを使用してページをリフレッシュするたびにコントローラ機能が実行されます

今すぐボタンをクリックした後、私はcreatesectionページにいますが、私はページをフレッシュにしています。再びコントローラのデモ機能を呼び出しています。

ワンクリックでコールするだけで、バックグラウンドでモデルを呼び出すだけで済みます。ユーザーはビューページを取得し、モデルは電子メールを送信できます。

<?php echo form_open('testcontroller/demo'); ?> 
<button name="clicked">click me</button> 
<?php echo form_close(); ?> 

testcontroller /デモwelcome.php

class testcontroller extends CI_Controller {  
public function demo(){ 
    $email=$this->session->userdata('email'); 

    $this->load->view('createsection'); 

    $this->load->model('user_model'); 
    $id=$this->user_model->new_user($email);//passing email id in model to send the email 

    //more code here.............. 
} 
} 

createsectionユーザーがボタンをクリックした後、このページを取得します

(表示ページ) 。

<?php echo form_open('testcontroller/confirm'); ?> 
    <input type="text" name="code"> 
    <input type="submit" name="submit"> 
    <?php echo form_close(); ?> 
+0

'testcontroller/demo'ページを読み込むたびに、' demo'関数が実行されます。なぜページを更新したいのですか?どのような機能を達成しようとしていますか? –

+0

あなたはロードビューページを持っていて、リフレッシュ後にコントローラーを変更していないので、同じコントローラー内にまだ同じコントローラーを呼び出す理由が残っています。 –

+0

@NeilPatrao、ビュー(作成セクション)のページでは、ユーザーが電子メールで受け取った確認コードを取得しています。私がページをリフレッシュすると、電子メールは続行されます。 –

答えて

1

私に動作します次に、あなたが送信ボタンで確認フォームをクリックして見つけることができますコントローラでこの変更を行うと、それはwelcome.phpページを開きますtestcontroller を実行しますあなたがページをリフレッシュするときに、newuserモデル関数が複数回実行されると思います。あなたは、あなたの質問に

class testcontroller extends CI_Controller { 

    public function demo(){ 
     $email = $this->session->userdata('email'); 

     $this->load->model('user_model'); 
     // passing email id in model to send the email 
     $id=$this->user_model->new_user($email); 

     redirect('testcontroller/demo_view/'); 
     //more code here.............. 
    } 

    public function demo_view(){ 
     $this->load->view('createsection'); 
    } 
} 
+0

返信ありがとうMr.ubm、あなたのコードは完全に私のために働いており、私の質問を理解していただきありがとうございます。私の側からアップ。 –

1

ねえ、それは

class testcontroller extends CI_Controller {  


     public function index() { 
      $this->load->view('welcome'); 
     } 

     public function demo() { 
      $this->load->view('createsection'); 
     } 
     public function confirm(){ 

      $email=$this->session->userdata('email'); 

      $this->load->model('user_model'); 
      $return = $this->user_model->new_user($email);   
     } 
    } 
+0

送信ボタンをクリックした後、確認機能を呼び出す必要がありますか? –

+0

ええ..それは今それを確認します..それは動作します –

+0

遅く返事、ミスターグース、返信ありがとうございます申し訳ありませんが解決策は私の側からme.upvoteのために働いています。 –

0

単純な答えをリダイレクトすることによって、これらの問題を回避することができます:

Controller内部関数はUIイベントに呼び出されていませんが、ページがロードされたとき。

たとえば、testcontroller/demoのページをロードすると、demo()関数が実行されます。ページtestcontroller/confirmをロードすると、confirm()関数が実行されます。もちろん、これらの関数が存在しなければ、404が見つかりませんでした。

関連する問題