我开始在一家新公司工作,他们有这个工具来管理公司的不同方面。他们使用php中的symfony框架和一个名为DataTables的jquery插件来显示表格。在项目中,他们使用table.js.twig,它应该使用表id为整个站点中的表提供某种格式。我的问题是如何实现这种文件。我一直在寻找有关此类文件的信息,但我只找到有关html.twig的信息。
the tables.js.twig:
$(function() {
.
.
.
$('#id1').dataTable({
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": true,
"bInfo": true,
"bAutoWidth": false
});
$('#id2').dataTable({
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": true,
"bInfo": true,
"bAutoWidth": false
});
.
.
.
});
base.html.twig中的脚本部分:
<script type="text/javascript">
$(document).ready(function() {
$('.summernote').summernote({
height: 500, // set editor height
minHeight: null, // set minimum height of editor
maxHeight: null, // set maximum height of editor
focus: true, // set focus to editable area after initializing summernote
});
//Here is where all the .dataTables should go.
});
</script>
如果我直接在脚本部分写入所有.dataTable它可以工作,但它们很多,并且它应该在一个twig文件中以使其更具可读性但我不知道它是如何工作的。
这是我的第一个问题,我将此作为最后一个资源。如果你能帮助我,我将非常感激。
修改
这是我在文件夹中的分发
/app
/Resources
/views
/base.html.twig
/src
/Company
/Bundle
/OfficeBundle
/Resources
/views
/User
/allUser.html.twig **Where I display the tables
/Structure
/tables.js.twig
答案 0 :(得分:0)
以下是我要做的事情:
class JavascriptController extends BaseController {
/**
* @Route(/javascript/datatable.js, name="javascript_datatable")
* @Template("YourBundle:Javascript:dataTable.js.twig")
*/
public function generateDataTableAction() {
//logic to fetch your data
return array('data' => $data);
}
}
在你的html中添加
<script type="text/javascript" src="{{ path('javascript_datatable')}}" />
在你的Twig中,你可以实现你想要构建表的逻辑
我不知道这是否违反良好做法。
答案 1 :(得分:0)
符号$(function() {
和$(document).ready(function() {
重叠。因此,如果您需要在 base.html.twig 中插入表格定义,我建议从 tables.js.twi g中删除$(function() {
容器base.html.twig替换
//Here is where all the .dataTables should go.
部分:
{% include 'tables.js.twig' %}
tables.js.twig路径应根据您的目录结构进行调整。
答案 2 :(得分:0)
我发现了问题,我使用了Salenix的解决方案。问题出在路径上,为了做出参考,我必须做以下事情:
{% block documentReady %}
{{ parent() }}
{% include '@CompanyOfficeITBundle/Resources/views/Structure/tables.js.twig'%}
{% endblock documentReady %}
首先为文件准备一个块,然后按照Salenix的建议进行操作,最后我必须使用@和bundle进行引用。
感谢您的帮助。