我在一个Laravel5项目中集成了dhtmlxGantt,一切都按预期工作。但我想修改它以存储多个项目的图表。为此,我想添加名为" project_id"的额外字段。并通过过滤器加载数据。
我尝试使用以下代码修改Controller:
$connector->render_links(
GanttLink::where('user_id', '=', 1)->get(),
"id",
"source,target,type"
);
$connector->render_table(
GanttTask::where('user_id', '=', 1)->get(),
"id",
"start_date,duration,text,progress,parent"
);
这个解决方案允许我以我想要的方式从数据库加载图表。但它不会将更改保存回数据库。我浏览了dhtmlxGantt文档,但没有得到任何解决方案。
我在研究中发现了这些链接,可能会有所帮助。
Link 1: Changing values before saving
Link 2: Filtering results based on a parameter
请帮助我以允许在不同图表上工作(加载和编辑)的方式修改我的项目。
答案 0 :(得分:0)
最后我找到了解决方案。首先,您需要将project_id
列添加到数据库表中,然后将该列添加到连接器配置中:
$connector->render_table(new GanttTask(), "id", "start_date,duration,text,progress,parent,project_id");
然后你必须对客户端代码进行一些修改。使用类似的东西
var project_id = "<?php echo $project['id']; ?>";
为了将变量带入<script>..</script>
然后通过添加这两个客户端处理程序来修改代码:
gantt.attachEvent("onBeforeTaskDisplay", function (id, task) {
if (task.project_id == project_id) {
return true;
}
return false;
});
和
gantt.attachEvent("onBeforeTaskAdd", function (id, task) {
task.project_id = project_id;
});
第一个处理程序在显示图表之前以您希望的方式过滤结果,第二个处理程序在添加任务之前附加project_id
属性。现在你有了一个可以显示多个项目的dhtmlxGatt。