Laravelblade"old input or default variable"?

Laravel blade "old input or default variable"?

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

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

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

我认为问题与串联有关,但我不知道如何解决!?

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

如前所述,or 可以在 blade 中用作 shorthand 三元 if 语句。

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

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

如 Laravel 文档所述:"If you are displaying old input within a Blade template, it is more convenient to use the old helper:"。 因此,如果您需要 add/edit 数据表单(当您需要使用编辑表单在编辑模式下添加和编辑时,您需要使用从模型(数据库)加载的数据)来显示模型中的值(通过控制器),您可以使用以下内容:

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

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

感谢 WoodyDRN 的评论。

试试这个:

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

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

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

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

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

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

您可以使用:

old($key, $defaultValue)

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