2016-03-31 16 views
2

Servislere kasaya bağlayabildiğim yeni bir Case of Laravel 5 için bir oluşturma sayfam var. Hizmetler, createCaseForm'umdaki onay kutularıdır. Hizmetler DB'de saklanır, böylece birçok servislere sahip birçok Case'in olması için ManyToMany tablosuna yazarım.Laravel | Onay kutusu durumu düzenleme sayfasında

Örnek: Case1 oluşturduğumda, service1 ve service3 kutularını kontrol ediyorum. Şimdi birçokToMany tablosu doğru şekilde dolduruldu. Şimdi durum için düzenleme sayfasına gittiğimde, checkbox1 ve checkbox3'ün varsayılan olarak kontrol edilmesini istiyorum çünkü bunlar ManyToMany tablosuna zaten bağlı.

Giriş :: eski ('kullanıcı adı') gibi bir şeyi kullanabileceğinizi biliyorum; textfields için, ancak bir onay kutusu için bunu nasıl yapacağımı bilmiyorum.

Ben LaravelCollective çoğu zaman kullanırım fakat bu işaret kutusu yapmadım. Bu yüzden tercihen bir HTML çözümü istiyorum, IF OLACAK.

Teşekkür

+0

Lütfen kod yazınız –

+0

some_name) @endif // değerini kontrol ettiniz $ case-> boolean değerini içeren some_name (1 veya 0) – Hrach

cevap

2

(3 param cinsinden) onay kutusunun hemen yanıt

@foreach($services as $s) 
     <input type="checkbox" name="{{ $s->name }}" value="{{ $s->service_id }}" 
      @if(count($case->services->where('service_id', $s->service_id))) 
       checked="1" 
      @endif /> 
@endforeach 
modeliniz DB depolanan değeri geçiyoruz

Vakalar ve Hizmetler arasında çok fazla ve çok sayıda ilişkinizin olduğunu varsayıyorum. Böylece where bir sorgulama aracıdır, sorgu oluşturucu değildir. Hiçbir şey bulamazsa, kendi başına doğru olan boş bir koleksiyona dönecektir (dolayısıyla count işlevi).

Ancak daha kısa bir yaklaşım için, her seferinde yalnızca bir Case'e bakıyorsanız, devam edip, servisin sahip olduğu tüm Service ID'lerin basit bir dizisini alıp görünüme iletirim.

// The eloquent way 
$case_services = $case->services->toArray(); 

// Otherwise, just query for all service IDs 
$case_services = DB::table('case_services')->where('etc...') 

// You'll end up with something like [24, 47, 103, 287] 

Sonra görünümünde, sadece

@foreach($services as $s) 
     <input type="checkbox" name="{{ $s->name }}" value="{{ $s->service_id }}" 
      @if(in_array($s->service_id, $case_services)) checked="1" @endif /> 
@endforeach 

gibi bir şey çalıştırabilir ben sadece neler olduğunu anlatmak daha kolaydır ve bana daha öngörülebilir olduğu için ikinci çözümü gibi.

+0

Teşekkürler bu biraz küçük ayarlamayla çalıştı! – nclsvh

0

Bu, size Blade şablonu kullanıyorsanız, o zaman bunu yapabilirsiniz, 3 parametre için doğru/yanlış örnek kod edilir kontrol/un-kontrol onay kutusu

{!! Form::checkbox('agree', 1, ($model->checkbox ==1?true:null), ['class' => 'field']) !!} 
burada

Eğer