Giriş yapmadınız.

#1 07.03.2019 18:36:48

ebuzer
Üye
Kayıtlı: 16.10.2018
Mesajlar: 15

dimsav/laravel-translatable ve config()->set

Selamlar,
dimsav/laravel-translatable için şunları oluşturdum.

        Schema::create('site_tanimlari', function (Blueprint $table) {
			$table->increments('id');
			$table->string('anahtar')->comment('tanımın adı');
        });

        Schema::create('site_tanimlari_trans', function (Blueprint $table) {
			$table->increments('id');
			$table->string('locale')->index();

			$table->text('deger')->comment('sitenin genel tanımının değeri')->nullable();

			$table->integer('site_tanim_id')->unsigned();
			$table->unique(['site_tanim_id', 'locale']);
			$table->foreign('site_tanim_id')->references('id')->on('site_tanimlari')->onDelete('cascade');
        });

Provider içinde "siteTanimlari" diye bir ayar tanımlamaya çalışıyorum. Burada dile göre genel bilgiler yer alacak. "Title, Description" gibi... Normalde trans tablosu olmasa şöyle yapacağım;

SiteTanim::pluck('deger', 'anahtar')->all()

Fakat translatable dokümanını incelediğim halde yazamadım bir türlü sorguyu... Nasıl yapılabilir?

Şimdiden teşekkürler

Son düzenleyen ebuzer (07.03.2019 18:39:24)

Çevrimdışı

#2 10.03.2019 10:13:27

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 406

Yanıt: dimsav/laravel-translatable ve config()->set

hayret mgsmus buraya uğramamış smile tam ona ait bir soru bu.paketi bilen biri yalnış hatırlamıyorsam.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#3 10.03.2019 19:01:49

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,536
Website

Yanıt: dimsav/laravel-translatable ve config()->set

Uygulama diline göre zaten otomatik çektiği için sadece SiteTanim::all(); şeklinde çekmeniz yeterli. Dil Türkçe ise locale değeri tr olanları; dil İngilizce ise locale değeri en olanları getiriyor.

Çevrimdışı

#4 10.03.2019 19:58:44

ebuzer
Üye
Kayıtlı: 16.10.2018
Mesajlar: 15

Yanıt: dimsav/laravel-translatable ve config()->set

Cevap için teşekkürler... Örnek tablo verileri şöyle;

> select * from site_tanimlari;
+----+-------------+
| id | anahtar     |
+----+-------------+
|  1 | title       |
|  2 | description |
|  3 | keywords    |
+----+-------------+
3 rows in set (0.00 sec)

> select * from site_tanimlari_trans;
+----+--------+---------------+---------------+
| id | locale | deger         | site_tanim_id |
+----+--------+---------------+---------------+
|  1 | tr     | Blog sitesi   |             1 |
|  2 | en     | Blog web site |             1 |
|  3 | ar     | title ar      |             1 |
|  4 | ru     | title ru      |             1 |
+----+--------+---------------+---------------+
4 rows in set (0.00 sec)

Aslında "deger"i elde edebilmek için $anahtar->title veya config('siteTanimlari.title') gibi bir şey yapmaya çalışıyorum.

Normalde şöyle bir tabloda bunu Ayar::pluck('deger', 'anahtar')->all() şeklinde elde edebiliyorum.

> select * from ayar;
+----+-------------+-----------------------+
| id | anahtar     | deger                 |
+----+-------------+-----------------------+
|  1 | title       | Blog sitesi           |
|  2 | description | bu bir blog sitesidir |
|  3 | keywords    | blog, sitesi          |
+----+-------------+-----------------------+
3 rows in set (0.00 sec)

Fakat bu pakette bir türlü yapamadım.

Son düzenleyen ebuzer (10.03.2019 20:04:35)

Çevrimdışı

#5 10.03.2019 22:26:32

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,536
Website

Yanıt: dimsav/laravel-translatable ve config()->set

Dokümanlara bakarsanız listsTranslations şeklinde bir yöntem var:

SiteTanim::listsTranslations('deger')->pluck('deger', 'anahtar');

Çevrimdışı

#6 11.03.2019 00:01:42

ebuzer
Üye
Kayıtlı: 16.10.2018
Mesajlar: 15

Yanıt: dimsav/laravel-translatable ve config()->set

Öyle çalışmadı maalesef ama bana rehber oldu. Biraz daha mantık yürüterek cevabı buldum.

SiteTanim::withTranslation()->get()->pluck('deger', 'anahtar')->toArray()

Tekrar teşekkürler

Provider içinde de şöyle kullanarak sitenin her tarafına çağırıyorum artık;

config()->set('siteTanimlari', SiteTanim::withTranslation()->get()->pluck('deger', 'anahtar')->toArray());

Kullanımı da şu şekilde oldu;

config('siteTanimlari.title')
config('siteTanimlari.description')

İnşallah konuyu araştıran birilerine faydası olur wink

Son düzenleyen ebuzer (11.03.2019 00:05:13)

Çevrimdışı

Forum alt kısmı