【问题标题】:Retrieving values of Form::select检索 Form::select 的值
【发布时间】:2015-05-23 10:35:44
【问题描述】:

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

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

我将 $languageArray 与 view 一起传递,并且只是一个值数组,例如 ['A','B','C']...

现在在获取选定值时,我正在获取选定选项的数值。有没有办法将值从数字索引更改为 Text write in option。我使用关联数组作为第二个参数,如下所示:

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

但是它创建了一个很长的列表,并且视图似乎被数据超载了有没有更好的方法来实现以下输出???

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

【问题讨论】:

  • $languageArray 来自哪里?请出示您的控制器代码
  • 你能告诉我们$languageArray的输出吗

标签: forms laravel laravel-5


【解决方案1】:

我建议你使用配置值,

在配置文件夹中创建一个类似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',]) !!}

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

最后一个选项是创建您自己的表单宏,例如,

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);
});

在这个宏中,您的 options 数组使用 Laravel 字符串函数进行 slugify 并用作 key ,我将 value 保留为您的。你可以按照自己的方式去做。

【讨论】:

  • 你能详细说明一下宏吗?谢谢
  • @AliMalik HTML 和 Form 宏只是一个 HTML 代码生成器。请查看laravel.com/docs/4.2/html 的官方文档。此外,我正在使用 Bootstrap 表单模板,因此,我可以轻松地从宏中更改所有内容。请检查此gist.github.com/mtigdemir/aa02f065c075cecb0d7a 示例
  • 真的很有帮助,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多