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