2017-06-21 9 views
0

私は自分のフォームにデータベースにデータを挿入し、電子メールとしてデータを送信するはずのボタンを1つ持っています。だから私の質問は、私はコントローラの機能を分離することができますか?私はすでに一つの関数で両方を(データベースに挿入して電子メールとしてデータを送る)しようとしました。私が実際にやりたかった機能が2以上であるため、実際にはうんざりしていました。 public function insertdata(){...}public function sendemail(){...} 多分そのようなものです。1つのボタンをコントローラーの2つの異なる機能を実行するcodeigniter

+1

はい、あなたが必要として当然のことながら、できるだけ多くの方法を作り、そしてあなたがあなたからの第二ボタンを追加することができますルート – Steve

+0

にリンクされているものからそれらを呼び出す、両方のボタンは、名前を持っている必要がありますあなたのコントローラーではまず、ユーザーがクリックしてロジックを作成するチャットボタンをキャッチする必要があります。または、2番目のボタンでhtml5アクションを使用してください – elddenmedio

答えて

1

はい、もちろん可能です。最初の関数を使用して2つの関数を作成し、データが挿入されるかどうかをチェックします。挿入した場合は、2番目の関数を呼び出してメールを送信します。たとえば:

public function insertdata(){ 
    $data = $this->input->post(); 
    //add model 
    $result = $this->insert_model->InsertData($data); 
    if($result>0){ 
    $this->sendmail($data); 
    }else{ 
    $this->session->set_flashdata('Your data not inserted'); 
    } 
} 
public function sendmail($data){ 
    //here you can read data and write code for send email. 
} 
+0

ありがとう、これは完全に動作します – wildape

+0

これは動作しますが、CodeIgniterがそのような別の関数から1つの関数を呼び出すのはベストプラクティスではありません。上記の例の 'sendmail'関数は、ライブラリに作成する必要があります。参照:https://www.codeigniter.com/user_guide/general/creating_libraries.html – Sparky

+0

Sparkyあなたは絶対に書いています。あなたは電子メール用のライブラリを作成し、sendmail関数を呼び出すことができます。 –

関連する問題