检索Form :: select

时间:2015-05-23 10:35:44

标签: forms laravel laravel-5

我有一个带有数据数组的选择框,可以像这样填充它:

{!! Form::select('language',$languageArray,'null', ['id'=>'language','multiple',]) !!}

我在视图中传递$ languageArray,它只是一个像['A','B','C']这样的值数组......

现在,在获取所选值时,我将获得所选选项的数值。有没有办法将值从数字索引更改为选项中写入的文本。我使用关联数组作为第二个参数,如下所示:

['english' => 'English',
 'french' => 'French',
 'so on ...' => 'So On ..']

但是它创建了一个很长的列表并且视图似乎被数据重载是否有更好的方法来实现低于输出???

<select name="language">
<option value="english" ">English</option>
<option value="french">French</option>
....

1 个答案:

答案 0 :(得分:1)

我建议你使用Config值,

在config文件夹中创建类似languages.php的文件。

<?php 
   return ['english' => 'English',
           'french' => 'French',
           'so on ...' => 'So On ..'
           'german'   => Lang::get('languages.german')
          ];

查看:

{!! Form::select('language',Config::get('languages'),'null', ['id'=>'language','multiple',]) !!}

正如您所看到的,通过这种方式,您也可以在另一个视图中使用配置值并支持多语言(也很重要......看看'德语')

Last Option正在创建您自己的Form宏,例如

Form::macro('slugiySelect', function($name , $list , $selected = null , $options = [])
{
    $options = [];
    foreach($list as $row)
        $options[Str::slug($row)]  = $row;

    return Form::select($name , $options , $selected , $options);
});

在这个宏中你的选项数组是用Laravel字符串函数进行slugify并用作键,我保持你的价值。你可以按照自己的方式去做。