46

I want to show the old input in input value. If there isn't old input, than show other variable:

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

But when there is no old input, it gives me 1 instead of the default value!

I think the problem has something to do with the concatenation, but I don't know how to fix it!?

4

5 回答 5

78

or是 PHP 中的比较运算符,因此您的代码计算结果为true, 或 1。您想要的是三元if语句。

如前所述,or可以在刀片中用作三元 if 语句的简写。

但是您可以(并且应该)将默认值作为第二个参数传递给函数,如下所示:

value="{{ old('salary_' . $employee->id, 'Default') }}"
于 2015-11-11T14:48:51.577 回答
9

您可以使用代码(对于 PHP 7):

{{ old('field_name') ?? $model->field_name ?? 'default' }}

对于复选框选中的属性,使用代码(如果默认值为 false):

{{ (old() ? old('field_name', false) : $model->field_name ?? false) ? 'checked' : '' }}

构造{{ $something or 'default'}}仅适用于变量

于 2020-05-27T12:57:42.320 回答
3

如 Laravel 文档中所述:“如果您在 Blade 模板中显示旧输入,则使用旧助手更方便:”。因此,如果您需要添加/编辑数据表单(当您需要使用编辑表单在编辑模式下添加和编辑时,您需要使用模型(数据库)中加载的数据)来显示模型中的值(通过控制器),您可以使用以下:

name="some_value" value="{{ $some_value or old('some_value', $the_value) }}"

视图数组中的“some_value_from_model”变量名称在哪里。在这种情况下,首先应该使用 $some_value 来设置“值”,如果没有,它将尝试使用旧的(来自名称“some_value”的请求的值),如果不是旧的,那么 '' 应该是用过的。

感谢 WoodyDRN 的评论。

于 2016-10-28T10:41:01.170 回答
2

您可以使用:

old($key, $defaultValue)

查看更多: https ://github.com/laravel/framework/blob/87df108bb487714d205002aba7e7317533976a8d/src/Illuminate/Foundation/helpers.php#L541-L553

于 2021-05-03T08:44:25.070 回答
-6

尝试这个:

<textarea name="alamat" id="" class="form-control" placeholder="Alamat">{{ old('alamat').@$biodata->alamat }}</textarea>
于 2018-06-21T01:17:27.023 回答