php - 仅当字符串不为空/空时如何解密字符串
问题描述
我有一个用户可以随时返回并完成的表单。我有一个选择框,特别是需要加密的数据。
我遇到的问题是,由于此字段是可选的,因此有时该字段可能为空/空,因此我的页面失败并显示错误“有效负载无效”。我假设这是因为它试图解密一个为空的字段,因此它不能。
这是下面刀片的一部分:
<label for="religion">Religion</label>
<select class="form-control" name="religion" id="religion">
<option value="" selected>Choose...</option>
<option value="Religion 1" @if(old('religion', decrypt($user->diversity->religion) === "Religion 1")) selected @endif>Religion 1</option>
<option value="Religion 2" @if(old('religion', decrypt($user->diversity->religion) === "Religion 2")) selected @endif>Religion 2</option>
</select>
因为old()
如果验证失败,我也使用该函数来返回字段的值,所以我无法执行 if 语句empty()
来检查是否$user->diversity->religion
不为空。
有没有办法做到这一点而不会使我的刀片过于臃肿。如果有一种方法只在字符串不为空/空时解密字符串,那将是理想的。
解决方案
只需在将其传递给解密之前检查该值是否为空:
<option value="Religion 1" @if(old('religion', empty($user->diversity->religion) ? '' : decrypt($user->diversity->religion) === "Religion 1")) selected @endif>Religion 1</option>
或者如果你想要更方便一点,你可以在用户模型中添加一个访问器方法:
public function getDecryptedReligionAttribute()
{
return empty($this->diversity->religion) ? '' : decrypt($this->diversity->religion);
}
这将允许您简单地传递$user->decrypted_religion
给old
函数:
<option value="Religion 1" @if(old('religion', $user->decrypted_religion) === "Religion 1") selected @endif>Religion 1</option>
推荐阅读
- c# - c#表单启动时放大图表
- python - 首次单线程运行相同的代码时,多处理不起作用
- android - kotlin 上 ProgressBar 后如何执行代码?
- flask - Flask - 无法从 API 调用返回响应
- c# - C#:将私钥从 XML 转换为 PEM 并将结果保存在文件中
- mysql - 全文搜索与索引检查完全相同的文本
- node.js - 如何创建文件并将其附加到电子邮件中?
- javascript - 将 HTML 脚本函数转换为 React JS
- javascript - 使用带有 react-fire 包的 firebase 模拟器
- python - Python Tkinter,无法将图像打开到画布