0

我想使用 JSGrid 作为一种从 MySQL 数据库加载数据的方法,以及通过 CakePHP 3 保存(新的或编辑的)多行数据。但是,我不确定如何做到这一点,或者这是否是可能的。

对于加载,如果说我想编辑数据,我想从两个连接的表中获取数据。在 CakePHP 3 中,我会使用 find 检索数据,然后将其设置到视图中,但我不确定如何在加载视图时从那里将其放入 JSGrid。

为了类似地保存,我会保存到两个不同的表中。在 CakePHP 3 中,通常对于多个表,我会使用补丁实体来保存到各个表,并使用 AJAX 将内容保存在另一个页面上,而不是实际在该页面上(每个表的两个添加页面)。但是我不确定您是否可以使用多个数据来做到这一点。

例如。

$.post(".../users/add.json"

给定用户的字段,将执行添加页面通常会执行的操作,并且带有关联表的补丁实体将保存到各种关联表中,但一次只能保存一个。

更新:

我的配置/routes.php:

Router::scope('/', function (RouteBuilder $routes) {
    $routes->extensions(['json', 'xml']);
    $routes->resources('Instrument');
}

我的观点:

<div id="jsGrid"></div>
    <script>
        var resources = [];

        var instruments = [
            {Name: "", Id: 0},
            {Name: "Clarinet", Id: 1},
            {Name: "Guitar", Id: 2},
            {Name: "Piano", Id: 3},
            {Name: "Violin", Id: 4},
        ];

        $("#jsGrid").jsGrid({
            controller: {
                loadData: function (filter) {
                    return $.ajax({
                        type: "GET",
                        url: "<?= $basepath ?>/instrument/view/",
                        data: filter
                    });
                },
                insertItem: function (item) {
                    return $.ajax({
                        type: "POST",
                        url: "<?= $basepath ?>/instrument/add",
                        data: item
                    });
                },
                updateItem: function (item) {
                    return $.ajax({
                        type: "PUT",
                        url: "<?= $basepath ?>/instrument/edit",
                        data: item
                    });
                },
                deleteItem: function (item) {
                    return $.ajax({
                        type: "DELETE",
                        url: "<?= $basepath ?>/instrument/delete",
                        data: item
                    });
                }
            },

            width: "100%",
            height: "400px",

            inserting: true,
            editing: true,
            sorting: true,
            paging: true,

            data: resources,

            fields: [
                        {
                             name: "Instrument",
                             type: "select",
                             items: instruments,
                             valueField: "Id",
                             textField: "Name",
                             validate: "required",
                             width: 175
                        },
                        {name: "Comment", type: "text", width: 150},
                        {type: "control"}
                    ]
        });
    </script>

<?= $basepath ?>是在我的 AppController 中设置的变量,这意味着无论项目名称如何,我仍然可以访问 URL。

在视图中,当我尝试保存新行时,添加了该行,但内容为空白。当我尝试编辑一行时,我得到一个“请稍候”,然后什么都没有保存,我仍然可以编辑字段。此外,在控制台中,我收到以下错误:

http://localhost/<?= $basepath ?>/instrument/edit Failed to load resource: net::ERR_CONNECTION_RESET
4

0 回答 0