खोज…


परिचय

Laravel बॉक्स से ब्लेड टेंपलेटिंग इंजन का समर्थन करता है। ब्लेड टेम्पलिंग इंजन हमें मास्टर टेम्प्लेट बनाने की अनुमति देता है और मास्टर टेम्प्लेट से बाल टेम्प्लेटिंग लोडिंग सामग्री, हम ब्लेड फ़ाइल के अंदर चर, लूप और सशर्त विवरण रख सकते हैं।

दृश्य: परिचय

दृश्य, एक MVC पैटर्न में, उपयोगकर्ता को डेटा प्रस्तुत करने के तरीके पर तर्क होता है। एक वेब एप्लिकेशन में, आमतौर पर वे HTML आउटपुट उत्पन्न करने के लिए उपयोग किए जाते हैं जो प्रत्येक प्रतिक्रिया के साथ उपयोगकर्ताओं को वापस भेजे जाते हैं। डिफ़ॉल्ट रूप से, लारवेल में resources/views निर्देशिका में संग्रहीत किए जाते हैं।

view सहायक फ़ंक्शन का उपयोग करके एक view कहा जा सकता है:

view(string $path, array $data = [])

सहायक का पहला पैरामीटर दृश्य फ़ाइल का पथ है, और दूसरा पैरामीटर दृश्य को पास करने के लिए डेटा का एक वैकल्पिक सरणी है।

इसलिए, resources/views/example.php को कॉल करने के लिए, आप उपयोग करेंगे:

view('example'); 

resources/views निर्देशिका के भीतर उप-फ़ोल्डर में फ़ाइलें देखें, जैसे कि resources/views/parts/header/navigation.php view('parts.header.navigation'); , को डॉट नोटेशन का उपयोग करके कहा जा सकता है: view('parts.header.navigation');

एक दृश्य फ़ाइल के भीतर, जैसे कि resources/views/example.php , आप HTML और PHP दोनों को एक साथ शामिल करने के लिए स्वतंत्र हैं:

<html>
    <head>
        <title>Hello world!</title>
    </head>
    <body>
        <h1>Welcome!</h1>
        <p>Your name is: <?php echo $name; ?></p>
    </body>
</html>

पिछले उदाहरण में (जो किसी भी ब्लेड विशिष्ट सिंटैक्स का उपयोग नहीं करता है), हम $name चर का उत्पादन करते हैं। इस मूल्य को अपने विचार में पास करने के लिए, हम सहायक को देखने के लिए मानों की एक सरणी को पास करेंगे:

view('example', ['name' => $name]);

या वैकल्पिक रूप से, compact() सहायक का उपयोग करें। इस मामले में, स्ट्रिंग को कॉम्पैक्ट () के पास दिया गया है, उस चर के नाम से मेल खाता है जिसे हम दृश्य में पास करना चाहते हैं।

view('example', compact('name'));

ब्लेड वार्स के लिए नामकरण की सहमति

डेटा वापस देखने के लिए भेजते समय। आप उपयोग कर सकते हैं underscore बहु शब्द के लिए variable लेकिन साथ - laravel त्रुटि देता है।

