PHP获取选择表单

时间:2016-11-09 10:16:44

标签: javascript php jquery html laravel

我正在使用Laravel并且正在创建一个表单,用户可以先选择一个类别,然后选择一个相关的子类别。

类别具有id和名称,子类别具有id和名称,以及parent_id(以便“父类别的id”)。

现在我尝试以下方法: 用户可以选择一个类别,在他这样做之后,第二个select出现,用户可以从属于父类别的子类别中选择子类别(只有那些!)。

因此,视图会从控制器中获取所有类别和所有子类别。

然后,对于我这样做的类别:

<div class="form-group{{ $errors->has('category') ? ' has-error' : '' }}">
                                <label for="category" class="col-md-4 control-label">Kategorie</label>

                                <div class="col-md-6">
                                    <select>
                                        @foreach($categories as $category)
                                            <option value="<?php echo $category['id'];?>">{{$category->name}}</option>
                                        @endforeach
                                    </select>
                                </div>
                            </div>

对于子类别,我有相同的,只有子类别:

<div class="form-group{{ $errors->has('subCategory') ? ' has-error' : '' }}">
                                <label for="subCategory" class="col-md-4 control-label">Unterkategorie</label>

                                <div class="col-md-6">
                                    <select>
                                        @foreach($subCategories as $subCategory)
                                            <option value="<?php echo $subCategory['id'];?>">{{$subCategory->name}}</option>
                                        @endforeach
                                    </select>
                                </div>
                            </div>

现在问题是:我需要做的是(在子类别foreach中)@if并检查所选option category select的值,然后检查{ {1}},用伪代码说出来。我怎样才能做到这一点?在某人没有选择子类别之前,我不想发送表单或其他内容......当然,我可能会在选择类别时向控制器发送ajax请求,然后检查控制器中选项的值并发回id。但这会导致非常多的流量,并且可能不是最好的解决方案,所以我只想这样做,如果我没有更好的方法去做....

PS:问题不在于没有选择类别时隐藏子类别,那就是基本的js,我知道如何做到这一点。我只想知道,如果在尚未发送表单的情况下可以读取if($subcategory->parent_id == $chosenOptionID)的值。

编辑:我现在尝试了AJAX,但似乎有一点错误...... 我改变了什么:

category select

现在选择为空并且有一个ID。然后在同一个文件中我有以下JS:

<div class="form-group{{ $errors->has('subCategory') ? ' has-error' : '' }}">
                                <label for="subCategory" class="col-md-4 control-label">Unterkategorie</label>

                                <div class="col-md-6">
                                    <select class="form-control" id="subCategorySelect">

                                    </select>
                                </div>
                            </div>

<script> $().ready(function(){ $('#categorySelect').change(function(){ var selectedOption = $('#categorySelect').find(":selected").val(); $.ajax({ url: '/getSubCategories', data: {'id': selectedOption}, type: 'GET', success: function (data) { $('#subCategorySelect').html(data); } }); }); }); </script> 路由指向我控制器中的以下函数:

/getSubcategories

但它不起作用。在选择一个选项时,会默认发送ajax请求,并发送正确的ID。但不知怎的,没有输出任何想法为什么?

2 个答案:

答案 0 :(得分:1)

我终于使用了AJAX。这是我最初的subCategorySelect

<div class="form-group{{ $errors->has('subCategory') ? ' has-error' : '' }}">
                                <label for="subCategory" class="col-md-4 control-label">Unterkategorie</label>

                                <div class="col-md-6">
                                    <select class="form-control" id="subCategorySelect">

                                    </select>
                                </div>
                            </div>

现在选择为空并且有一个ID。然后在同一个文件中我有以下JS:

<script>
    $().ready(function(){
        $('#categorySelect').change(function(){
            var selectedOption = $('#categorySelect').find(":selected").val();
            $.ajax({
                url: '/getSubCategories',
                data: {'id': selectedOption},
                type: 'GET',
                success: function (data) {
                    $('#subCategorySelect').html(data);
                }
            });
        });
    });
</script>

/getSubcategories路由指向我控制器中的以下函数:

public function returnSubCategories(Request $request){
        $subCategories = Subcategory::where('parent_id', '=', $request->id)->get();
        foreach($subCategories as $subCategory){
            echo "<option value='$subCategory->id'>$subCategory->name</option>";
        }
    }

它完美无缺。

答案 1 :(得分:0)

希望这可以帮助您了解如何使用php来选择一个选项:

@foreach($notes->sortBy('values') as $notification)       

    <tbody>
        <tr> 
            <td> {{ $notification->website_url }} </td>
            @if($notification->status('health') == 'up')
            <td> {{ $notification->status('health') }} <span class="up"></span></td>
            @else
            <td> {{ $notification->status('health') }}  <span class="down"></span></td>
            @endif 
            <td>  </td>
            <td class="<?php echo $notification->active == 1 ? 'active' : '' ?>">                         
                {{ $notification->active == 1 ? 'Yes' : 'No' }}
            </td>
            <td>
                <a href="{{ route('notifications.edit', [$notification->id]) }}">
                    <input type="submit" name="showmore" value="show more"/>
                </a>
            </td>
            <td></td>
        </tr> 
    </tbody>

@endforeach