在DHTMLX中使用BeforeInsert并将变量传递给表单

时间:2017-06-20 22:57:58

标签: php dhtmlx dhtmlx-scheduler

我遇到以下问题:我有一个由不同用户使用的调度程序。当用户向调度程序添加事件时,必须将包含其id的会话变量传递给将其插入数据库的处理器。

我的第一个问题是如何将会话变量绑定到使用scheduler.config.lightbox.sections创建的表单:

  scheduler.config.lightbox.sections=[
        {name:"Customer Code", height:21, map_to:"text", type:"textarea" , focus:false},
    {name:"Photographer", height:21,  map_to:"pid", type:"select",
      options:scheduler.serverList("type")},
        {name:"time", height:72, type:"time", map_to:"auto"}
    ]

是否可以将会话变量绑定到它?

我的第二个问题是如何在processor.php中获取会话变量? 如果我错了,请纠正我,但根据文件,它将是这样的:

//... connect here
function myInsert($action){
        $new_value = rand(0,100);
        $action->set_value("name",$new_value);
}

$conn->event->attach("beforeInsert","myInsert");
// ...some code here
$conn->render_table("photographers_at_work", "id", "time, end_time, customer_code, pid"); 

1 个答案:

答案 0 :(得分:0)

您可以使用onEventCreated将默认值(例如用户ID)分配给新创建的事件:

scheduler.attachEvent("onEventCreated", function(id,e){
    var event = scheduler.getEvent(id);
    event.pid = userId;
});

https://docs.dhtmlx.com/scheduler/api__scheduler_oneventcreated_event.html

此灯具事件在灯箱打开前触发,因此灯箱将收到指定的值。

至于后端 - 是的,这样的事情应该有效。几个笔记

  1. $ action-> set_value - 第一个参数是列名
  2. 此列必须列在您提供给连接器的属性列中(例如,如果您设置了render_table参数中没有的列值 - 连接器将忽略它)
  3. 以下内容应该如下:

    //... connect here
    function myInsert($action){
            global $userId;
            $action->set_value("pid",$userId);// ! set value of "pid" column
    }
    
    $conn->event->attach("beforeInsert","myInsert");
    // ...some code here
    $conn->render_table("photographers_at_work", "id", "time, end_time, customer_code, pid");
    

    您可以启用连接器日志记录,以查看连接器生成的实际sql请求:https://docs.dhtmlx.com/connector__php__errors.html#serversidelogging