Laravel刀片“旧输入或默认变量”?

时间:2015-11-11 14:36:17

标签: php laravel concatenation blade laravel-blade

我想在输入值中显示旧输入。如果没有旧输入,则显示其他变量:

value="{{ old('salary_' . $employee->id) or 'Default' }}"

但是当没有旧输入时,它会给我1而不是默认值!

我认为问题与串联有关,但我不知道如何修复它??

5 个答案:

答案 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)

答案 4 :(得分:-4)

尝试一下:

<textarea name="alamat" id="" class="form-control" placeholder="Alamat">{{ old('alamat').@$biodata->alamat }}</textarea>