当我尝试在 Symfony2 的视图中更新表中的元素时,我不断收到此错误:
单元格无法更新(服务器错误)
我不确定问题是什么。是不是路由不正确?
具有 javascript 和表格的 twig(view) 文件。
用于从控制器检索表数据的 javascript:
<script language="JavaScript" type="text/javascript">
$(document).ready(function () {
$('#myDataTable').dataTable(
{
"bSort": true,
"bFilter": true,
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "{{ path('CetiucValidateSurveyBundle_renderJson')}}"
}
).makeEditable({
sUpdateURL: "{{ path('CetiucValidateSurveyBundle_updateChange')}}"
}
);
});
</script>
控制器中更新实体的方法(在此示例中进行了简化,它仅从请求中检索数据)。
public function updateChangeAction(Request $request)
{
$id = $_REQUEST['id'] ;
$value = $_REQUEST['value'] ;
$column = $_REQUEST['columnName'] ;
$columnPosition = $_REQUEST['columnPosition'] ;
$columnId = $_REQUEST['columnId'] ;
$rowId = $_REQUEST['rowId'] ;
return $value;
}
这是更新操作的路由条目
CetiucValidateSurveyBundle_updateChange:
defaults: { _controller: "CetiucValidateSurveyBundle:Validate:updateChangeAction", _format: json }
pattern: /update
requirements: { _format: (json), _method: POST }
这是我调用更新方法时写的日志,我没有发现任何对我的问题有用的东西:
[2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.request”到监听器“Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onKernelRequest”。[] [] [2012-10-16 03:25:55] request.INFO:匹配路由“CetiucValidateSurveyBundle_renderJson”(参数:“_controller”:“Cetiuc\Bundle\ValidateSurveyBundle\Controller\ValidateController::renderJsonAction”、“_route” :“CetiucValidateSurveyBundle_renderJson”)[] [] [2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.request”到监听器“Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest”。[] [] [2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.controller”到监听器“ 25:55] event.DEBUG:通知事件“kernel.response”到监听器“Sensio\Bundle\FrameworkExtraBundle\EventListener\CacheListener::onKernelResponse”。[] [] [2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.response”到监听器“Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse”。[] [] [2012-10-16 03:25:55] event.DEBUG:通知事件“kernel.response”到监听器“Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse”。[] []