我正在使用FOSJsRoutingBundle在JavaScript文件中生成Symfony 2路由URL。 我按照文档安装了软件包(https://github.com/FriendsOfSymfony/FOSJsRoutingBundle/tree/master/Resources/doc)
尝试使用ajax脚本实现表单提交,用户可以对其进行评分和评论。
这是我的twig / html代码:
<form id="feedback" method="post" name="feedback">
<div class="form">
<div class="form_layer">
<div class="rating">
<label>Rate Us:</label>
<input type="radio" name="rating" value="1"><small>One</small>
<input type="radio" name="rating" value="2"><small>Two</small>
<input type="radio" name="rating" value="3"><small>Three</small>
<input type="radio" name="rating" value="4"><small>Four</small>
<input type="radio" name="rating" value="5"><small>Five</small>
</div>
</div>
<div class="form_layer floated1">
<div class="comment">
<label>Please give your feedback</label>
<textarea rows="5" cols="32" id="comment" name="feedback"></textarea>
</div>
<div class="clr"></div>
</div>
<span class="comment_btn"><input type="submit" class="comment_submit" name="validate" value="Submit"></span>
</div>
</form>
这是我的JavaScript代码:
//Ajax Form Submission
$(function() {
$('.comment_submit').click(function() {
var rating = $(':radio').val();
var comment = $('#comment').val();
alert("comment: "+comment);
var route = Routing.generate('user_feedback');
alert("Route: "+route);
/* $.ajax({
type: "POST",
url: Routing.generate('user_feedback', { "rating": rating, "comment": comment}),
success: function() {
$('div.middle').html("<div class='message'></div>");
$('.message').html("<h3>Thank You!</h3>")
.append("<p>Your comment has been submitted</p>")
.hide()
.fadeIn(1500);
}
});
return false; */
//alert("Rating"+comment);
//alert("Feedback Submited");
});
});
我在routing.yml文件中添加了路由网址
现在问题是当我提交表单时,我无法获得路由值。我正在尝试警告路由值,你可以在代码中看到,但我没有得到vaue。当我提交时,表单会刷新。
代码有问题吗? 我是Symfony 2的新手,请帮助我。
谢谢
答案 0 :(得分:9)
检查您的配置路线:
my_route_to_user_feedback:
pattern: /user/feedback
defaults: { _controller: HelloBundle:User:feedback }
options:
expose: true
选项公开必须为真。这对FOSJsRoutingBundle来说非常重要!
答案 1 :(得分:1)
它不是symfony问题,问题出在javascript
您有一个提交按钮,该按钮将提交您的表单。要防止表单提交,您必须按照以下方式更改点击功能:
$('.comment_submit').click(function(e) {
e.preventDefault();
// your code goes here
return false;
}