【问题标题】:Laravel 8 & laravel-livewire simple CRUD with array of value instead of single valueLaravel 8 和 laravel-livewire 简单的 CRUD,带有值数组而不是单个值
【发布时间】:2021-02-15 18:57:04
【问题描述】:

当我们制作简单的 CRUD 应用程序时。 在我们的火线控制器中编辑方法

public function rEdit()
    {
        $this->data = auth()->user()->product()->where('id',$this->pid)->first()

    }

表格字段是 'id,name,price,....'

然后在火线刀片中我们可以得到这个值

<x-jet-input id="name" type="text" class="mt-1 block w-full" wire:model.defer="data.name" />

这是一个非常简单的例子。

现在这不会命名值,直到我将名称值放入验证规则中

public function rules()
    {
        return [
            'sdata.name' => 'required',
        ];
    }

如果我在规则中添加名称,它将在刀片中显示值,如果我删除它,它将不会显示值。 我在表中有 100 个字段,有些是必需的,有些不是。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    在 Livewire 组件上定义 user 属性,然后将刀片组件中的字段连接到 user 的属性。然后,您可以在 user 对象上调用 save

    class UserComponent extends Component
    {
      public $user;
    
      public function mount()
      {
        $this->user = auth()->user();
      }
    
      public function save()
      {
        $this->user()->save();
      }
    }
    
    <x-jet-input id="name" type="text" class="mt-1 block w-full" wire:model.defer="user.name" />
    
    <x-jet-input id="email" type="email" class="mt-1 block w-full" wire:model.defer="user.email" />
    

    您需要为模型上要绑定到see the docs 的每个属性定义验证规则:

    注意:为此,您在$rules 中有一个验证条目 您要绑定到的任何模型属性的属性。否则,一个 会抛出错误。

    【讨论】:

    • 您好,感谢您的更新。我已尝试如下查询,但出现以下错误
    • 您好,感谢您的更新。我试过我的查询如下 $data = auth()->user()->product()->where('id',$this->editid);我收到以下错误,并且在刀片 htmlspecialchars() 期望参数 1 是字符串,给定对象
    • 如果我使用下面的查询 $data = auth()->user()->product()->where('id',$this->editid)->first();没有错误,但下面没有显示任何值
    • 我搞定了,我还需要在验证规则中定义它们
    • 但是如果变量不在公共函数 rules() { return [
    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2022-08-03
    • 2021-07-14
    • 2013-12-13
    • 2021-09-03
    • 2021-01-18
    • 2021-09-14
    相关资源
    最近更新 更多