Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不带optgroup的Laravel下拉列表_Php_Html_Laravel_Laravel 4 - Fatal编程技术网

Php 不带optgroup的Laravel下拉列表

Php 不带optgroup的Laravel下拉列表,php,html,laravel,laravel-4,Php,Html,Laravel,Laravel 4,我决定试用Laravel,并想为我的表单创建下拉列表。我在BaseController中创建了一个便利方法,用于从数据库获取数据。下面是函数列表: protected function getList( $model, array $fields, $empty = 'Select option below' ) { $options = array(); $owner = strtolower( $model ) . 's'; $records = $model:

我决定试用Laravel,并想为我的表单创建下拉列表。我在BaseController中创建了一个便利方法,用于从数据库获取数据。下面是函数列表:

protected function getList( $model, array $fields, $empty = 'Select option  below' )
{
    $options = array();

    $owner = strtolower( $model ) . 's';

    $records = $model::lists($fields[1], $fields[0]);

    if( !empty( $records ) ){

        foreach( $records as $key => $value ){

            $options[$owner][$value] = $key;
        }
    }


    $options[$owner][''] = $empty;

    return $options;
}
然后在控制器中,您可以像这样使用它:

//Get groups
$groups = $this->getList( 'Group', array(
    'name', 'id'
  ));

//Get Project Managers  
$project_managers = $this->getList( 'ProjectManager', array(
  'name', 'id'
 ));
select表单控件的输出有一个optgroup,它引用列表或模型的所有者。如何删除optgroup,使其不属于下拉列表的内容

以下是表格的输出:

<div class="input select">
  <label for="project_manager">Project Manager</label>
  <select name="project_manager_id">
    <optgroup label="projectmanagers">
      <option value="1">Riyaadh</option>
      <option value="2">Luyanda</option>
      <option selected="selected" value="">Select option below</option>
    </optgroup>
  </select>
</div>

项目经理
里亚达
鲁延达
选择下面的选项
您可以通过添加ID以选择来删除

 $(function () {
     $("#mySelect").children().remove("optgroup");
 });
试试这个

 $SchoolDetails = GeneralSettingModel::lists('SchoolName', 'id');

or

$SchoolDetails = DB::table('tablename')->lists('SchoolName', 'id');


    {{ Form::select('SchoolName',array(''=>'Select School')+$SchoolDetails,null, array('id'=> 'SchoolName'))}}
输出:

    <select id="SchoolName" name="SchoolName">
<option value="" selected="selected">Select School</option>
<option value="1">test</option>
<option value="2">test355wrew</option>
<option value="3">GOVT</option>
<option value="4">Kumaraguru</option>
<option value="5">valavan</option>
</select>

选择学校
测试
鹪鹩
政府
库马拉古鲁
瓦拉文

您正在使用此行在
getlist
方法中添加另一个级别<代码>$options[$owner][$value]=$key,这是添加您的optgroup的内容,要摆脱此问题,请将行更改为
$options[$value]=$key

或者,您可以将
getlist
函数的代码减少为以下代码:

protected function getList( $model, array $fields, $empty = 'Select option  below' )
{
    $options = array();

    $owner = strtolower( $model ) . 's';

    $records = $model::lists($fields[1], $fields[0]);

    if( !empty( $records ) ){

        $options = array_flip($records);
    }


    $options[''] = $empty;

    return $options;
}

这使用了数组翻转方法,它将键交换为值,将值交换为键。

正如Matt Burrow所建议的那样,结果证明我正在创建一个多维数组,该数组被转换为带有optgroup的列表

我修改了我的函数以排除记录所属的所有者。以下是我完美的工作功能(摘录):


在select下拉列表中获取OPTGROUP的原因是您正在getLists方法中添加它们,在第行,
$options[$owner][$value]=$key表单::select()
的数据中存在多维数组(关联键是组的标签)时,选择会为每个添加optgroup,删除这些,将不会有任何optgroup。简而言之,只需返回您的
$records
变量,所有optgroup都将消失。嗨,马特!在我的可重用BaseController函数上只返回$records变量,只会用记录ID填充下拉列表。那么,另一种解决方法是更改
$options[$owner][$value]=$key
$options[$value]=$key,如前所述,您正在向数组中添加另一个级别,从而添加optgroup。谢谢Matt。这解决了我的问题。我知道应该有办法做到这一点。我们的想法是不要用两行代码把我的控制器弄得乱七八糟,以获得模型列表,因此我们希望创建一些可重用的东西。你救了我一天…-)添加为答案@LuyandaSikoHi Kamlesh!你的攻击只留下空字符串“Select-blah-blah-blah”…我的下拉列表现在已经检查过了,可以正常工作了。我只是想知道它是否把我这边的东西都拿走了。我将尝试复制这一点,看看我是否做错了什么,但我遇到的问题已经解决了。后端代码行为的解决方案从来都不是前端代码。需要澄清的是。。。GeneralSettingModel是Laravel提供的对象吗?不是。我们需要创建自定义模型
 ...
 if( !empty( $records ) ){

    foreach( $records as $key => $value ){

       $options[$value] = $key;
    }
 }

 $options[''] = $empty;
 ...