【问题标题】:How do I add my objects to an array on form submit using JSON and PHP?如何使用 JSON 和 PHP 在表单提交时将对象添加到数组中?
【发布时间】:2017-09-27 02:32:32
【问题描述】:

如何将已从数据库返回的对象添加到表单提交时的数组中?我正在像这样从我的数据库中检索我的所有玩家,

$players = Player::all();

并像这样输出它们:

<form>

@foreach($players as $player)

<ul>

    <li>

    <input type="checkbox" name="{{ $player->id }}">
    {{ $player->fn }} {{ $player->ln }}

    </li>

</ul>

@endforeach

<input type="submit" value="Submit"> 

</form>

这就是我认为的“玩家池”,所有玩家都已加载并可供“签入”。我只是想在此页面上设置两个部分,一个包含玩家池,一个包含玩家池显示从玩家池中选择的玩家。当玩家签入时,他们将被添加到“玩家池”下方的“游戏中的玩家”部分,并且将成为可以再次提交的新表单的一部分,但提交到数据库而不是仅仅提交到页面.我将如何使用 JSON 和 PHP 实现这一点?

【问题讨论】:

    标签: javascript php jquery json laravel


    【解决方案1】:

    你需要给你一个表单类,这样你就可以开始构建一个 jQuery 函数来选择玩家,因为表单中的复选框被选中。

    说,

    <form class="player_form">
    </form>
    

    使用您在问题中提出的表单结构,名字和姓氏(我假设)只是框旁边的回声。如果您想在以后的表单中提交这些,您需要将这些作为输入字段,例如您的复选框:

    <input type="text" name="player_name" value="{{$player=>fname}}" />
    

    如果选中该 li 中的复选框,我认为您希望移动该 li 元素中的所有信息。为此,您可以使用change 将侦听器添加到复选框。您也可以使用click,但这不会监听通过键盘选中框的事件!

    $(document).ready(function(){
    $(".player_form :checkbox").change( function() {
        var player = $(this).closest("li");
    
       //Now add this point into your new form
    
       $(".my_submit_form").append(player);
    )}
    });
    

    closest 函数将遍历 dom 并找到最近的 li 元素,然后将此数据附加到您的新表单中。

    我建议您重新考虑您的表单命名约定。正如你所拥有的那样,你将为每个复选框提交一个唯一的名称,我认为这不是你的意思。

    <li>
    <input type="checkbox" name="player_id[]" value="{{$player->id}}" />
    <input type="text" name="player_fname[]" value="{{$player=>fname}}" />
    <input type="text" name="player_lname[]" value="{{$player=lname}}" />
    </li>
    

    就像你想要的那样,用于表单处理。不要忘记名称必须以数组形式提交(即 player_id[]),因为您将在一个表单中提交多个玩家!

    【讨论】:

      【解决方案2】:

      说实话,我不确定您想如何使用 JSON,但您可能希望使用玩家 ID 作为复选框的值而不是名称。

      <input type="checkbox" name="player_ids[]" value="{{ $player->id }}">
      

      然后您将在$_GET['player_ids'](或$_POST['player_ids'],如果这最终是一个 POST 表单)中拥有一组玩家 ID。

      【讨论】:

      • 太棒了!这几乎正​​是我想要的。我曾计划使用 JSON 和 AJAX 从池中加载玩家而不刷新页面,但我决定将数据发布到另一个页面以包含在第二个表单中。
      猜你喜欢
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      相关资源
      最近更新 更多