dongxun8189 2018-09-26 16:21
浏览 42
已采纳

Symfony 4 - 如果数据库查找失败,如何避免呈现表单?

I have a form which loads based on a lookup from the database of a id value from a get request.

$Id = $request->query->get('id');

if (!empty($Id) && $Id != 'add') {
    $search = $this->getDoctrine()
        ->getRepository(Clients::class)
        ->find($Id);

    if (is_null($search))
        $this->addFlash('danger', 'Invalid Client');
    else
        $form = $this->createForm(ClientViewType::class,$search);
}
else {
    $form = $this->createForm(ClientViewType::class);
}

You can see I'm adding a flashbag message of 'invalid client', but the problem is the form will still show. Is there some way to not show the form? Basically I just want the flashbag message to display and that's it.

I tried some things - i.e. setting $form to null, just returning the page, without the form, etc. but that just forces other problems.

  • 写回答

4条回答 默认 最新

  • douquanzhan0315 2018-09-26 17:19
    关注

    You should indeed set $form to null when you have an invalid client. Then in your twig you could have a conditional rendering like this:

    {% if form is not null %}
        {{ form_start(form) }}
            {{ form_widget(form) }}
        {{ form_end(form) }}
    {% else %}
        {% for message in app.flashes('danger') %}
            <div class="flash-notice">
                {{ message }}
            </div>
        {% endfor %}
    {% endif %}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