thinkphp3.1 表单中为啥带name带[]的,后台得不到值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp3.1 表单中为啥带name带[]的,后台得不到值?相关的知识,希望对你有一定的参考价值。

<form name="form" action="ApiYing::U('User/Group/GroupAdd')" method="post" >
<input type="text" name="pics[]">
<input type="text" name="explain[]">
<input type="text" name="pics[]">
<input type="text" name="explain[]">
<input type="text" name="pics[]">
<input type="text" name="explain[]">
<input type="submit" value="提交">
</form>

上面这种写法,在thinkphp中得不到值,请问修改thinkphp哪个地方可以让后台得到表单数据
表单是下面的

打印结果是下面的

参考技术A 假设一个input是这样<input type="text" name="a[]"/>后台$_POST[*a*];这是个数组,不能直接echo,要用print_r追问

咱们专业点吧,没看到我的打印结果吗?我用的就是print_r()打印的。这个是thinkphp的过滤机制给过滤掉了,不是打印的方式不对。我要的是在哪能把那个过滤机制给修改掉

带布尔值的 useState

【中文标题】带布尔值的 useState【英文标题】:useState with a boolean 【发布时间】:2020-03-16 14:52:53 【问题描述】:

我有一个 react next.js 项目和一个表单。我想在我的表单中使用滑块。顺便说一句,我使用语义 ui 反应。我有一个带有以下输入的 useState 钩子:

function CreateTicket() 
  const [ticket, setTicket] = useState(
    name: "",
    description: "",
    media: "",
    priority: false
  );
....

还有一个handleChange、handleSubmit 和一个handleToggle 函数。当我在 console.log 中提交表单时,它不会将优先级的值设置回 false。

      <Checkbox
        style= padding: "1rem" 
        label="Important?"
        name="priority"
        toggle
        onChange=handleToggle
      />

  const handleToggle = event => 
    let  priority  = event.target;
    setTicket(prevState => ( ...prevState, priority: !priority ));
  ;

console.log ->

页面刷新后:

name: "", description: "", media: "", priority: false

之后:切换

name: "", description: "", media: "", priority: true

第二次切换后

name: "", description: "", media: "", priority: true

我做错了什么?

【问题讨论】:

event.target 没有属性 priority 据我所知,!undefinedtrue 【参考方案1】:

您需要从prevState 解构priority,而不是event.target

const handleToggle = event => 
  setTicket(( priority, ...prevState ) =>
    ( ...prevState, priority: !priority )
  );
;

作为一种优化,您可以将handleToggleuseCallback() 一起记忆,这样&lt;Checkbox/&gt; 就不需要在每次状态更新时重新渲染:

const handleToggle = useCallback(event => 
  setTicket(( priority, ...prevState ) =>
    ( ...prevState, priority: !priority )
  );
, [setTicket]);

【讨论】:

以上是关于thinkphp3.1 表单中为啥带name带[]的,后台得不到值?的主要内容,如果未能解决你的问题,请参考以下文章

带表单的javascript验证身份证号

带文件的表单提交

java实体的属性名怎么设置成 带.

带布尔值的 useState

ajax--表单带file数据提交报错Uncaught TypeError: Illegal invocation

为啥定义带或不带引号的 JavaScript 对象字面量会有所不同? [复制]