我正在用对象$form
装载组件,我需要在两次请求之间访问该对象。
$form
中的数据不是秘密,但不应篡改,因此我想将其设置为protected
属性。尽管两次请求之间仅保留public
属性,但将其暴露给前端。
如果可能的话,如何防止对该公共财产进行操纵?
我尝试过支票
public function updating($key, $value)
{
if($key === 'form') return;
}
但我认为这真的没有任何作用。
在我的情况下,使用会话也不是替代选择。
有什么想法吗?
答案 0 :(得分:2)
我认为您有以下选择:
不要将数据存储为公共属性,而是将其传递给
render()
方法中的视图。
public function render(){
return view('Livewire.nameofyourview ', [
'form' => YourDataSource::get()
]);
}
这将重新获取与您的组件的每次交互的数据。您可以像以前一样在模板中使用 $form
访问它。
确保删除 $form
作为公共属性。使用此解决方案无法操作来自客户端/用户站点的 $form 数据。 Docs
使用验证规则,如果您需要您的用户/客户端操作 数据,但仅限于您期望的方式。
protected $rules = [
'form.name' => 'required|min:6',
'form.email' => 'required|email',
];
使用 Laravel 缓存 在请求之间保留数据。这种技术
如果您无法从源重新获取数据,则很有用,例如何时
它作为参数 (<livewire:form-component :form="$form">
) 传递给您的 Livewire 组件。
/* Cache the data on component mount */
public function mount($form)
{
Cache::set($this->id."_form", $form, 60*10);
}
public function someFunction()
{
/* read the data form cache, if you need it again */
cache($this->id."_form");
}