我有一个简单的showAction来显示用户的信息:
/**
* @Route("/user/{id}", name="show_user", options={"expose"=true})
* @Method("GET")
*
* @param User $user
* @return \Symfony\Component\HttpFoundation\Response
*/
public function showAction(User $user)
{
return $this->render('user/showUser.html.twig', array(
'user' => $user,
));
}
我尝试用AJAX获取信息,以单独的div显示它:
$('.showUser').click(function (e) {
var getUrl = Routing.generate('show_user', {'id': $(this).attr('id')});
e.preventDefault();
$.ajax({
url: getUrl,
success: function (data) {
$("#userdetails").html(data);
}
});
});
我在html中的用户概述列表:
<table class="table-title table table-striped table-bordered">
<thead>
<tr>
<th class="col-md-2">Name</th>
<th class="col-md-1">Age</th>
<th class="col-md-1">Actions</th>
</tr>
</thead>
<tbody>
<tr>
{% for user in users %}
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
<td>
<button id="{{ user.id }}" type="button" class="deleteUser btn btn-lg btn-danger">Delete</button>
<button id="{{ user.id }}" type="button" class="showUser btn btn-lg btn-primary">Show</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="displayUser col-sm-4">
{% include 'user/showUser.html.twig' %}
</div>
我的showUser模板显示所选用户:
<div id="userdetails">
{{ dump(user) }}
</div>
目前正在发生的事情是,当我加载页面时,{{ dump(user) }}
包含所有用户的数组,并且不为空。当我点击“显示”按钮以显示一个用户的信息时,{{ dump(user)}}
确实会更改以显示正确的信息。
当我将{{ dump(user) }}
更改为{{ user.name }} - {{ user.age }}
并重新加载页面时,我收到错误:
Key&#34; name&#34;对于带有键的数组&#34; 0,1和#34;在...中不存在 第2行的user / showUser.html.twig
有人能帮助我吗?向我解释我做错了什么?我认为我的ajax调用也有问题,我之前从未使用过ajax,而且我根据我设法找到的样本创建了这个,但除此之外我还没有。
我想要的是在点击用户的显示按钮时在div中显示用户的信息。
答案 0 :(得分:0)
我想我明白了:
我改变了我的ajax功能:
$('.showUser').click(function() {
var getUrl = Routing.generate('show_user', {'id': $(this).attr('id')});
$.get(getUrl, function (data) {
$(".userdetails").html(data);
});
});
我删除了twig include(也是Peter Popelyskho在评论中所说的)并将showUser.html中的div粘贴到其位置:
<table class="table-title table table-striped table-bordered">
<thead>
<tr>
<th class="col-md-2">Name</th>
<th class="col-md-1">Age</th>
<th class="col-md-1">Actions</th>
</tr>
</thead>
<tbody>
<tr>
{% for user in users %}
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
<td>
<button id="{{ user.id }}" type="button" class="deleteUser btn btn-lg btn-danger">Delete</button>
<button id="{{ user.id }}" type="button" class="showUser btn btn-lg btn-primary">Show</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="userdetails"></div>
在我的user/showUser.html.twig
模板中,我有:{{ user.name}} - {{ user.age }}
。
它看起来不错!
如果有人认为有更好的方式或更方便的方式,请随时告诉我,我想尽可能好地学习。