Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 05.05.2017 17:13:57

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 56

Laravel54 aktif menu

Bu tür şeyler php de çok basitte laracast'ta 10'a yakın yötem gördüm bir kaçını denemeye değer buldum. Üşengeçlikte midir, üstüe düşmediğimden midir beceremedim.
Menulerin sınıfına eğer /sayfa sınıfındaysa "curren-page-item" gibi bir sınıf geliyor.
Ancak benim menüleri ben anasayfa iletiişim diye hardkod statik yazmıyorum .Foreach ile dönüyor panelden eklenen iç menüleri ile bilrikte, aynı zamanda sayfaların iç sayfaları da dinamik olduğu için Route::is('') gibi özelliklerden bahsetmişler.
Nasl yapabilirim?

Son olarak ikinci bir sorum var. Bu o kadar önemli değil,  sayfaları da spagetti bir slug yapmak istedim hızlı olsun diye sanırım hepsinin sonuna str_slug().html şeklinde yapıştırıyorum. Kafamı karıştıran diğer şey de bu. Nitekim vt kaydetmedene yapıyorum. böğürtleni beuertlen diye çeviriyor manyak smile Bu da php ile daha kolay işime gelirdi. app/ içine özel helpers.php yapıp autoload'a tanıyorlar gördüğüm kadarıyla ek fonksiyonlar için sağlıklı mı emin değilim, laravel çatısı değiştirilmiş olmuyor mu

Çevrimdışı

#2 05.05.2017 17:55:37

mgsmus
Üye
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 716
Website

Yanıt: Laravel54 aktif menu

function active_url($route, $usePath = false, $class = 'active')
{
    if (!$usePath) {
        return request()->is($route) ? $class : null;
    } else {
        return request()->path() == $route ? $class : null;
    }
}

Benim yazdığım fonksiyon bu. active_url('admin/files*') dediğinizde admin/files ie başlayan tüm linkleri yakalayıp active karakter ifadesini dönderiyor. Direk rota girmek isterseniz active_url('admin.files.index',true) gibi kullanıyorsunuz. Ör:

@foreach($pages as $page)
<a href="{{ route('pages.show', $page->slug) }}" class="{{ active_url(route('pages.show', $page->slug), true) }}">
    {{ $page->title }}
</a>
@endforeach

app/ içine özel helpers.php yapıp autoload'a tanıyorlar gördüğüm kadarıyla ek fonksiyonlar için sağlıklı mı emin değilim, laravel çatısı değiştirilmiş olmuyor mu

Bu benim kullandığım yol. Maksat str_slug fonksiyonunu değiştirmek ve normal şekilde kullanmaya devam etmek. Siz istiyorsanız str_slug_tr() gibi bir şey hazırlayıp çatıyı değiştirmezsiniz. Çok önemli bir değişiklik olmadığı için öyle yapmıştım, şu ana kadar değişmedi.

Çevrimdışı

#3 08.05.2017 08:25:30

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 56

Yanıt: Laravel54 aktif menu

active_url('admin/files*')  bura da ki * kısmı çok iyi gerisini tamamlıyor bu nereden geliyor? Fonksiyonda buna özgü bir olay yok. Biraz değiştrirerek yapmaya çalıştım ancak bunun sayesinde gerek kalmadı.

        return preg_split("/\D/", request()->path() ) == $number ?  $class  : null; ....

Bu olay olmasaydı  bununla yapmam mümkün olmayacaktı ben de bir kaç yöntemden sonra bunu kullanıyorum şu şekilde

  {{ active_url('kategori/'.$menu->id.'/'.str_slug($menu->baslik,'-').'.html')  }}

Böyle olunca alt sayfalara özgü de /altkategori* .. /altsayfa* şeklinde yazabiliyorum ancak o kısmıda js ile  yaptım.
Buraya yazayım da turşunu kurmayacağım nasılsa faydalanan çıkabilir.

   

// Jquery hali
$(document).ready(function(){
    var sinif = $('.current-menu-itemt').parent().parent().attr( "class", "aktif" );
    });

   //salt javascript hali
window.onload = function() {
        document.getElementsByClassName('aktif').parentNode.className = "aktif";
    }

Yani iç sayfaları seçincede üstteki sınıfında aktif olması gerekiyior. Ancak onunda döngüsü alt tarafta sınıfın içine koyamayacağım için seçilen divin ebeveynine sınıfı yakalayıp atıyor Js.

Daha küçük ihityaçlar için ise

{{ Route::is('/') ? 'current-menu-item' : null }}
<a href="#" class="{{ (\Reques::route()->getName() == 'this.route') ? 'active' : '' }}">

Son düzenleyen elementaryos (08.05.2017 08:28:17)

Çevrimdışı

Forum alt kısmı