我正在尝试通过电子邮件功能在页面管理员的仪表板中实现用户搜索。目前,我已经将一个值硬编码到$email
变量中只是为了测试搜索是否有效。它确实找到了正确的用户,但是在树枝上没有显示任何内容。
执行{{dump()}}输出:array:2 [▼0 =>用户{#4745▼-id:5- 用户名:“ test_user” -plainPassword:null -password: “ $ 2y $ 13 $ rGYteIrzifg9Dty.O5knOOCHQnzOtF.nZux8h1jc4sNbap5V7Xn0。” -电子邮件: “ tester@test.com”}“ app” => AppVariable {#2617▶}]
我在AdminController.php中使用的功能:
/**
* @Route("/admin/result", name="user_search")
* Method({"POST"})
*/
public function user_search(Request $request)
{
$email = 'tester@test.com';
$result = $this->getDoctrine()
->getRepository(User::class)
->findOneBy(['email' => $email]);
if ($result) {
return $this->render('admin/result.html.twig', $result);
}else{
return $this->render('admin/result.html.twig', [
'error' => 'No user found with this email '.$email]);
}}
result.html.twig:
{% extends 'base.html.twig' %}
{% block body %}
{% if error %}
<span class="error">{{ error }}</span>
{% endif %}
{% if result %}
<table>
<tr>
<th>Username</th><th>Email</th>
</tr>
{% for item in result %}
<tr>
<td>{{ item.getUsername }}</td><td>{{ item.getEmail }}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
{{ dump() }}
{% endblock %}
答案 0 :(得分:0)
使用instance
if ($result instanceof User)
.......................................................................
我建议您在树枝上使用defined
{% if result is defined %}
{% extends 'base.html.twig' %}
{% block body %}
{% if error is defined %}
<span class="error">{{ error }}</span>
{% else %}
<table>
<tr>
<th>Username</th><th>Email</th>
</tr>
{% for item in result %}
<tr>
<td>{{ result.getUsername }}</td><td>{{ result.getEmail }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% endblock %}
答案 1 :(得分:0)
在树枝中,您假设结果是数组。为此,请使用findBy而不是findOneBy。 findBy返回具有所需搜索的对象数组。 findOneBy仅返回具有所需搜索的对象;如果未找到结果,则返回null。
示例:
// look for a single User by email
$result = $this->getDoctrine()
->getRepository(User::class)
->findOneBy(['email' => $email]);
// look for multiple User objects matching the email
$result = $this->getDoctrine()
->getRepository(User::class)
->findBy(['email' => $email]);
答案 2 :(得分:0)
这最终通过以下步骤解决了:
$email
变量中有一个错字。 return $this->render('admin/result.html.twig', 'result'->$result);
而不是return $this->render('admin/result.html.twig', $result);
<td>{{ item.username }}</td><td>{{ item.email }}</td>
而不是<td>{{ result.getUsername }}</td><td>{{ result.getEmail }}</td>