无法从Laravel中的li获得输入

时间:2019-02-01 06:43:57

标签: php laravel

我在每个li中都有一个列表,但我有一个输入字段,但是当我发送数据时无法获得这些输入的值

刀片

@foreach($options as $group => $option)

// another options here with name="dropdown" //

// And this data won't send
<div class="tt-swatches-container">
    <div class="tt-wrapper">
        <div class="tt-title-options">{{$group}}:</div>
        <ul class="tt-list-inline tt-options-swatch options-large">
            @foreach($option as $opt)
            <li class="tt-list-inline-item">
                <label for="{{$opt->id}}">
                    <input type="checkbox" name="{{$group}}" value="{{$opt->title}}" id="{{$opt->id}}" />
                    {{$opt->title}}
                </label>
            </li>
            @endforeach
        </ul>
    </div>
</div>
@endforeach

结果

array:3 [▼
  "_token" => "kanCHxEv96MWih4TaXTKSjHYu8gDdWs1YLDCWiv0"
  "dropdown" => "title 44"
  "quantity" => "1"
  //here should be another option named color!
]
  

其上方的该数据应包含name="{{$group}}",并且   值(在这种情况下为name="{{$group}}" == colors

one

有什么主意吗?

更新

我的表格

<form method="post" class="form-default" action="{{route('addingItem', $product->id)}}">
    @csrf

    @if(count($options)>0)
    <!-- options -->
    <div class="tt-swatches-container">
        @foreach($options as $group => $option)
        @if($group == 'color')
            <div class="tt-wrapper">
                <div class="tt-title-options">{{$group}}:</div>
                <ul class="tt-list-inline tt-options-swatch options-large">
                    @foreach($option as $opt)
                    <li class="tt-list-inline-item">
                        <label style="background-color: {{$opt->color}}" class="options-color" for="{{$opt->id}}">
                            <input type="radio" name="{{$group}}" value="{{$opt->title}}" id="{{$opt->id}}" />
                        </label>
                    </li>
                    @endforeach
                </ul>
            </div>
        @elseif($group == 'dropdown')
            <div class="tt-swatches-container">
                <div class="tt-wrapper">
                    <div class="tt-title-options">{{$group}}:</div>
                    <div class="form-group">
                        <select name="{{$group}}" class="form-control">
                            @foreach($option as $opt)
                                <option>{{$opt->title}}</option>
                            @endforeach
                        </select>
                    </div>
                </div>
            </div>
        @else
            <div class="tt-swatches-container">
                <div class="tt-wrapper">
                    <div class="tt-title-options">{{$group}}:</div>
                    <ul class="tt-list-inline tt-options-swatch options-large">
                        @foreach($option as $opt)
                        <li class="tt-list-inline-item">
                            <label for="{{$opt->id}}">
                                <input type="checkbox" name="{{$group}}" value="{{$opt->title}}" id="{{$opt->id}}" />
                                {{$opt->title}}
                            </label>
                        </li>
                        @endforeach
                    </ul>
                </div>
            </div>
        @endif
        @endforeach
    </div>
    <!-- options -->
    @endif

    <div class="tt-wrapper">
        <div class="tt-row-custom-01  tt-responsive-lg">
            <div class="col-item">
                <div class="tt-input-counter style-01">
                    <span class="minus-btn"></span>
                    <input type="text" name="quantity" value="1" size="5">
                    <span class="plus-btn"></span>
                </div>
            </div>
            <div class="col-item">
                <button type="submit" data-id="{{$product->id}}" class="btn btn-lg"><i class="icon-f-39"></i>ADD TO CART</button>
            </div>
        </div>
    </div>
</form>

更新2

$options页的

Collection {#3133 ▼
  #items: array:3 [▼
    "color" => Collection {#3127 ▼
      #items: array:2 [▶]
    }
    "dropdown" => Collection {#3128 ▼
      #items: array:2 [▶]
    }
    "radio" => Collection {#3129 ▼
      #items: array:3 [▶]
    }
  ]
}

