0

我正在尝试根据表单字段在提交时是否包含值来设置页面上某些包含的样式。在我的刀片模板中,我有以下代码:

@if (Input::has('field'))
    <li class="option active">
@else
    <li class="option">
@endif

但是,Input::has()似乎总是返回 false。我知道数据在那里,因为我可以像这样填充表单字段本身:

{{Form::text('field', Input::old('field'))}}

但是,相同的Input::has('field')调用将在我的控制器上的 post 方法中返回 true。这是否意味着该has方法不查看old数组中的数据?如果不是,我的方法有什么好的替代方法?

4

2 回答 2

0

只需使用 Input::old() - 其中包含数据。Input::has() 用于使用您发布数据的控制器。

这应该有效:

@if (Input::old('field'))
    <li class="option active">
@else
    <li class="option">
@endif
于 2013-07-31T06:47:57.893 回答
0

Input::has()不考虑会话绑定数据(又名旧输入),因此以这种方式检查值没有用。

单独使用 CSS 怎么样?您可以在 CSS 中定位元素属性——在本例中为value属性。

/* Target all inputs. */
input { color: #444; }

/* Target all inputs that have a "value" attribute defined (even if empty) */
input[value] { color: #bada55; }

请注意,这仅在value属性不完全时才有效。如果它已定义但为空,则新颜色仍将优先。因此,此解决方案可能有效,也可能无效,完全取决于您的 HTML 是如何生成的。深思熟虑。

于 2013-07-31T21:46:06.133 回答