【问题标题】:bootstrap-select.js & Laravel Form Facade -- no select "value"bootstrap-select.js 和 Laravel Form Facade -- 没有选择“值”
【发布时间】:2017-02-04 17:57:07
【问题描述】:

当结合 Laravel Form 门面使用 bootstrap-select.js 时,不会传输任何值。 dd() 说空

{!! Form::select('user', $users, null, array('class' => 'selectpicker show-tick', 'data-live-search' => 'true', 'id' => 'user_select')) !!}

但是,当使用没有 bootstrap-select 的表单外观时:

{!! Form::select('user', $users, null) !!}

它有效。

dd() 说 1

【问题讨论】:

  • 你有什么dd()
  • dd($request->user);
  • 检查您的表单回发,我假设 id => 值设置了选定的用户?也许那里出了点问题。
  • $users = User::all()->pluck('realname', 'id'); return view('shop.devices.add')->with('users', $users); 我就是这样做的。似乎是正确的,因为在生成的 HTML 中它显示为 <option value="$id">$realname</option>
  • @Scarwolf 请使用浏览器检查页面以查看 html 是如何形成的。另外,试试dd($request-all())

标签: laravel bootstrap-select


【解决方案1】:

您的案例的最简单复制:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/css/bootstrap-select.min.css"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/js/bootstrap-select.min.js"></script>

{!! Form::open() !!}
    <select class="selectpicker show-tick" data-live-search="true" name="user">
        <option value="1">Marvin Test</option>
        <option value="2">Lorem Ipsum</option>
        <option value="3">Amy Johnson</option>
        <option value="4">sdsd</option>
        <option value="5">lol lol</option>
        <option value="6">test test</option>
    </select>
    {!! Form::submit() !!}
{!! Form::close() !!}

dd($request-&gt;all() 给出:

array:2 [▼
  "_token" => "GPsRkSn3GVK3zWZmJ2Rf7rQlZ75WVZ2c1JxHZgjy"
  "user" => "6"
]

自动添加令牌隐藏字段。这就是为什么我在评论中问你是否介于Form::openForm::close 之间

【讨论】:

  • 我删除了Form::token()。但是,用户没有转移。这可能是因为 Form::select() 与 bootstrap-select 结合使用吗?我怎样才能更好地处理大量用户?
  • 好的,我尝试以最简单的方式编写选择:pastebin.com/RRXUdNnh 即使在那里,也没有发送任何数据... ._.
  • @Scarwolf 您首先粘贴的 HTML 是从页面源中获取的,还是实际使用浏览器检查了 dom 的当前状态?
【解决方案2】:

当使用引导选择时,您应该获取如下输入:

Input::get('id_of_your_input');

当不使用引导选择时,你应该这样做:

Input::get('name_of_your_input');

Coz bootstrap select 创建另一个输入以使用新名称发送(从原始输入的 Id 中提取) :)

更新 您可以使用dd(Input::all()) 查看发送到控制器的所有输入及其名称。

【讨论】:

  • 哦!我正在使用Request $request 所以$request-&gt;user 获取。如果没有Input::,是否可以获取这样的名称?
  • 好吧dd(Input::get('user_select')); 仍然说null。这就是我目前的选择:{!! Form::select('user', $users, null, array('class' =&gt; ' show-tick', 'data-live-search' =&gt; 'true', 'id' =&gt; 'user_select')) !!}
  • 试试dd(Input::all()),这样您就可以看到发送到控制器的所有输入及其名称。 :)
  • 这是输出:pastebin.com/L21JLegb 我想,选择没有发送
猜你喜欢
  • 1970-01-01
  • 2018-04-29
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 2019-10-28
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多