我想在输入值中显示旧输入。如果没有旧输入,则显示其他变量:
value="{{ old('salary_' . $employee->id) or 'Default' }}"
但是当没有旧输入时,它会给我1而不是默认值!
我认为问题与串联有关,但我不知道如何修复它??
答案 0 :(得分:49)
or
是PHP中的比较运算符,因此您的代码正在评估true
或1.您想要的是三元if
语句。
如上所述,or
可以在刀片中用作三元if语句的简写。
但你可以(并且应该)只将默认值作为函数的第二个参数传递,如下所示:
value="{{ old('salary_' . $employee->id, 'Default') }}"
答案 1 :(得分:4)
您可以使用代码(对于PHP 7):
{{ old('field_name') ?? $model->field_name ?? 'default' }}
对于复选框选中的属性,请使用代码(如果默认值为false):
{{ (old() ? old('field_name', false) : $model->field_name ?? false) ? 'checked' : '' }}
构造{{ $something or 'default'}}
仅适用于变量
答案 2 :(得分:1)
如Laravel文档中所述:“如果您在Blade模板中显示旧输入,则使用旧助手更方便:”。 因此,如果您需要添加/编辑数据表单(当您需要使用编辑表单在编辑模式下添加和编辑时,您需要使用来自模型(数据库)的加载数据)来显示模型中的值(通过控制器)您可以使用以下:
name="some_value" value="{{ $some_value or old('some_value', $the_value) }}"
视图数组中的“some_value_from_model”变量名称。 在这种情况下,它应该首先$ some_value将用于设置“值”,如果不是,它将尝试使用旧的(来自名称“some_value”的请求中的值),如果不旧,那么''应该是使用
感谢WoodyDRN发表评论。
答案 3 :(得分:1)
您可以使用:
old($key, $defaultValue)
答案 4 :(得分:-4)
尝试一下:
<textarea name="alamat" id="" class="form-control" placeholder="Alamat">{{ old('alamat').@$biodata->alamat }}</textarea>