2017-12-28 32 views
-1

フッタのウェブサイトでニュースレターの購読用のフォームを作成しました。このためのコードは次のとおりです。私はすべての検証を行い、挿入した後、今検証が完了したら、モーダルウィンドウを表示する方法は?

public function createAction(){ 
    if($_SERVER["REQUEST_METHOD"] == "POST"){ 
     $validation = true; 
     $error = ""; 

     if(trim($_POST["subscriber"]) == ""){ 
      $validation = false; 
      $error = "The field 'subscriber' is required!"; 
     } 

     if(trim($_POST["subscriber"]) != ""){ 
      if(!preg_match('/^([a-z0-9]+([_\.\-]{1}[a-z0-9]+)*){1}([@]){1}([a-z0-9]+([_\-]{1}[a-z0-9]+)*)+(([\.]{1}[a-z]{2,6}){0,3}){1}$/i', $_POST["subscriber"])){ 
       $validation = false; 
       $error = "The field 'subscriber' must contain a valid input!"; 
      } 
     } 

     if($validation){ 
      $checkSubscriber = $this->newsletterRepository->checkSubscriber($_POST["subscriber"]); 
      if(!$checkSubscriber){ 
       $newsletter = new Newsletter(); 
       $newsletter->setEmail($_POST["subscriber"]); 
       $result = $this->newsletterRepository->insert($newsletter); 
       if(!$result){ 
        $error = "There was an error in the newsletter 
       } 
      }else{ 
       $error = "The e-mail already registered for newsletter!"; 
      } 
     } 
    }else{ 
     URL::redirect("Restaurants", "listAll"); 
    } 
} 

<h4>Newsletter Subscribe:</h4> 
<form method="POST" action="<?php URL::show("Newsletter", "create") ?>"> 
    <div class="col-md-12"> 
     <div class="input-group"> 
      <input type="text" class="form-control" name="subscriber" placeholder="[email protected]"> 
      <input type="submit" class="btn btn-primary" value="Subscribe"> 
     </div> 
    </div> 
</form> 

私は送信ボタンをクリックして次のようになり、そのNewsletterControllerからcreateActionメソッドを呼び出します。データベース内のデータ、別のWebページに行きたくない場合は、すべてが正常だった場合は確認メッセージが表示され、エラーがあった場合はエラーメッセージが表示されます。このような何か:

<div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> 
    <div class="modal-dialog modal-lg"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <h5 class="modal-title">Newsletter Subscription</h5> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
        <span aria-hidden="true">&times;</span> 
       </button> 
      </div> 
      <div class="modal-body"> 
       <div class="container-fluid"> 
        <?php if($result): ?> 
         <p style="color:green">Newsletter subscription successfuly!</p> 
        <?php elseif($error): ?> 
         <p style="color:red"><?php echo $error; ?></p> 
        <?php endif; ?> 
       </div> 
      </div> 
      <div class="modal-footer"> 
       <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> 
      </div> 
     </div> 
    </div> 
</div> 

しかし、私はどのようにすべての操作と検証が完了した後にモーダルを引き起こすのか分かりません。誰でも助けてくれますか?

+0

最高の解決策はおそらくJavaScriptを使ってそれを行うことですが、あなたはJavaScriptと一緒にフォームを送信しなければならないとにかく、あなたのコードであまりにも多くを変更せずに同じページをリロードして、フォームの代わりにメッセージの部分を表示する必要があります。 – Sheki

+0

レコードがテーブルに挿入されると通知がありますか? –

+0

テーブルのデータを挿入する方法ではなく、モーダルを表示する方法を尋ねました – Ciprian

答えて

0

私が考えることができる最も簡単な方法の1つは、javascriptを使用することです。あなたはモーダルを呼び出し、独自のカスタマイズを行うことができますあなたのJavaScriptファイルよりも

echo "<script type="text/javascript">the_function_you_want_to_call_from_javascript_file(); 
</script>"; 

:検証が正常に行われた後、次のようなJavaScript関数を呼び出すことができます。 希望しますそれは助けてください:)

関連する問題