我尝试输入一个模型,其属性是以一定单位存储在数据库中的浮点数,例如体积:升。我希望用户能够查看并输入他们选择的单位值,例如美国加仑,而不是升,允许用户随时选择其他单位,例如美国加仑
我打算做的是根据用户选择的单位创建变异器和访问器,在保存之前将自定义单位转换为升,在获取时将升转换为自定义单位。这是我的模型摘录
class Equipment extends Model
{
use HasFactory;
protected $table = "equipments";
protected $fillable = [
'name',
...
'boiler_volume',
'boiler_dead_volume',
...
];
protected $appends = ['boiler_volume','boiler_dead_volume'];
//get the user's unit transformation factor (it works and return a float number)
private function getKVolume()
{
$units = Unitset::where('user_id', auth()->user()->id)->first();
return explode(',', $units->volume)[2];
}
//BOILER-----------------
public function setBoilerVolumeAttribute($value)
{
if (is_numeric($value) and $value !== null and $value != 0) {
$this->attributes['boiler_volume'] = $value * $this->getKVolume();
}
}
public function getBoilerVolumeAttribute($value)
{
if (is_numeric($value)) {
return $value / $this->getKVolume();
}
}
//------------------
public function setBoilerDeadVolumeAttribute($value)
{
if (is_numeric($value) and $value !== null and $value != 0) {
$this->attributes['boiler_dead_volume'] = $value * $this->getKVolume();
}
}
public function getBoilerDeadVolumeAttribute($value)
{
if (is_numeric($value)) {
return $value / $this->getKVolume();
}
}
现在是livewire组件中的规则
protected $rules =[
...
'equipment.boiler_volume'=>'required|numeric',
'equipment.boiler_dead_volume'=>'required|numeric',
...
];
最后是叶片视图中的相关部分
<x-input.group label="{{ __('Boiler Tun Volume ') }} ({{ explode(',', $unitset->volume)[0] }})" for='
boiler_volume' :error="$errors->first('equipment.boiler_volume')"
class="flex flex-col w-full p-2 border border-jbrown-peachpuf bg-jbrown-darker rounded-md ">
<x-input.text wire:model.lazy="equipment.boiler_volume" type="number" step="0.001"
class="border border-red-200 bg-red-100" name="boiler_volume" id="boiler_volume" value="" />
</x-input.group>
<x-input.group label="{{ __('Boiler Tun Dead Volume ') }} ({{ explode(',', $unitset->volume)[0] }})" for='
boiler_dead_volume' :error="$errors->first('equipment.boilen_dead_volume')"
class="flex flex-col w-full p-2 border border-jbrown-peachpuf bg-jbrown-darker rounded-md ">
<x-input.text wire:model="equipment.boiler_dead_volume" type="text" class="border border-red-200 bg-red-100"
name="boiler_dead_volume" id="boiler_dead_volume" value="" />
</x-input.group>
正如您所看到的,第一个输入使用数字类型,而第二个输入使用文本类型。这仅用于解释,因为故障与数字输入类型或文本输入类型相同。但现在让我说问题是什么。
有什么问题吗?问题是,第二个现场设备。锅炉死区体积一旦输入一个值,就不能删除它(例如,为了校正)。您可以删除输入的所有数字,但第一个数字除外。但是,如果使用左箭头键将光标放在字段的开头,则可以输入新值,然后删除最后一个字符,但决不能让字段为空。这对用户来说相当烦人。
我必须补充一点,如果不使用变异器和访问器,这种行为就不存在。此外,锅炉体积的第一个字段即使使用存取器和变异器也能正常工作。最后和最后,所有其他字段的行为相同,即错误。
注意这一行
protected $appends=...
不会改变任何事情。
其他奇怪的行为查看突变器和访问器,您可以看到一些检查值是否为数字而不是null。这是因为如果没有这个检查,每次一个字段被清空,应用程序都会抱怨这个值不是数字。
我会很高兴得到一些帮助解决这个问题!
看来电线:model.lazy是强制性的。在第一组中,我在另一个时间使用了它,却没有意识到。所以,在这种情况下,懒惰是强制性的。
问题内容: 我已经使用timer_create()API实现了POSIX计时器,当计时器到期时,我将为其放置处理程序代码,这将生成SIGUSR1。现在的问题是,如果此程序收到另一个SIGUSR1,则将调用并捕获相同的信号处理程序。 有什么方法可以防止这种情况,以便处理程序可以捕获仅由计时器生成的信号? 问题答案: 这对您有用吗?(修改了手册页中示例中的代码。) 当捕捉到来自定时器的信号时,将显示。
我正在Java项目中使用Spring Security4。当我在http元素中指定标记access-decision-manager-ref时,我有以下异常: org.springframework.beans.factory.beanCreationException:创建名为“org.springframework.security.filterchains”的bean时出错:使用键[0]设置
到目前为止我已经重写了这篇文章:
更新2 我发现了相关的问题:如何在spring-boot中禁用spring-data-mongodb自动配置
我在创建一个基本的discord机器人(用于播放音乐)时遇到了一些错误。我主要依赖于文档——我想我复制并粘贴了discord中的某些代码行。“断章取义”的js文档示例。但我不知道它们可能是什么,因为我对编程还是很陌生。 我安装并导入了所有必要的依赖项,所以这不是问题所在。我的机器人工作正常(收听和回复MSG)。 这是与音乐功能相关的代码 这是我得到的错误: 难道是: 机器人需要先进入通道?(这意味
我可以通过本地J控制台访问Mbean,但无法从远程主机访问MBEANS。 我的配置: 远程进程:服务:jmx:远程处理-jmx://10.32.222.111:4447 我将用户添加到管理和应用领域 测试=2b1be81e1da41d4ea647bd82fc8c2bc9 但当我尝试连接它说:连接失败:重试 当我使用远程进程为:10.32.222.111:4447在服务器上提示警告: 16: 29:
如果我没有使用spring构建图形,那么是否可以使用spring框架完全访问我的neo4j图形?我正在尝试一些示例,但它似乎无法正常工作,因为spring创建的某些元数据不存在。 编辑:例如,我有这个错误当我试图通过它的id访问一个节点时,即
在脚本的开头,可以使用 Selenium 变量来存储常数。另外,在数据驱动测试中(将在后面一节中讨论),Selenium 变量可用于存储从命令行,从另一个程序,或从一个文件中传递的数据。 store 命令是所有存储命令中最基础的命令,它仅仅能把一个常量存储在一个 Selenium 变量中。它包括两个参数,存储的文本值和 Selenium 变量。使用标准的变量命名约定来为变量起名,即变量名中只能包含