Laravel 4 - көріністегі «ішінара» көріністі қоса (Blade үлгіні пайдаланбай)

3 Ларавелде мен мұны істедім.

<?php render('partials.header'); ?>

Бұл Laravel's Blade үлгілерін пайдаланбай, «PHP» көріністерінде жасалды.

4-нұсқада бұл дегеніміз не?

Мен тырыстым

<?php @include('partials.header'); ?>

Бұл жұмыс істемейді.

Егер мен болсам

@include('partials.header')

Файлымды «.blade.php» деп сақтау керек

Пышақтың үлгісін пайдаланбастан, «ішкі көріністі» қалай қосуға болады?

12
сондықтан қазір «ішінара» PHP қосудың дереу жолы жоқ па?
қосылды автор ericbae, көзі
Егер бала жүктелетін болса, көріністі композиторды пайдаланып, ата-аналық көріністің айнымалы мәніне баланың көрінісін тағайындауға болады. Олай болмаған жағдайда, сіз пышақпен жүріп, шаблондау жүйесін қолданыңыз
қосылды автор Damien Pirsy, көзі
Мен L4-ді әлі пайдаланған жоқпын, сондықтан мен мұнда сарапшы емеспін, бірақ құжаттарды қарап, ештеңе көрмеймін. Қалай болғанда да, мен туған тілдерді() сыртқы жұмысын пайдалануды ойлаймын, бірақ сіз «әзіл-қалжың» емес жолды (яғни нүктелерді емес)
қосылды автор Damien Pirsy, көзі
@ericbae сіз таңдаған жауапты таңдай аласыз ба? :) рахмет
қосылды автор Robin Hood, көзі

7 жауаптар

Үлкенірек 4 көрінісінде көріністі қосудың әртүрлі жолдары бар. Таңдауыңыз төменде келтірілген нәтижелердің кез-келгеніне байланысты болады ...

Икемділік үшін

компиляциялау (көрсету) тиісті контроллердегі ішінара кӛріністерді және $ data [''] массивін пайдалана отырып, негізгі көрініске осы көріністерді жібере аласыз.

Көріну саны арта түсетіндіктен, бұл жансыз болуы мүмкін, бірақ, Эй, кем дегенде, көп икемділік бар :)

Мысал үшін төмендегі кодты қараңыз:

Контроллер

...

public function showMyКөрініс()
{
   /* Header partial Көрініс */
   $data['header'] = Көрініс::make('partials.header');

   /* Flexible enough for any kind of partial Көрінісs you require (e.g. a Header Menu partial Көрініс) */
   $data['header_menu'] = Көрініс::make('partials.header_menu'); 

   /* Footer partial Көрініс */
   $data['footer'] = Көрініс::make('partials.footer');

   return Көрініс::make('myКөрініс', $data);
}

...

Көрініс

You can include the partials above as follows (at any position in your Көрініс code):

<html>  
<head></head>   
<body>

<!-- include partial Көрінісs -->
<?php echo ($header) ?>  
<?php echo ($header_menu) ?>  

<div id="main-content-area"></div>  

<?php echo ($footer) ?>  

</body>  
</html>

Your partial Көрінісs will now be added to your main Көрініс.


Қарапайымдылық үшін

There's actually a much easier way than using the method above: Simply include this in the html of the Көрініс...

Көрініс

<html>  
<head></head>   
<body>

<!-- include partial Көрініс: header -->
<?php echo Көрініс::make('partials.header') ?>

   <div id="main-content-area">
   </div>

<!-- include partial Көрініс: footer -->
<?php echo Көрініс::make('partials.footer') ?>

</body>  
</html>

Make sure that the folder structure for the partials is [Көрінісs/partials/header.php] in order to provide the correct file-path to the Көрініс::make() function of Laravel.

ЕСКЕРТУ

If you try to pass the $data['page_title'] in a Контроллер, the nested Көрінісs wont receive the data.
To pass data to these nested Көрінісs you need to do it like this:

<html>  
<head></head>   
<body>

<?php
   /* Pass page title to header partial Көрініс */
   $data ['page_title'] = "My awesome website";  
   echo Көрініс::make('partials.header', $data); 
?>

<div id="main-content-area"></div>

<?php echo Көрініс::make('partials.footer') ?>

</body>  
</html>

ЕСКЕРТУ

Сұрақ: «Blade үлгіні пайдаланбастан» анық айтылған, сондықтан мен кез келген Blade шаблон кодын қамтымайтын шешімді беруге көз жеткіздім.

