debugging laravel livewire中复选框的错误

pnwntuvh  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(162)

我在livewire组件上的复选框出现了双重问题。
我试图在我的表单表中保存两个复选框。这些复选框在另一个名为“Garde_type”的表中获取它们的值。复选框“home”在我的表单表中保存ID 1,复选框“visit”保存ID 2。这里一切都很简单...但是
Laravel livewire问我属性规则来保存我的数据。好吧!但是当我把规则我的2复选框:在我的表单中,无法选中复选框。当我选中它们时,它们会立即选中/取消选中=第一个问题。第二个问题:无论勾选/取消勾选...每次我提交我的表格,这两个复选框被认为是“选中”,然后保存在我的数据库。
在这里你可以看看我的代码,我尝试了很多东西,但我没有任何想法了。

这是带电组件“控制器”:

class VilleSelect extends Component {     

public $visit;
public $home;
public $user_id;

protected function rules() {

 return [     
    
   'visit' => 'nullable',
   'home' => 'nullable',
];
    }

public function submit() {

   $annonces=annonces::create([
        'home' => $this->home->id,
        'visit' => $this->visit->id,
    ]);
    
    $annonces->save();
       
}

这是复选框:

<div class="mt-4 space-y-4">
     <div class="flex items-start">
          <div class="flex h-5 items-center">
            <x-jet-input wire:model="home" value="{{$home->id}}" type="checkbox"/>
          </div>
          <div class="ml-3 text-sm">
            <x-jet-label for="home" value="{{$home->garde_type}}"/>
          </div>
      </div>
      <div class="flex items-start">
          <div class="flex h-5 items-center">
            <x-jet-input wire:model='visit' value="{{$visit->id}}" type="checkbox"/>
          </div>
                
          <div class="ml-3 text-sm">
            <x-jet-label for="visit" value="{{$visit->garde_type}}"/>
          </div>
       </div>               
  </div>
z9smfwbn

z9smfwbn1#

当调用您的属性时,没有理由专门调用ID,因为您已经设置了家庭和访问ID。
尝试

$annonces=annonces::create([
    'home' => $this->home,
    'visit' => $this->visit,
]);
yftpprvb

yftpprvb2#

现在我的复选框不再有问题了,但它不会像我想的那样工作。

这是我的复选框:

<x-jet-input wire:model="home"  value="1" type="checkbox"/>
                                
   <x-jet-input wire:model="visit" value="2" type="checkbox"/>

这里是我的控制器:

public $visit;
public $home;


public function submit()
{
 

   $annonces=annonces::create([
        
        'home' => $this->home,
        'visit' => $this->visit,
      
    ]);
   
   
   
    $annonces->save();

   }

但是我不想在表单中传递值“1”和“2”。
"我尝试的是“

public function submit()
{
    $this->visit = Garde_type::find(2)->id;
    $this->home = Garde_type::find(1)->id;

   $annonces=annonces::create([
        
        'home' => $this->home,
        'visit' => $this->visit,
      
    ]);
   
   
    $annonces->save();

   }

并以下列形式:

<x-jet-input wire:model="home"  value="{{home->id}}" type="checkbox"/>
                                
   <x-jet-input wire:model="visit" value="{{visit->id}}" type="checkbox"/>

但我试过的都不管用。
你知道吗?

ej83mcc0

ej83mcc03#

我被你的代码搞糊涂了。如果你已经知道了Garde_type的ID,为什么还要再找一遍?
例如,将值设置为ID,然后搜索Garde_type以查找您已经拥有的ID是多余的。

// Set the value with the variable $home, $visit not just home and visit.
<x-jet-input wire:model="home"  value="{{ $home->id }}" type="checkbox"/>
<x-jet-input wire:model="visit" value="{{ $visit->id }}" type="checkbox"/>

既然已经有了Garde_type的ID,为什么还要在这里获取它呢?

// The ID will be 2 since you're searching for a record with the ID of 2
$this->visit = Garde_type::find(2)->id;
// The ID will be 1 since you're searching for a record with the ID of 1
$this->home = Garde_type::find(1)->id;

你到底想干什么?

相关问题