Твиттерге арналған автоматты белсенді класс Ларавелде жүктеу жолағы

Көптеген адамдар сияқты, Мен қазір Ларавелде дамып жатқан сайт үшін Twitter Bootstrap қызметін пайдаланамын. Мен Laravel-ді Rails-дің PHP эквиваленті ретінде пайдалануды ұнатамын, бірақ навигациялық жолдарды жасаудың жақсы тәсілі бар ма деп сұраймын. Мен li тегтерімнің автоматты түрде белсенді сыныпқа ие екеніне көз жеткізуге тырысамын, сондықтан менде мыналар бар:


Қазір бұл жақсы болады. Бірақ, менде мәзірлер бар, және көбірек навигация болған кезде, ол күйретіп, оны шешу үшін қорқынышты көрінеді.

Laravel-ге арналған Gem Tabulous немесе әдетте Laravel-те навигациямен айналысатын ең жақсы тәсілі бар ма?

4

10 жауаптар

Мен мұны қолданамын:

  • Home
  •  
    
    19
    қосылды
    Жұмыстар! Рахмет: D
    қосылды автор hfingler, көзі
    Бұған рахмет!
    қосылды автор afaolek, көзі
    ұлы адам! бұл мен көрген ең қысқа жол!
    қосылды автор smartrahat, көзі

    Bootstrapper бумасын қараңыз, ол сізге Twitter Bootstrap арқылы көмектесетін көптеген құралдарды ұсынады. Сіздің мысалыңызда келесідей шарлауды жасай аласыз:

    Navigation::pills(array(
        array(
            'label'  => 'Home',
            'url'    => URL::route('home'),
        ),
        array(
            'label'  => 'About',
            'url'    => URL::route('about'),
        )
    ));
    

    Сондай-ақ стенографиялық әдіс бар, кем емес, ол маған ұнайды, бірақ қолдануға болады:

    Navigation::pills(
        Navigation::links(array(
            array('Home', URL::route('home')),
            array('About', URL::route('about')),
        ))
    );
    

    Екі мысалда Bootstrapper қолданыстағы сұрау URL мекенжайын элементге жіберілген салыстыра отырып, белсенді сынып автоматты түрде туралы қамқорлық жасайтынын атап өту маңызды. Егер, алайда, бұл үшін басқа шартты көрсету қажет болса, қысқа әдіс үшін белсенді мәнін немесе массивтің үшінші мәнін ғана жіберіңіз. Мысал:

    Navigation::pills(array(
        array(
            'label'  => 'Home',
            'url'    => URL::route('home'),
        ),
        array(
            'label'  => 'About',
            'url'    => URL::route('about'),
            'active' => true,
        )
    ));
    

    немесе

    Navigation::pills(
        Navigation::links(array(
            array('Home', URL::route('home')),
            array('About', URL::route('about'), true),
        ))
    );
    
    9
    қосылды
    Бұл ескірген құжаттармен осындай керемет жобаны көргендігіме өкінеді. Дегенмен, олар оны қайтадан қалпына келтіруге тырысады, және біз жақын арада суық нәрсе көреміз.
    қосылды автор rmobis, көзі
    Олардың құжаттары ескірген, бірақ басқаша ол керемет жұмыс істейді! Көп рахмет
    қосылды автор DrugCrazed, көзі
    Олар үшін жаңа құжаттарды жазу ұсынылады. Құрылысшылар әртүрлі болып келетін қарапайым нәрселер бар. Мен құжаттың жұмысын алуға тырысқан жасын өткіздім, себебі құжаттар өздеріңізді алапты күткен кезде бірінші дәлел ретінде беру керек дейді.
    қосылды автор DrugCrazed, көзі

    I found a small snippet which helps with this issue. Hopefully this helps the next persons who search for this. http://mikekoro.com/blog/laravel-4-active-class-for-navigational-menu/

    5
    қосылды

    Мен осы тапсырма үшін қарапайым көмекші жасадым. Мен оны /app/helpers/Menu.php ретінде сақтадым. Содан кейін /app/start/global.php көмек файлын ClassLoader :: addDirectories массивіне қостым: _app_path (). '/ Helpers' , (егер сынып жүктелмесе, консольдегі «composer dump-autoload» іске қосып көріңіз, көмекшілерді қосу туралы қосымша ақпарат мұнда )

    class Menu {
     public static function item($route, $label='', $class='', $params=array()) {
        $class .= (Route::getCurrentRoute()->getAction()['as']==$route) ? ' active' : '';
        $tag = $class ? '
  • ' : '
    • '; return $tag.HTML::link(URL::route($route, $params),$label).'
    • '; } }

      Сіздің көзқарасыңыз. маршруттың атауын ғана жеткізеді және ол ішіндегі сілтеме бар LI элементін жасайды, «белсенді» сынып LI элементіне қосылады. Үшінші параметрді пайдаланып, теңшелетін сыныптарды қоса аласыз.

  • 2
    қосылды
    Мен тек мысалды жаңарттым. Сізге бұл жұмыс істейтінін қараңыз.
    қосылды автор Arne, көзі
    Маған тағы бір параметрді өту керек болса, не істеу керек? Мысалы, пайдаланушының профилін көру үшін сілтеме. Менде жұмыс істейтін бастапқы байланыс:
  • қосылды автор Pathros, көзі
    Иә, қазір ол жұмыс істейді! Мен оны келесідей пайдаланамын: {{Menu :: item ('profile-user', 'Профиль', 'active', array ('username' => Auth :: user() -> username))}
    қосылды автор Pathros, көзі
    Мен сыныпты Menu.php (бас әріппен бас әріппен) ретінде сақтауға тура келетінін түсіндім, әйтпесе серверге жүктелген кезде табылмаған қате пайда болады.
    қосылды автор Pathros, көзі
    Егер сіз белгілі бір мәзір сілтемесінде bootstrap glyphicon қосқыңыз келсе, html_entity_decode() функциясын келесі түрде қолданыңыз: {{html_entity_decode (Мәзір :: item ('account-sign- Шығу ')))}}
    қосылды автор Pathros, көзі

    Мен қолданамын:

  • Home
  • 
    
  • About
  • 
    
  • Contact
  • 
    
    
    1
    қосылды

    Егер сіз jQuery негізіндегі шешімге қарсы болмасаңыз, онда сіз келесідей нәрсені көре аласыз:

    $('#mainmenu li').removeClass('active');
    $('#mainmenu li a[href="'+document.location.href+'"]').parents('li').addClass('active');
    

    мұнда mainmenu - бұл шарлау тақтасының идентификаторы немесе li элементтері бар кез келген басқа элемент.

    1
    қосылды

    Laravel шешімі емес, бірақ қарапайым клиенттің JavaScript шешімі бүгін мен жазған:

    https://github.com/davidmars/bootstrapNavActive

    <!--include our little script-->
    <script src="https://cdn.rawgit.com/davidmars/bootstrapNavActive/master/BootstrapNavActive.min.js"></script>
    
    <!--initialize the nav element-->
    <script>
    $( document ).ready(
    function(){
        var $mySmartNav=$("#mySmartNav");
        new BootstrapNavActive($mySmartNav);
      }
    );
    </script>
    

    Кодты жақсарту құпталады;)

    0
    қосылды

    Тағы бір пайдалы кітапхана мына жерде болуы мүмкін: https://код. google.com/p/bootstrap-php/source/browse/#svn%2Ftrunk%2FNavbar Кешенді емес, бірақ өте оңай

    $oNavbar      = new Bootstrap_Navbar_Handler(array('class' => 'nav-pills'));
    $oNavbar->addEntry('Home', array('href' => '/pageurlHome'));
    $oNavbar->addEntry('About', array('href' => '/pageurlAbout'));
    
    $oNavbar->setAutoActive(true);
    echo $oNavbar->display();
    

    Бұл келесідей:

    <div class="navbar">
      <div class="navbar-inner">
        <div class="container">
          
        </div>
      </div>
    </div>
    

    пайдалана отырып

    $oNavbar->setAutoActive();
    

    сынып тиісті жазбаны автоматты түрде белсендіреді

    0
    қосылды

    Мен осы тамаша жұмыс істеді

  • Create
  •  
    
    0
    қосылды

    Ларавелде тұрғандарды оқитын адам үшін 5.4:

  • Болуы керек (аяқтауды алып тастаңыз;):

  • 0
    қосылды
    Бұл бірдей сызықтар ...
    қосылды автор CJ Burkey, көзі