在制定最好的做事方法时遇到一些麻烦。我有一个普通的表单,这个表单已经有一个动作和一个data-url
<form action="{{ path('NickAlertBundle_create') }}" data-url="{{ path('NickAlertBundle_view') }}" method="post" enctype="multipart/form-data">
提交表单后,会转到javascript文件,ajax会处理它
$.ajax({
type: "POST",
url: $("#addAlertForm").attr("action"),
data: data,
success: function(data) {
if(data){
var splitdata = data.split(":");
if(splitdata[0]=="Success"){
var id = splitdata[1];
alert("Your alert has been added");
document.location.href= $("#addAlertForm").attr('data-url');
}else{
alert(data);
}
}else{
alert("Unknown Error!");
}
},
error:function(){
alert("Error! Please try again");
}
});
所以它基本上将一些数据发布到我的表单操作路径。如果它返回消息Success,它会将用户重定向到我的data-url路由。
所以一切正常。在我的createAction中,我将数据插入数据库,如果成功,我将返回Success。然后,用户将重定向到view-alerts(viewAction)页面以查看数据。
public function createAction(Request $request)
{
try {
//Get data
$em = $this->getDoctrine()->getManager();
$alert = new AvailabilityAlert();
$alert->setSearchCommand($na_command);
$alert->setLastUpdated();
$em->persist($alert);
$em->flush();
return new JsonResponse('Success');
}catch (Exception $e) {
}
}
public function viewAction()
{
$repository = $this
->getDoctrine()
->getManager()
->getRepository('NickAlertBundle:AvailabilityAlert');
$alerts = $repository->getAllActiveAlerts();
return $this->render('NickAlertBundle:Page:view.html.twig', array(
'alerts' => $alerts,
));
}
所以这一切都很有效,但现在出了问题。如果createAction成功,我现在需要加载其他东西,包括将警报传递给新类,这样我就可以用它做一些Web服务(没有任何内容显示给用户,一切都在后台完成)
为了做到这一点,我基本上是新的,在我的创建动作
的末尾添加如下内容include 'cron_single.php';
addFlightsAction($alert);
这样做似乎是错误的。所以我在考虑为此创建一个单独的操作,我认为这是正确的方法。所以在上面的ajax中,如果响应是Success(我在哪里进行重定向),我可能会调用另一条路由。要做到这一点,我必须给我的表格类似于另一个数据网址,以便我可以获得路线,并且在我的表格中有这么多这些似乎是不正确的。
我想到的另一件事是直接在createAction的末尾做一些事情,比如调用路线。不知道这是否可能?
处理这样的事情最好的办法是什么?
由于