जैसे यह user-address भीतर त्रुटि (नोटिस hyphen ( - )

view('example',['user-address' => 'Some Address']);

ऐसा करने का सही तरीका होगा

view('example', ['user_address' => 'Some Address']);

नियंत्रण संरचनाएं

ब्लेड सामान्य PHP नियंत्रण संरचनाओं के लिए सुविधाजनक सिंटैक्स प्रदान करता है।

नियंत्रण संरचनाओं में से प्रत्येक @[structure] शुरू होता है और @[endstructure] साथ समाप्त होता है। ध्यान दें कि टैग के भीतर, हम सामान्य HTML टाइप कर रहे हैं और ब्लेड सिंटैक्स के साथ चर भी शामिल है।

सशर्त,

'अगर' कथन

@if ($i > 10)
    <p>{{ $i }} is large.</p>
@elseif ($i == 10)
    <p>{{ $i }} is ten.</p>
@else
    <p>{{ $i }} is small.</p>
@endif

'जब तक' बयान नहीं

('यदि नहीं' के लिए लघु वाक्य रचना।)

@unless ($user->hasName())
    <p>A user has no name.</p>
@endunless

लूप्स

'घुमाव के दौरान

@while (true)
    <p>I'm looping forever.</p>
@endwhile

'फॉरच' लूप

@foreach ($users as $id => $name)
    <p>User {{ $name }} has ID {{ $id }}.</p>
@endforeach

'फोर्लेसे' लूप

(समान रूप से ' @empty ' लूप के रूप में, लेकिन एक विशेष @empty निर्देश जोड़ता है, जिसे तब निष्पादित किया जाता है, जब ऐरे एक्सप्रेशन ओवररेटेड होता है, डिफ़ॉल्ट सामग्री दिखाने के तरीके के रूप में खाली होता है।)

@forelse($posts as $post)
    <p>{{ $post }} is the post content.</p>
@empty
    <p>There are no posts.</p>
@endforelse

लूप के भीतर, एक विशेष $loop वैरिएबल उपलब्ध होगा, जिसमें लूप की स्थिति के बारे में जानकारी होगी:

संपत्ति विवरण
$loop->index वर्तमान लूप पुनरावृत्ति का सूचकांक (0 से शुरू होता है)।
$loop->iteration वर्तमान लूप पुनरावृत्ति (1 से शुरू होता है)।
$loop->remaining शेष लूप पुनरावृत्तियों।
$loop->count सरणी में आइटम्स की कुल संख्या पुनरावृत्त की जा रही है।
$loop->first क्या यह लूप के माध्यम से पहला पुनरावृत्ति है।
$loop->last क्या यह लूप के माध्यम से अंतिम पुनरावृत्ति है।
$loop->depth वर्तमान लूप का घोंसला स्तर।
$loop->parent जब एक नेस्टेड लूप में होता है, तो माता-पिता का लूप वेरिएबल होता है।

उदाहरण:

@foreach ($users as $user)
  @foreach ($user->posts as $post)
        @if ($loop->parent->first)
            This is first iteration of the parent loop.
        @endif
    @endforeach
@endforeach

लारवेल 5.2.22 के बाद से, हम निर्देश @continue और @break @continue का भी उपयोग कर सकते हैं

संपत्ति विवरण
@continue वर्तमान पुनरावृत्ति को रोकें और अगले एक को शुरू करें।
@break वर्तमान लूप बंद करो।

उदाहरण :

@foreach ($users as $user)
    @continue ($user->id == 2)
        <p>{{ $user->id }} {{ $user->name }}</p>
    @break ($user->id == 4)
@endforeach

तब ( मान लिया जाता है कि 5+ उपयोगकर्ता आईडी द्वारा सॉर्ट किए गए हैं और कोई आईडी नहीं है ) पेज रेंडर करेगा

1 Dave
3 John
4 William

PHP के भावों की गूंज

डबल घुंघराले ब्रेसिज़ के भीतर किसी भी PHP व्यंजक {{ $variable }} हो जाएगा echo के माध्यम से चलाया जा रहा के बाद एड e सहायक समारोह । (तो एचटीएमएल विशेष वर्ण ( < , > , " , ' , & ) सुरक्षित रूप से इसी एचटीएमएल संस्थाओं के लिए बदल दिया जाता है।) (पीएचपी अभिव्यक्ति स्ट्रिंग के लिए मूल्यांकन करना चाहिए, नहीं तो एक अपवाद फेंक दिया जाएगा।)

एक चर गूँज रहा है

{{ $variable }}

एक एरे में एक तत्व की गूंज

{{ $array["key"] }}

किसी वस्तु की संपत्ति गूँजना

{{ $object->property }}

एक फ़ंक्शन कॉल का परिणाम गूंज रहा है

{{ strtolower($variable) }}

अस्तित्व के लिए जाँच कर रहा है

सामान्य तौर पर, PHP में, यह जांचने के लिए कि क्या एक चर सेट है और इसे प्रिंट करें जो आप करेंगे

  • PHP 7 से पहले
<?php echo isset($variable) ? $variable : 'Default'; ?>
  • PHP 7 के बाद ("नल coalescing ऑपरेटर" का उपयोग करके)
<?php echo $variable ?? 'Default'; ?>

ब्लेड ऑपरेटर or इसे आसान बनाता है:

{{ $variable or 'Default' }}

कच्चा इकोस

जैसा कि उल्लेख किया गया है, नियमित डबल ब्रेसेस सिंटैक्स {{ }} , को सुरक्षा के लिए PHP के htmlspecialchars फ़ंक्शन के माध्यम से फ़िल्टर किया जाता है (दृश्य में HTML के दुर्भावनापूर्ण इंजेक्शन को रोकते हुए)। यदि आप इस व्यवहार को बायपास करना चाहते हैं, उदाहरण के लिए यदि आप एक PHP अभिव्यक्ति से उत्पन्न HTML सामग्री के ब्लॉक का उत्पादन करने का प्रयास कर रहे हैं, तो निम्न सिंटैक्स का उपयोग करें:

{!! $myHtmlString !!}

ध्यान दें कि आपके डेटा से बचने के लिए मानक {{ }} सिंटैक्स का उपयोग करना सबसे अच्छा अभ्यास माना जाता है, जब तक कि बिल्कुल आवश्यक न हो। इसके अलावा, जब अविश्वसनीय सामग्री (यानी आपकी साइट के उपयोगकर्ताओं द्वारा आपूर्ति की गई सामग्री) की गूंज हो, तो आपको {!! !!} का उपयोग करने से बचना चाहिए {!! !!} वाक्य रचना।

जिसमें आंशिक दृश्य भी शामिल हैं

ब्लेड के साथ, आप आंशिक विचार (जिसे 'भाग' कहा जाता है) को सीधे एक पेज में शामिल कर सकते हैं:

@include('includes.info', ['title' => 'Information Station'])

ऊपर दिए गए कोड में 'विचार / शामिल / info.blade.php' पर दृश्य शामिल होगा। यह एक चर $title में पास होगा जिसका मूल्य 'सूचना स्टेशन' होगा।

सामान्य तौर पर, एक शामिल पृष्ठ में किसी भी चर तक पहुंच होगी जिसे कॉलिंग पृष्ठ तक पहुंच है। उदाहरण के लिए, यदि हमारे पास:

{{$user}} // Outputs 'abc123'
@include('includes.info')

और 'में / info.blade.php' शामिल हैं:

<p>{{$user}} is the current user.</p>

तब पृष्ठ प्रस्तुत करेगा:

abc123
abc123 is the current user.

प्रत्येक को शामिल करें

कभी-कभी, आप एक foreach स्टेटमेंट के साथ include स्टेटमेंट को संयोजित करना चाहते include , और फ़ॉरेस्ट लूप के भीतर से वेरिएबल्स को एक्सेस में शामिल कर सकते हैं। इस स्थिति में, ब्लेड के @each निर्देश का उपयोग करें:

@each('includes.job', $jobs, 'job')

पहला पैरामीटर शामिल करने के लिए पेज है। दूसरा पैरामीटर ओवररेट करने के लिए सरणी है। तीसरा पैरामीटर सरणी के तत्वों को सौंपा गया चर है। ऊपर दिया गया कथन इसके समतुल्य है:

@foreach($jobs as $job)
    @include('includes.job', ['job' => $job])
@endforeach

सरणी खाली होने पर दृश्य को दिखाने के लिए आप @each निर्देश पर एक वैकल्पिक चौथा तर्क भी पारित कर सकते हैं।

@each('includes.job', $jobs, 'job', 'includes.jobsEmpty')

लेआउट वंशानुक्रम

एक लेआउट एक दृश्य फ़ाइल है, जो अन्य विचारों द्वारा विस्तारित होती है जो कोड के ब्लॉक को उनके माता-पिता में इंजेक्ट करते हैं। उदाहरण के लिए:

parent.blade.php:

<html>
    <head>
        <style type='text/css'>
        @yield('styling')
        </style>
    </head>
    <body>
        <div class='main'>
        @yield('main-content')
        </div>
    </body>
</html>

child.blade.php:

@extends('parent')

@section('styling')
.main {
    color: red;
}
@stop

@section('main-content')
This is child page!
@stop

otherpage.blade.php:

@extends('parent')

@section('styling')
.main {
    color: blue;
}
@stop

@section('main-content')
This is another page!
@stop

यहां आपको दो उदाहरण चाइल्ड पेज दिखाई देते हैं, जो प्रत्येक माता-पिता का विस्तार करते हैं। बाल पृष्ठ एक @section को परिभाषित @section , जो कि माता-पिता को उपयुक्त @yield विवरण कथन में डाला जाता है।

द्वारा प्रदान की गई दृश्य तो View::make('child') कहेंगे, लाल रंग में "यह बच्चा पेज है!" जबकि View::make('otherpage') पाठ के साथ छोड़कर, एक ही एचटीएमएल का उत्पादन करेगा "यह एक और है पृष्ठ! "के बजाय नीले रंग में।

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

लेआउट का उद्देश्य कोड को लागू करना है जो प्रत्येक पृष्ठ पर दिखाई देना चाहिए, जैसे कि साइडबार या हेडर जोड़ना, प्रत्येक व्यक्तिगत दृश्य में सभी HTML बॉयलरप्लेट को लिखने के लिए बिना।

दृश्यों को बार-बार बढ़ाया जा सकता है - यानी पेज 3 कैन @ @extend('page2') , और पेज 2 @extend('page1')

आदेश में एक ही वाक्य रचना के लिए इस्तेमाल के रूप में उपयोग करता है का विस्तार View::make और @include , तो फ़ाइल layouts/main/page.blade.php के रूप में पहुँचा जा सकता है layouts.main.page

सभी विचारों को डेटा साझा करना

कभी-कभी आपको अपने कई विचारों में समान डेटा सेट करने की आवश्यकता होती है।

व्यू :: शेयर का उपयोग करना

// "View" is the View Facade
View::share('shareddata', $data);

इसके बाद, $data की सामग्री $shareddata नाम के तहत सभी दृश्यों में उपलब्ध होगी।

View::share आमतौर पर एक सेवा प्रदाता में कहा जाता है, या शायद एक नियंत्रक के निर्माता में, इसलिए डेटा केवल उस नियंत्रक द्वारा लौटाए गए विचारों में साझा किया जाएगा।

व्यू :: कंपोजर का उपयोग करना

व्यू कंपोज़र कॉलबैक या क्लास मेथड होते हैं जो किसी व्यू रेंडर होने पर कॉल किए जाते हैं। यदि आपके पास वह डेटा है जिसे आप हर बार उस दृश्य के लिए बाध्य होना चाहते हैं जो दृश्य प्रदान किया जाता है, तो एक दृश्य संगीतकार आपको उस तर्क को एक स्थान पर व्यवस्थित करने में मदद कर सकता है। आप चर को सीधे किसी विशिष्ट दृश्य या सभी दृश्यों में बाँध सकते हैं।

क्लोजर-आधारित संगीतकार

use Illuminate\Support\Facades\View;

// ...

View::composer('*', function ($view) {
    $view->with('somedata', $data);
});

कक्षा आधारित संगीतकार

use Illuminate\Support\Facades\View;

// ...

View::composer('*', 'App\Http\ViewComposers\SomeComposer');

View::share , सेवा प्रदाता में कंपोजर्स को पंजीकृत करना सबसे अच्छा है।

यदि संगीतकार वर्ग दृष्टिकोण के साथ जा रहा है, तो आपके पास App/Http/ViewComposers/SomeComposer.php :

use Illuminate\Contracts\View\View;

class SomeComposer
{
    public function compose(View $view)
    {
        $view->with('somedata', $data);
    }
}

ये उदाहरण संगीतकार पंजीकरण में '*' उपयोग करते हैं। यह पैरामीटर एक स्ट्रिंग है जो दृश्य नामों से मेल खाता है जिसके लिए संगीतकार को पंजीकृत करना है ( * एक वाइल्डकार्ड है)। आप सबफ़ोल्डर के अंतर्गत मार्गों के समूह के एकल दृश्य (उदाहरण के लिए 'home' ) का चयन भी कर सकते हैं (उदाहरण के लिए 'users.*' )।

मनमाना PHP कोड निष्पादित करें

हालाँकि इस तरह की चीज़ों को एक दृश्य में करना उचित नहीं होगा यदि आप सख्ती से अलग-अलग चिंताओं का इरादा रखते हैं, तो php ब्लेड निर्देश PHP कोड को निष्पादित करने का एक तरीका देता है, उदाहरण के लिए, एक चर सेट करने के लिए:

@php($varName = 'Enter content ')

(के समान:)

@php
    $varName = 'Enter content ';
@endphp

बाद में:

{{ $varName }}

परिणाम:

सामग्री दर्ज करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow