在Laravel中使用输入

时间:2013-07-30 22:15:44

标签: php laravel laravel-4 blade

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

@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数组中的数据?如果没有,那么什么是我的方法的一个很好的替代方案?

2 个答案:

答案 0 :(得分:0)

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

这应该有效:

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

答案 1 :(得分: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的生成方式。值得深思。