2017-01-30 1 views
-1

ich in verschiedenen Web-Seiten habe gesucht, aber niemand hat klar oder mein Problem lösen ... Ich komme mit dem expertes, weil ich Ihre Hilfe brauche ... :(Codeigniter, Anruf SweetAlert in Controller-

Dies ist -Controller meine Benutzer Methode

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class UserController extends CI_Controller { 

function __construct() 
{ 
parent::__construct(); 
} 

function new_user_register(){ 
$this->form_validation->set_rules('primernombre', 'First Name','trim|required|alpha|min_length[3]|max_length[100]|xss_clean'); 
$this->form_validation->set_rules('primerapellido', 'Last Name', 'trim|required|alpha|min_length[3]|max_length[100]|xss_clean'); 
$this->form_validation->set_rules('nombreusuario','Username','trim|required|xss_clean'); 
$this->form_validation->set_rules('email','Email','trim|required|valid_email|is_unique[cat_tbl_usuario.email]|xss_clean'); 
$this->form_validation->set_rules('clave','Password','trim|required|matches[claveConfirmacion]|md5'); 
$this->form_validation->set_rules('claveConfirmacion','Confirm Password','trim|required|md5|matches[clave]'); 
if ($this->form_validation->run() == FALSE) { 
    echo "<script language=\"javascript\"> 
     swal('Please adjust the values in user' , 'Bad data format', 'error'); 
    </script>"; 
    } 
} 
?> 

im Grunde lade ich meine Ansicht in einen iFrame (fancybox) und i klicken sie auf die Schaltfläche OK, rufen sie die new_user_register Methode, und wenn die Validierung es falsch ist, dann ist die SWEETALERT sollte herauskommen sagen den Fehler, außer dass in der Konsole sagte Swald ist nicht definiert. Und die Beispiele, die ich suche, sind mir nicht zu klar.

+0

Wenn Sie fancyBox3 verwenden würden, könnten Sie damit eine Nachricht anzeigen, während auch ein Formular/eine Seite angezeigt wird, da es mehrere Instanzen unterstützt. – Janis

+0

Sweet Alerts sind clientseitige Dinge, versuchen Sie nicht, serverseitige Funktionen mit der Clientseite zu mischen. Ein Controller soll JavaScript nicht laden, besser so. –

Antwort

1

Der Code, den Sie geschrieben haben, ist kein professioneller Ansatz, bitte versuchen Sie, Ihr Formular mit Ajax einzureichen und rufen Sie den Swal (Sweetalert) im Ajax-Erfolg.

Schritt 1: Sie für nicht als Bibliothek form_validation in Ihrem Controller-Konstrukt zu laden zu bekommen ...

$this->load->library('form_validation'); 

$this->load->helper('form'); 

Schritt: 2 integriert SweetAlert in der Kopf- oder Fußzeile, bevor Sie Code für Ajax verfassen

<script src="dist/sweetalert.min.js"></script> 
<link rel="stylesheet" type="text/css" href="dist/sweetalert.css"> 

Schritt: 3 Controller Codebeispiel als

function MethodName { 
$this->form_validation->set_error_delimiters('', ''); 
$this->form_validation->set_rules('fname','First Name', 'required'); 
$this->form_validation->set_rules('lname','Last Name', 'required'); 
$this->form_validation->set_rules('email','Email Address','required|valid_email|is_unique[sec_users.email]'); 
if ($this->form_validation->run() == FALSE) { 
    echo validation_errors(); 
} 
else { 
    // To who are you wanting with input value such to insert as 
    $data['frist_name']=$this->input->post('fname'); 
    $data['last_name']=$this->input->post('lname'); 
    $data['user_name']=$this->input->post('email'); 
    // Then pass $data to Modal to insert bla bla!! 
    } 
} 

Schritt 4: Endlich die SweetAlert in Ajax zu übermitteln.

<script type="text/javascript"> 
    $(document).ready(function(){ 
    var dataString = $("#FormId").serialize(); 
    var url="ControllerName/MethodName" 
     $.ajax({ 
     type:"POST", 
     url:"<?php echo base_url() ?>"+url, 
     data:dataString, 
     success:function (data) { 
      swal(data); 
     } 
     });  
    }) 
</script> 

Wie diese Richtlinie helfen wird.

Vielen Dank!

1

Nehmen Sie dieses Beispiel für das Senden von Daten zu Ihrer Datenbank

if($_POST) 
     { 
      $config=array(
       array(
        'field' => 'parent', 
        'label' => 'Parent', 
        'rules' => 'trim|required' 
       ), 
       array(
        'field' => 'name', 
        'label' => 'Name', 
        'rules' => 'trim|required' 
       ) 
      ); 
      $this->form_validation->set_rules($config); 
      if($this->form_validation->run()==false) 
      { 
       $data['errors']=validation_errors(); 
       $data['parents']=$this->admin_model->getMenuParents(); 
       $data['title']='Master Cook | Kitchen'; 
       $this->load->view('static/head',$data); 
       $this->load->view('static/header'); 
       $this->load->view('static/sidebar'); 
       $this->load->view('admin/add_menu'); 
       $this->load->view('static/footer'); 
      } 
      else 
      { 
       $this->admin_model->addMenuItem($_POST); 
       $data['success']='Congratulations! Menu Item Added Successfully'; 
       $data['parents']=$this->admin_model->getMenuParents(); 
       $data['menu']=$this->admin_model->getMenuItems(); 
       $data['title']='Master Cook | Kitchen'; 
       $this->load->view('static/head',$data); 
       $this->load->view('static/header'); 
       $this->load->view('static/sidebar'); 
       $this->load->view('admin/add_menu'); 
       $this->load->view('static/footer'); 
      } 
     } 
     else 
     { 
      $data['parents']=$this->admin_model->getMenuParents(); 
      //echo '<pre>';print_r($data);exit; 
      $data['title']='Master Cook | Kitchen'; 
      $this->load->view('static/head',$data); 
      $this->load->view('static/header'); 
      $this->load->view('static/sidebar'); 
      $this->load->view('admin/add_menu'); 
      $this->load->view('static/footer'); 
     } 

Süße Alerts in Ansichten verwendet werden. ZB rendere ich eine Ansicht, um die Elemente zu verwalten. wie diese

Data Table

Das ist, wie es

Sweet Alert

Hier ist der Code, der süße Alarm rufen

<?php for($i=0;$i<count($menu_items);$i++){?> 
           <tr> 
            <td data-order="Jessica Brown"> 
             <strong><?php echo $i+1;?></strong> 
            </td> 
            <td class="maw-320"> 
             <span class="truncate"><?php echo $menu_items[$i]['name']?></span> 
            </td> 
            <td><?php echo $menu_items[$i]['parent']?></td> 
            <td><?php echo $menu_items[$i]['class']?></td> 
            <td><?php echo $menu_items[$i]['url']?></td> 
            <td> 
             <a href="<?php echo base_url().'admin/edit_admin_menu/'.$menu_items[$i]['id'];?>" class="btn btn-default"><i class="icon icon-pencil"></i></a> 
            // Call Sweet Alert  
            <button class="btn btn-danger" onclick="validate(this)" value="<?php echo $menu_items[$i]['id']?>"><i class="icon icon-times"></i></button> 
            </td> 
           </tr> 
          <?php }?> 

Und hier ist die Funktion, die die süße alert sieht rendert

<script src="<?php echo base_url()?>assets/js/sweetalert.min.js"></script> 
<script> 
$(function(){ TablesDatatables.init(); }); 
function validate(a) 
{ 
    var id= a.value; 

    swal({ 
      title: "Are you sure?", 
      text: "You want to delete this Menu Item!", 
      type: "warning", 
      showCancelButton: true, 
      confirmButtonColor: "#DD6B55", 
      confirmButtonText: "Yes, Delete it!", 
      closeOnConfirm: false }, function() 
     { 
      swal("Deleted!", "Menu Item has been Deleted.", "success"); 
      $(location).attr('href','<?php echo base_url()?>admin/del_admin_menu/'+id); 
     } 
    ); 
} 
</script>