3

I using datatable editor to display rows

This is the code I'm using

var editor; 
$(document).ready( function () {
editor = new $.fn.dataTable.Editor( {
"ajaxUrl": {
                    "create":        "admin/save",
                    
                },
                "domTable": "#example",
                "fields": [ {
                        "label": "username:",
                        "name": "username"
                    }, {
                        "label": "password:",
                        "name": "password",
                        "type":"password"
                    }, {
                        "label": "fname:",
                        "name": "fname"
                    }, {
                        "label": "lname:",
                        "name": "lname"
                    }, {
                        "label": "email:",
                        "name": "email"
                    },{
                        "label": "address:",
                        "name": "address"
                    }
                ]
            } );

            $('#example').dataTable( {
                
                "sDom": "Tfrtip",

                        "aoColumns": [
                        { "mData": "username"},
                        { "mData": "password" },
                        { "mData": "fname" },
                        { "mData": "lname" },
                        { "mData": "email" },
                        { "mData": "address" }
                    ],
                
                "oTableTools": {
                    "sRowSelect": "single",
                    "aButtons": [
                        { "sExtends": "editor_create", "editor": editor },
                        { "sExtends": "editor_edit",   "editor": editor },
                        { "sExtends": "editor_remove", "editor": editor }
                    ]
                }
            } );
        } );

How can I pass the form data to controller page? I also given name field but it is not added to element.

create : admin/save

Here admin is the controller name and save is the action name.

1 Answer 1

1

Using Datatables with the Editor extension, it sends data to the server to be processed. The client sends three fields: action, id and data. The action can be create, edit or delete. The id is only filled in for edit.

So in short, you can use this controller:

<?php
namespace MyModule\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\JsonModel;

class DatatablesController extends AbstractActionController
{
    public function saveAction()
    {
        if (!$this->getRequest()->isPost()) {
            $response = $this->getResponse();
            $response->setStatusCode(405); // Method not allowed
            return $response;
        }

        $action = $this->params()->fromPost('action', null);
        $data   = array();
        switch ($action) {
            case 'create':
                $data = $this->createRow();
                break;
            case 'edit':
                $data = $this->editRow();
                break;
            case 'delete':
                $data = $this->deleteRow();
                break;
            default:
                $response = $this->getResponse();
                $response->setStatusCode(422); // Unprocessable entity
                return $response;
        }

        $model = new JsonModel($data);
        return $model;
    }

    protected function createRow()
    {
        $data = $this->params()->fromPost('data', array());

        // Create a new entity with $data

        // Return the properties from the new entity
        return array();
    }

    protected function editRow()
    {
        $id   = $this->params()->fromPost('id');
        $data = $this->params()->fromPost('data', array());

        // Fetch the entity with id $id
        // Update the entity with $data

        // Return the properties from the entity
        return array();
    }

    protected function deleteRow()
    {
        $ids = $this->params()->fromPost('data', array());

        // Remove all entities with an id in the array $ids
    }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.