PHP获取选择表单的选定值
我正在使用Laravel并且当前正在创建一个表单,用户可以先选择一个类别,然后选择一个相关的子类别。
类别具有id和名称,子类别具有id和名称,以及parent_id(因此它是父类别的id)。
现在我尝试以下操作:用户可以选择一个类别,在他这样做之后,出现第二个select
,用户可以从属于父类别的子类别中选择子类别(并且只选择那些!)。
因此,视图从控制器获取所有类别和所有子类别。
然后,对于类别我做了这个:
has('category') ? ' has-error' : '' }}"> @foreach($categories as $category) <option value="">{{$category->name}} @endforeach
对于子类别,我有相同的,只有子类别:
has('subCategory') ? ' has-error' : '' }}"> @foreach($subCategories as $subCategory) <option value="">{{$subCategory->name}} @endforeach
现在的问题是:我需要做的是(在@if
foreach中) @if
并检查所选category select
option
的值,然后检查if($subcategory->parent_id == $chosenOptionID)
,用伪代码说出来。 我怎样才能做到这一点? 在有人没有选择子类别之前,我不想发送表单或其他东西……当然,我可能会在选择类别时向控制器发送ajax请求,然后检查值控制器中的选项并发回id。 但这会导致非常多的流量,并且可能不是最好的解决方案,所以我只想这样做,如果我没有更好的方法做….
PS:问题不在于没有选择类别时隐藏子类别,那就是基本的js,我知道如何做到这一点。 我只想知道,如果可以在尚未发送表单的情况下读取category select
的值。
编辑 :我现在尝试了AJAX的事情,但似乎有一点错误…我改变了什么:
has('subCategory') ? ' has-error' : '' }}">
select现在为空并且有一个ID。 然后在同一个文件中我有以下JS:
$().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); } }); }); });
/getSubcategories
路由指向我的控制器中的以下函数:
public function returnSubCategories(Request $request){ $subCategories = Subcategory::where('parent_id', '=', $request->id); foreach($subCategories as $subCategory){ echo "id'>$subCategory->name"; } }
但是它不起作用。在选择一个选项时,会默认发送ajax请求,同时发送正确的id。 但不知何故没有输出……任何想法为什么?
我终于使用了AJAX。 这是我最初的subCategorySelect
。
select现在为空并且有一个ID。 然后在同一个文件中我有以下JS:
/getSubcategories
路由指向我的控制器中的以下函数:
public function returnSubCategories(Request $request){ $subCategories = Subcategory::where('parent_id', '=', $request->id)->get(); foreach($subCategories as $subCategory){ echo ""; } }
而且效果很好。
希望这可以帮助您了解它如何与PHP一起使用一个选定的选项: