Peki, formları nasıl gönderiyorsun? Tek seferde hepsini mi yoksa tek tek mi? Formlarda rubaslik , enbaslik yapmak zorunda da kaldım. Hepsini "baslik" olarak döndürdüğümde tek bir form verisi olduğu için üç kere döndürüyor, . Kod kalabalığı olması yanında controller da her dil için ayrı kaydettiriyorum fonksiyon içinde.
->translateOrNew($locale)->baslik
gibi kullanımlar var tam kafama oturmuş değil,
Bunu yapıyorum üç adet güzelce kaydediyor ancak, diğer diller de işin içine girince formdan gelen veriler girince kafam karışıyor.
foreach (['en', 'ru', 'fr''] as $locale) {
$article->translateOrNew($locale)->baslik= "Title {$locale}";
$article->translateOrNew($locale)->icerik = "Text {$locale}";
}
Temel olarak "form çıkışını" - "controller da ki yapıyı" sorduktan sonra dili artırmak istersem panelden her birini tek tek tanımlayacağım için mümkün olamayacak yani şöyle kullanıyorum ben.
foreach (['tr', 'ru', 'en'] as $dil) {
$urun = new Urun;
$urun->translateOrNew($dil)->baslik = $request->baslik;
$urun->translateOrNew($dil)->aciklama = $request->aciklama;
if ($request->resim) {
$dosya = $request->file('resim');
$dosyaadi = uniqid() . $dosya->getClientOriginalName();
$dosya->move('galeri/urun_resim', $dosyaadi);
$urun->translateOrNew($dil)->resim = $dosyaadi;
}
$resimler = $request->resim;
if($resimler){
foreach($resimler as $resim){
$urunresim = new UrunResim;
$dosyaadi = $resim->getClientOriginalName() . uniqid();
$resim->move('galeri/urun_resim', $dosyaadi);
$urunresim->resim = $dosyaadi;
$urunresim->urun_id = $urun->translateOrNew($dil)->id;
$urunresim->save();
}
}
$urun->translateOrNew($dil)->kategori_id = $request->kategori;
$urun->translateOrNew($dil)->title = $request->title;
$urun->translateOrNew($dil)->desc = $request->desc;
$urun->translateOrNew($dil)->meta = $request->meta;
$urun->translateOrNew($dil)->sira = $request->sira;
$urun->save();
}
Bu tek birisi için üç adet aynı veriyi döndürüyor. Bunu üç dil için üç kat artırmam gerekiyor anlattığım şekilde olursa. 5 dil seçenekli üç dil olması gerekiyor. Artırma daha iyi olur tabi.