【问题标题】:Form hidden input表单隐藏输入
【发布时间】:2020-01-11 13:51:28
【问题描述】:

所以,我想在隐藏的表单中输入一个值。该值将是当前用户的 id,因此用户不需要输入任何内容。

到目前为止,我在表单中执行了此代码,但仍然将 id 输入为 NULL:

echo $this->Form->hidden("id",
[
    "options" => $currentUserr
]);

$currentUser 是网站中当前用户的 ID。如何将该值放入数据库中?

【问题讨论】:

  • 首先,我建议不要这样做,如果没有表单篡改保护,这将允许用户为用户 ID 传递任意值。话虽如此,为什么字段命名为id?这通常是主键的名称,在烘焙实体时,不允许进行批量分配。
  • @ndm 是的,你是对的,但我实际上是在尝试在数据库中输入创建对象的人的用户 ID
  • 我怀疑,同样的担忧,同样的问题。
  • Footprint 插件正是这样做的。
  • @GregSchmidt 是的,不错的选择!

标签: php cakephp cakephp-3.0


【解决方案1】:

您的输入必须具有name 属性。完成后,您可以检索所有请求参数,甚至是隐藏字段。

【讨论】:

  • 不太理解这个答案。我正在获取当前用户 ID,并在表单中尝试插入该用户 ID,以便 DB 字段“ID”不会为空,然后我可以使用该用户 ID 访问该对象
  • 在发送到数据库之前可以打印 id 吗?
  • 感谢您的帮助,但已解决。我在控制器中保存数据时添加了Id
【解决方案2】:

我认为你可以这样做

echo $this->Form->input("id",[‘type’=>’hidden’,
"options" => $currentUser]);

你可以在http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html做笔记

但是-也就是说-您实际上不应该使用其中任何一个。并省略任何对视图及其形式没有实际用途的字段。相反,您应该在保存之前将这些字段注入数据数组。见http://www.dereuromark.de/2010/06/23/working-with-forms/

【讨论】:

    【解决方案3】:

    你可以这样试试

     //First you get hidden field value
    
        $current_user_id = $this->request->data("id");
    
    //and then save that data to database table
    
      $this->User->save(array('id' => $current_user_id));
    

    【讨论】:

    • 感谢您的回复,但我正在尝试将值保存在视图中
    • 兄弟哪里有问题。你会再说一遍吗?
    • 当然,问题是我正在填写表格以在我的示例中创建“汽车”。当我填写此表单时,用户的 id 仍为 NULL,因此,稍后,由于数据库中的 NULL 字段,我无法访问“我的汽车”列表。在我提供的代码示例中,我尝试在填写表单时插入 $currentUser 中的值 id,这就是它设置为“隐藏”的原因
    • 兄弟,先把你的数据库表中的id字段列设置为主键,并设置自动递增,然后你就可以将你的表单数据添加到数据库中,所以你不需要添加id值到 DB 表列,因为该列自动为每条记录生成唯一 id。
    • 我研究了另一种方法。在保存所有对象之前,我不是在视图中而是在控制器中保存 id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2022-09-23
    相关资源
    最近更新 更多