2017-10-13 5 views
0

Fondamentalement, je veux @extend un modèle de lame seulement s'il existe, et sinon @extend un modèle différent. Il y a quelques réponses de débordement de pile concernant l'utilisation des blocs @if @endif, mais cela ne fonctionne que si vous êtes @including un fichier, pas @extending. Idéalement quelque chose comme ça, mais ça ne fonctionne pas:Comment EXTENDER un modèle de lame uniquement s'il existe?

@if(some_condition == true) 
    @extends('one') 
@else 
    @extends('two') 
@endif 

Si la seule façon est d'utiliser les directives lame, pourriez-vous s'il vous plaît donner un exemple? Je vous remercie!

+1

Vous pouvez vérifier si le fichier existe en utilisant php. 'file_exists ($ filename)'. Je ne sais pas s'il existe une façon de vérifier Laravel –

+0

J'ai fait quelque chose de similaire moi-même mais plutôt que d'utiliser @extends, j'ai dû utiliser '@include ('page')' et puis dans le fichier de page il a tenu @extends. – Option

Répondre

1

Essayez de le faire comme ceci:

@extends($somecondition == true ? 'one' : 'two') 
+0

Fonctionne comme un charme - merci! –

0
@if(file_exists('path to file one')) 
    @extends('one') 
@else 
    @extends('two') 
@endif 
0

vous pouvez utiliser view:exists

@if(View::exists('path.to.view.one')) 
    @extends('one') 
@else 
    @extends('two') 
@endif 
0

vous pouvez utiliser le conditionnel pour définir le nom de la vue que vous voulez charger et puis étendez-le simplement, par exemple:

@php 

$view = ''; 

if (some_condition == true) { 
    $view = 'one'; 
} else { 
     $view = 'two'; 
} 

@endphp 

... 

@extends($view) 

plus d'info

https://laravel.com/docs/5.5/blade#php

0

Vous pouvez utiliser View::exists

@if (View::exists('one')) 
    @extends('one') 
@else 
    @extends('two') 
@endif 

ou

file_exists() et pour obtenir le chemin utilisation resource_path() ce,

@if (file_exists(resource_path('views/one.blade.php'))) 
    @extends('one') 
@else 
    @extends('two') 
@endif 

Vous pouvez essayer cela, dans mon cas cela fonctionne .. Voir les docs dans Laravel - https://laravel.com/docs/5.5/views