php लार्वेल में टेम्पलेटिंग



laravel laravel-3 (2)

मैं अपने डिफ़ॉल्ट टेम्पलेट को लार्वेल के साथ काम करने की कोशिश कर रहा हूं। मैं कोडिग्निटर और फिल स्टर्जन के टेम्पलेट सिस्टम से आ रहा हूं इसलिए मैं इसे इसी तरह से करने की कोशिश कर रहा हूं। क्या कोई मेरी मदद कर रहा है जो मुझे याद आ रहा है / गलत कर रहा है? धन्यवाद!

//default.blade.php (located in layouts/default)
<html>
    <title>{{$title}}</title>
    <body>
    {{$content}}
    </body>
</html>
//end default.blade.php

//home.blade.php (index view including header and footer partials)
@layout('layouts.default')
@include('partials.header')
//code
@include('partials.footer')
//end home

//routes.php (mapping route to home controller)
Route::controller( 'home' );
//end

//home.php (controller)
<?php
class Home_Controller extends Base_Controller {
    public $layout = 'layouts.default';
    public function action_index()
    {   
        $this->layout->title = 'title';
        $this->layout->content = View::make( 'home' );
    }
}
//end

Answer #1

आप लार्वेल के दो अलग-अलग लेआउट दृष्टिकोणों को मिश्रित कर रहे हैं। इस तरह आप लेआउट व्यू को प्रतिपादित कर रहे हैं, होम व्यू शामिल करें और फिर लेआउट के अंदर शामिल करने का प्रयास करें।

मेरी निजी वरीयता नियंत्रक दृष्टिकोण है।

नियंत्रक लेआउट

नियंत्रक और लेआउट एक ही रह सकते हैं।

नोट: शॉर्टकट के रूप में आप व्यू :: मेक के बजाय सामग्री को घोंसला कर सकते हैं, जो लेआउट में इसे गूंजते समय स्वचालित रूप से इसे प्रस्तुत करता है।

Home.blade.php में @layout फ़ंक्शन को हटा दें।

संपादित करें (उदाहरण):

नियंत्रक / home.php

<?php
class Home_Controller extends Base_Controller {
  public $layout = 'layouts.default';
  public function action_index()
  {
    $this->layout->title = 'title';
    $this->layout->nest('content', 'home', array(
      'data' => $some_data
    ));
  }
}

विचारों / लेआउट / default.blade.php

<html>
  <title>{{ $title }}</title>
  <body>
    {{ $content }}
  </body>
</html>

विचारों / home.blade.php

आंशिक सामग्री में शामिल हैं।

@include('partials.header')
{{ $data }}
@include('partials.footer')

ब्लेड लेआउट्स

यदि आप इस दृष्टिकोण को चाहते हैं तो आपको कुछ समस्याएं हैं। सबसे पहले, आप लेआउट के बाद नई सामग्री शामिल कर रहे हैं। निश्चित नहीं है कि जानबूझकर, लेकिन @layout फ़ंक्शन स्वयं मूल रूप से केवल एक @ अंतर्निहित दृश्य की शुरुआत में प्रतिबंधित है। तो यदि आपका लेआउट एक बंद एचटीएमएल है, तो उसके बाद कोई भी शामिल होगा जो आपके एचटीएमएल लेआउट के बाद जोड़ा जाएगा।

आपकी सामग्री को @section फ़ंक्शन के साथ अनुभागों का उपयोग करना चाहिए और इसे अपने लेआउट में @yield करना चाहिए। शीर्षलेख और पाद लेख को लेआउट में @include के साथ शामिल किया जा सकता है या यदि आप सामग्री दृश्य में इसे परिभाषित करना चाहते हैं तो उन्हें नीचे @section में भी डालें। यदि आप इसे इस तरह परिभाषित करते हैं कि कोई खंड मौजूद नहीं है तो कुछ भी नहीं मिलता है।

नियंत्रक / home.php

<?php
class Home_Controller extends Base_Controller {
  public function action_index()
  {
    return View::make('home')->with('title', 'title');
  }
}

विचारों / लेआउट / default.blade.php

<html>
 <title>{{$title}}</title>
 <body>
  @yield('header')
  @yield('content')
  @yield('footer')
 </body>
</html>

विचारों / home.blade.php

@layout('layouts.default')
@section('header')
  header here or @include it
@endsection
@section('footer')
  footer
@endsection
@section('content')
  content
@endsection

Answer #2

ऊपर दिए गए उत्तर में बताया गया है कि लैरावेल में टेम्पलेटिंग कैसे किया जाता है, हालांकि विषयों के बीच स्विच करने और आंशिक और थीम संसाधन रखने के साथ थीम थीम में व्यवस्थित विषयों को प्रबंधित करने जैसे अतिरिक्त लाभ प्राप्त करने के लिए फिल स्टर्जनजन टेम्पलेट लाइब्रेरी के समान कुछ लगता है। सीआई आप लार्वेल के लिए थीम बंडल की जांच कर सकते हैं। लिंक यहां दिया गया है:

http://raftalks.github.io/Laravel_Theme_Bundle/





laravel-3