2012-11-24 19 views
10

लैरावेल में मेनू डेटा तर्क रखने के लिए सबसे अच्छी वैचारिक जगह क्या है। अगर मैं मेनू बंडल का उपयोग कहां रखूं। Base_Controller में अतिरिक्त फ़ंक्शन या कुछ अलग बनाएं?लार्वेल में मेनू तर्क कहां रखा जाए?

+0

"मेनू तर्क" क्या है:

यहाँ पूरा लेख पढ़ें? –

+0

उदाहरण के लिए डीबी से मेनू तत्व प्राप्त करना और दृश्यों में प्रतिपादन के लिए मेनू (बंडल) संग्रहण में जोड़ें। – Orbitum

उत्तर

24

नोट: इस उत्तर Laravel 3 के लिए लिखा गया था और या हाल ही में Laravel 4


मेरे गतिशील मेनू बनाने की पसंदीदा तरीके के साथ काम नहीं कर सकते हो सकता है अलग करके हासिल की है मुख्य लेआउट से मेनू भाग और लैरवेल के संगीतकार के माध्यम से मेनू डेटा इंजेक्शन (इसे कंपोज़र PHP पैकेज मैनेजर के साथ भ्रमित न करें), वे अलग-अलग चीजें हैं)

<!-- layouts/default.blade.php --> 

<div id="header">Title</div> 

<div id="menu"> 
    @render('parts.menu') 
</div> 

<div id="content"></div> 
<div id="footer"></div> 

 

<!-- parts/menu.blade.php --> 

<ul> 
@foreach($menuitems as $menuitem) 
    <li>{{ $menuitem->title }}</li> 
@endforeach 
</ul> 

 

अंत में हम संगीतकार के माध्यम से चर इंजेक्षन कर सकते हैं।

<?php 

// application/routes.php 

View::composer('parts.menu', function($view){ 
    $view->with('menuitems', Menu::all()); 
}); 

इस तरह हर parts/menu.blade.php कहा जाता है, संगीतकार दृश्य रोकना और $menuitems चर के साथ यह इंजेक्षन जाएगा। यह return View::make('blahblah')->with('menuitems', Menu::all())

पर with का उपयोग कर के रूप में ही है आशा है कि यह मदद करता है :)


संपादित: आप routes.php में लॉजिक्स लेना पसंद नहीं है, तो आप start.php में रख और जेसन लुईस 'जिस तरह से विचार कर सकते हैं अलग-अलग फ़ाइलों में start.php को विभाजित करने का।

application बुलाया start में एक निर्देशिका बनाएँ और कुछ फाइलों के साथ भरें।

+ application [DIR] 
    \-> + start [DIR] 
     |-> autoloading.php 
     |-> composers.php 
     |-> filters.php 
     \-> validation.php 

फिर अपने application/start.php

require __DIR__ . DS . 'start' . DS . 'autoloading.php'; 
require __DIR__ . DS . 'start' . DS . 'filters.php'; 
require __DIR__ . DS . 'start' . DS . 'composers.php'; 
require __DIR__ . DS . 'start' . DS . 'validation.php'; 

आप विचार आया के अंत में कोड की इन पंक्तियों में जोड़ें। Composers.php में संगीतकार कार्यों को रखो। http://jasonlewis.me/article/laravel-keeping-things-organized

+0

मुझे लगता है कि आप एक में दो उत्तरों विलय कर चुके हैं! – Orbitum

+3

नए संस्करणों में, @render ('parts.menu') के बजाय @include ('parts.menu') – hugronaphor

+0

@ कॉर्नेल एंड्रीव का उपयोग करें: प्रस्तुत करने और शामिल करने के बीच क्या अंतर है? – akhyar

0

view composer में डेटा लाने और HTML उत्पन्न करने के लिए HTML macro का उपयोग कैसे करें?

Laravel अक्सर काम करने के कई तरीक़े हैं। उस ने कहा, यह शायद कभी-कभी थोड़ा जबरदस्त और उलझन में हो सकता है।

+1

देखने के बारे में दस्तावेज में संगीतकार कहा जाता है कि _ "संगीतकार आमतौर पर आवेदन/routes.php में परिभाषित होते हैं" _। मैं तर्क के लिए रूटिंग के लिए केवल मार्गों का उपयोग करता हूं, क्या मार्गों के बिना समाधान है? – Orbitum

+0

उनके पास मार्गों के साथ कुछ लेना देना नहीं है, आप जहां भी चाहें उन्हें रख सकते हैं - आमतौर पर एक अतिरिक्त सहायक फाइल में। – Franz

+0

ठीक है, और यह तर्क कहां रखना है (संगीतकार)? Base_Controller फ़ंक्शन में? यह मेरा मुख्य प्रश्न है। मैं समझता हूं कि लैरवेल में कई लचीली चीजें हैं, लेकिन उन्हें नहीं पता कि उन्हें कहां रखा जाए। – Orbitum

संबंधित मुद्दे