【问题标题】:How to get value from select option without selected the option in Laravel如何从选择选项中获取价值而不选择 Laravel 中的选项
【发布时间】:2017-11-10 09:56:53
【问题描述】:

我在将数据存储到我的数据库时遇到问题,因为我只知道如果选择了选项,选项值将存储到数据库中,但是如果我想存储所有未选择的选项怎么办?

这是我的html代码

<select multiple id="AllowedCategories" name="allowedPostCategories[]" style="width: 500px; height: 200px; float: left"> </select>

我有一个按钮,如果我单击该按钮,它将显示一个模式。如果我在模态中选择数据,它会显示选项,所以我的 html 代码会改变

<select multiple id="AllowedCategories" name="allowedPostCategories[]" style="width: 500px; height: 200px; float: left"> 
   <option value="1">Hello</option> 
   <option value="2">World</option> 
</select>

所以,问题是存储选项值,我已经尝试过

return $request->allowedPostCategories;

在我的代码中。但是,它返回null

现在,我不知道如何存储数据。我尝试过使用

return Input::get('allowedPostCategories');

但是,我还是得到了null

【问题讨论】:

  • 你的问题不清楚。您要存储未选择的选项吗?
  • 好的。您可以使用 jQuery 或其他方法捕获未选择的选项,并在提交表单之前将该数据注入目标表单。
  • 谢谢@ako 现在可以使用了

标签: php laravel


【解决方案1】:

如果您允许类别作为数组,

然后使用array_diff获取未选中的值。

为了。例如。
$all_categories = $AllowedCategories;
$selected_category = (Input::has('allowedPostCategories')) ?输入::get('allowedPostCategories') : [];
$unselected_Array = array_diff($all_categories,$selected_category);

希望这对您有所帮助。

【讨论】:

  • 你可以用作 Input::has() 查看我更新的答案,
  • $request = Request::all(); $AllowedCategories = ['1'=>'Hello', '2' => 'World']; $all_categories = $AllowedCategories;
    $selected_category = !empty(@$request['allowedPostCategories']) ? $request['allowedPostCategories'] : [];
    $unselected_Array = array_diff_key($all_categories,array_combine($selected_category, $selected_category));
    print_r($unselected_Array);

    你能检查一下吗
【解决方案2】:

答案是:

在提交表单时设置select option属性为true,因为只有选择了option才可以将option值存入数据库

【讨论】:

    【解决方案3】:

    按照这个:-

    enter code here
    <select multiple id="AllowedCategories" name="allowedPostCategories[]" 
    style="width: 500px; height: 200px; float: left"> 
       <option value="1">Hello</option> 
       <option value="2">World</option> 
    </select>
    

    我认为你也可以不用 jquery。 首先,您知道 allowedPostCategories 的所有选项值。现在,当您在特定控制器功能中发布数据时。 你可以像这个控制器功能一样做

    public function  function_name(Request $request){
    if($request->isMethod('post')){
        $data = $request->all();
        $allowedcategories = $data['allowedPostCategories'];
        $allcategories = array('1,','2'); // or you can fetch from Database
        $unallowedcategories= array();
        foreach($allcategories as $category){
            if(in_array($category,$allowedcategories)){
                // don't save 
            }else{
                $unallowedcategories[] = $category; //now unallowedcategories you can save in your db
            }
        }
    }   
    }
    

    希望对你有帮助!

    【讨论】:

    • 这根本不是静态的......您可以从数据库中获取所有类别
    • 我可以获取仅在我的选择选项中显示的数据吗?或者它会全部获取?
    • 首先看看你知道存储在数据库中的所有类别,并且你想在数据库中保存未选择的类别,所以我使用如果选择的类别是 in_array 那么它不会保存,否则它将保存
    猜你喜欢
    • 2018-02-03
    • 2018-03-08
    • 2020-03-12
    • 2018-04-05
    • 2022-07-16
    • 1970-01-01
    • 2017-01-23
    • 2015-05-09
    • 2019-10-15
    相关资源
    最近更新 更多