2013-07-30 28 views
0

我试图根据表单字段是否包含提交时的值来确定某个页面上包含的样式。在我的刀片模板中,我得到了以下代码:在Laravel中使用输入

@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数组中的数据?如果不是,我的方法会是一个好的替代方案吗?

+1

'Input'类与form_中提交的_user输入有关。所以,它不会像你期望的那样工作。 –

+0

我修改了我的问题。提交表单后,页面将重新加载并在'Input :: old()'中包含用户提交的数据 – vikingsfan19

回答

0

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

这应该工作:

@if (Input::old('field')) 
    <li class="option active"> 
@else 
    <li class="option"> 
@endif 
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生成方式。食物的思想。