2016-11-12 4 views
1

В настоящее время я работаю над пользовательской CMS для Laravel, где мне нужно получить все доступные разделы определенного вида блейдов. Эти разделы будут отображаться в форме, где пользователь может заполнить их контентом.Laravel 5.3 Blade - Получить доступные разделы

Допустим, у меня есть этот вид:

// view.blade.php 
@section ('left_column') 

@endsection 

@section ('right_column') 

@endsection 

Я бы хорошо, если я могу получить эти разделы в какой-то массив и сделать их в форме. Кто-нибудь знает, что это возможно с помощью существующих методов? Я не мог найти полезные методы в файлах Laravel.

Если нет, я напишу собственный метод (или какой-либо вид), чтобы получить эти разделы и опубликовать его в качестве ответа.

+0

Хорошо, я обнаружил ViewFactory, который генерирует представление и имеет метод с именем 'getSections'. Однако, когда создается представление, оно сбрасывает некоторые переменные в конце, как массив разделов. –

ответ

0

Решение может быть как:

public function get_view_sections ($view) // $view should be like page.index 
{ 

    # Create file name and path 
    # 
    $file_name = preg_replace('/\./', '/', $view).'.blade.php'; 

    $path = resource_path('views/'.$file_name); 


    # Get file content 
    # 
    $file = File::get($path); 


    # Get sections 
    # 
    $matches = []; 

    preg_match_all('/(?<=\@section\(\').*?(?=\'\))/', $file, $matches); 


    return $matches[0]; 

} 

Это вернет что-то вроде:

[ 
    'left_column', 
    'right_column' 
] 

Edit

Изменено: preg_match к preg_match_all

Изменено: return $matches до return $matches[0]