Іске сәт :)

23
қосылды
Осылай жасау жаман емес пе? <? PHP echo Қарау: make ('partials.footer')?> Бұрын мен мұны орындамау керек деп айтқан болатын.
қосылды автор Darius.V, көзі
Бұл нашар тәжірибе, деректерді қарау арқылы ұсыну ақылға қонымды емес.
қосылды автор Leysam Rosario, көзі
Басқа шешім үшін мына сілтемесін қараңыз.
қосылды автор Leysam Rosario, көзі
Жаңарту үшін +1!
қосылды автор PJunior, көзі
«Тақырыпты header.php деп өзгертіңіз» header.blade.php «ескертуіне қосыңыз!
қосылды автор PJunior, көзі

Сіз өзіңіздің бөліктеріңізді көзқарастарыңызға енгізе аласыз

View::make('folder.viewFile')->nest('anyname', 'folder.FileName');

Содан кейін кірістірілген көрініс файлын өзіңіздің үлгіңізден {{$ anyname}} түріне кіріп, файлдарды сіздің көзіңізге қоспай, осылайша .php файлында жұмыс істеу керек.

9
қосылды
Бұл шешім Blade шаблондарын пайдаланады (сол кездегі қызметкер қашуға тырысады) ... 0.o
қосылды автор Robin Hood, көзі

Мен осы лауазымнан қанша адам Laravel 4-ді қолданғанына сенімді емеспін, бірақ егер сіз ішінара қосуды немесе көрініс түрлерін бөлектеуге тырыссаңыз, оны @includes

мысалы, тақырып, қалта, бүйірлік тақта және т. б

астындағы partials үшін каталог жасаңыз

app/views/partials

Содан кейін ішінара жасаңыз

app/views/partials/navigation.blade.php

Содан кейін сіздің шаблон үлгісінің файлында жолды қосыңыз

@include('partials.navigation')

Мұның барлығы қажет.

** Бонустар ішінара ішінара деректерді беруге немесе ішінара ішіне кірістірілген бөліктерді қосуға болады

8
қосылды
@include ('partials.navigation', array ('foo' => 'bar')) деректерді ішінара
қосылды автор Luca, көзі

Мен бұл жауапты біраз жауапты деп білемін, бірақ мен басқа шешімдер арасында бұл шешімді көрмегендіктен, жақсы деп ойладым.

Егер сіз өзіңіздің үстіңгі деректемеңізді және төменгі колонтитулыңызды әрбір бетке қосуды қаласаңыз, оларды сүзгілердің алдында және одан кейін қосатын болар едім. Қолданбалар қалтаңызда filters.php файлына өтіңіз

App::before(function($request)
{
    echo View::make('partials.header');
});

App::after(function($request, $response)
{
    echo View::make('partials.footer');
});

Осылай жасаған кезде, оларды қосу үшін қарау файлдарында ештеңе қосудың қажеті жоқ.

5
қосылды

Көріністің ұя функциясын пайдалана аласыз

View::make('default.layout')->nest('header', 'default.header');

Деректерді үлгіге өту үшін үшінші параметрді пайдаланыңыз

View::make('default.layout')->nest('header', 'default.header', ['name' => 'John Doe', 'test' => 'It works!']);

Сіздің пікіріңіз/default/header.blade.php

<div>hey {{ $name }}! {{ $test }}</div>
3
қосылды

Мен әлі күнге дейін Ларавел үшін өте жаңа, бірақ, менің ойымша, төменде өте керемет ...

Route::get('/', function()
{
    $data['title'] = 'sample';
    return View::make('page', $data);
});

# /views/partials/header.php
# /views/partials/footer.php
View::composer('page', function($view)
{
    $view->with('header', View::make('partials.header', $view->getData()));
    $view->with('footer', View::make('partials.footer', $view->getData()));
});

See Laravel View Composers .. http://laravel.com/docs/responses#view-composers

/views/page.php

<?php echo $header; ?>
<div>CONTENT</div>
<?php echo $footer; ?>
1
қосылды
Жоғарыда көрсетілгендей, Laravel5 жоғарыда көрсетілген URL мекенжайы laravel.com/docs/4.0/responses# болады көркем композиторлар
қосылды автор itsazzad, көзі

Көріністен басқа көріністі жай ғана жаңғыртыңыз:

echo View::make('header'); //This will look for a view called header.php
0
қосылды
қай жерде екен?
қосылды автор itsazzad, көзі