Bootstrap – Kohana Framework PHP – JQuery Modal Form

modal-forma-kohana-jquery

View_List: list.php

<a data-toggle="modal-form" href="/backend/configuration/edit/<?php echo $rs_configuration->id; ?>" class="btn btn-info" data-target="#modal-form">
    <i class="icon-edit icon-white"></i>  
</a>

View_Edit: edit.php

<form action="/backend/configuration/edit/<?php echo $rs_configuration->id ?>" class="form-horizontal" method="POST">
    <div class="modal-header">
        <button class="btn close" data-dismiss="modal">×</button>
        <h2><i class=""></i><span class="break"></span>Editar</h2>
    </div>
    <div class="modal-body">
        <div class="control-group">
            <label class="control-label">Clave:</label>
            <div class="controls">
                <input name="key" id="key" type="text" value="<?php echo $rs_configuration->key; ?>" />
            </div>
        </div>     
        <div class="control-group">
            <label class="control-label">Valor:</label>
            <div class="controls">
                <input name="value" id="value" type="text" value="<?php echo $rs_configuration->value; ?>" />
            </div>
        </div>
    </div>
    <div class="modal-footer">
        <button class="btn" data-dismiss="modal">Cerrar</button>
        <input type="submit" value="Guardar" class="btn btn-primary" />
    </div>
</form>

Controller: configuration.php

<?php
defined('SYSPATH') or die('No direct script access.');

class Controller_Backend_Configuration extends Controller_Backend_Template {
   
    public function action_list() {
       
        $ls_configuration           = ORM::factory('config_configuration')->find_all();    
        $view_configuration_list    = View::factory('backend/configuration/list')->set("ls_configuration", $ls_configuration);     
        $this->template->set('content', $view_configuration_list);             
    }
       
    public function action_new(){
        $this->action_edit(FALSE);
    }
   
    public function action_edit($edit = TRUE){     
        $this->auto_render = FALSE;    
        $valid = Validation::factory($this->request->post())
                    ->rule('key', 'not_empty')     
                    ->rule('value', 'not_empty');      
               
        $id = $edit ? $this->request->param('id') : NULL;      
        $rs_configuration = ORM::factory('config_configuration', $id);
       
        if ($this->request->method() == 'POST') {
            $rs_configuration->values($this->request->post());
            if ($valid->check()) {
                $rs_configuration->save();
                $this->request->redirect('backend/configuration/list');
            }
        }
        $content = View::factory('backend/configuration/edit')
                ->set('rs_configuration', $rs_configuration);
        $this->response->body($content);       
    }
   
   
    public function action_delete() {      
        if(!$id = $this->request->param('id')){
            $this->request->redirect('backend/configuration/list');
        }
        $rs_configuration = ORM::factory('config_configuration', $id);     
        //$rs_configuration->delete();
        $this->request->redirect('backend/configuration/list');    
    }
   
}

JS – JQuery

$(document).ready(function() {
    /* ---------- Modal forms ---------- */
    $('a[data-toggle=modal-form]').modalForm();
});
/*
<ul>
<li>---------- Extending jQuery ----------</li>
</ul>


 */

$.fn.extend({
    modalForm: function () {
        $(this).click(function (e) {
            var $this = $(this);
            var $href = $this.attr('href');
            var $target = $($this.data('target'));
           
            e.preventDefault();
           
            $target.load($href, function (response, status, xhr) {
                if(status == 'error') {
                    alert(xhr.responseText);
                } else {
                    $target.modal('show')
                        .on('shown', function () { $('body').css('overflow', 'hidden'); })
                        .on('hide', function () { $('body').css('overflow', 'visible'); });
                }
            });
        })
    }
});

 

post-author