更新3

外部HTML

<form method="post" class="form-default" action="http://shopping.dev.com/addingItem/22">
<input type="hidden" name="_token" value="kanCHxEv96MWih4TaXTKSjHYu8gDdWs1YLDCWiv0">
    <!-- options -->
    <div class="tt-swatches-container">
        <div class="tt-wrapper">
            <div class="tt-title-options">color:</div>
            <ul class="tt-list-inline tt-options-swatch options-large">
                <li class="tt-list-inline-item">
                    <label style="background-color: #e74c3c" class="options-color" for="28">
                        <input type="radio" name="color" value="red" id="28">
                    </label>
                </li>
                <li class="tt-list-inline-item">
                    <label style="background-color: #2980b9" class="options-color" for="29">
                        <input type="radio" name="color" value="blue" id="29">
                    </label>
                </li>
            </ul>
        </div>                                                                                          
        <div class="tt-swatches-container">
            <div class="tt-wrapper">
                <div class="tt-title-options">dropdown:</div>
                <div class="form-group">
                    <select name="dropdown" class="form-control">
                        <option>title 33</option>
                        <option>title 44</option>
                    </select>
                </div>
            </div>
        </div>
            <div class="tt-wrapper">
                <div class="tt-title-options">radio:</div>
                <ul class="tt-list-inline tt-options-swatch options-large">
                    <li class="tt-list-inline-item">
                        <label for="36">
                            <input type="checkbox" name="radio" value="hi" id="36">
                            hi
                        </label>
                    </li>
                        <li class="tt-list-inline-item">
                        <label for="37">
                            <input type="checkbox" name="radio" value="hii" id="37">
                            hii
                        </label>
                    </li>
                        <li class="tt-list-inline-item">
                        <label for="38">
                            <input type="checkbox" name="radio" value="bye" id="38">
                            bye
                        </label>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <!-- options -->

    <div class="tt-wrapper">
        <div class="tt-row-custom-01  tt-responsive-lg">
            <div class="col-item">
                <div class="tt-input-counter style-01">
                    <span class="minus-btn"></span>
                    <input type="text" name="quantity" value="1" size="5">
                    <span class="plus-btn"></span>
                </div>
            </div>
            <div class="col-item">
                <button type="submit" data-id="22" class="btn btn-lg"><i class="icon-f-39"></i>ADD TO CART</button>
            </div>
        </div>
    </div>
</form>

2 个答案:

答案 0 :(得分:0)

执行color时是否可以展开dd($options)对象?

基于该li的内容,它使用的是ff变量:

{{ $group }}
{{ $opt->id }} //a number
{{ $opt->title }} //a color title/name?
{{ $opt->color }} //a color title/name?

只是在这里尝试,但是$ opt中可能不存在titlecolor

答案 1 :(得分:0)

您提供的所有内容似乎都是正确的。不过可能会有一些问题在起作用。

首先,在这里查看原始的输出代码:https://codepen.io/cjke/pen/vbxRwb?editors=1000

填写所有字段,然后单击“提交”,您将看到Codepen将这些值正确吐出。因此,您最终呈现的表单正在执行应做的所有工作(这是您的确切代码,我所做的唯一更改是删除了操作)。

enter image description here

所以,我的第一个猜测是,您没有提交数据。即:当您以用户身份提交时,实际上并没有填写这些字段,这将使您没有设置radiocolor(相对于空白)。在这种情况下,您需要处理“默认”状态。

我的第二个猜测是,在表单提交之前您可能已经进行了一些验证,这可能使它搞砸了。但这几乎是不可能的。

我的第三个猜测(但不太可能)是您有一些特定于应用程序的中间件正在剥离提交数据。除非您团队中的其他人写过,否则不可能吗?

如果这三个都不是,则需要更新您的问题以包括控制器代码。