в Laravel 5 Мне нужно изменить содержимое представления во время выполнения перед компиляцией, добавив эту строку: "@extends (foo)"
note: изменение содержимого файла не является параметром
поэтому процесс будет чем-то вроде (каждый раз, когда вызывается представление)
- получение содержимого представления
- отредактируйте содержимое представления, добавив ключевое слово @extends (foo)
- скомпилировать (визуализировать) представление
Я пробовал использовать viewcomposer и промежуточное программное обеспечение без везения
здесь мой поставщик услуг для композитора:
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
public function boot()
{
View::composer('pages/*', function ($view) {
// i want to do the following:
// 1- find all view under directory resources/views/pages
// 2- then add the following blade command "@extends(foo)" at the beginning of the view before compile
});
}
public function register()
{
//
}
}
и вот моя попытка промежуточного ПО (в промежуточном программном обеспечении я смог изменить содержимое представления после компиляции:()
<?php
namespace App\Http\Middleware;
use Closure;
class ViewMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
if (!method_exists($response,'content')) {
return $response;
}
$content = "@extends('layouts.app')".$response->content();
$response->setContent($content);
return $response;
}
}
Спасибо
Обновление: что мне нужно выполнить, - это расширение представлений с помощью макетов на основе их родительских каталогов.
например, каталог my view имеет следующую структуру
Мне нужно представление "controlpanel.blade.php", чтобы иметь макет "layout/admin.blade.php", потому что его родительская папка называется "admin"
-view
|--pages
|--admin
|--controlpanel.blade.php
|--layouts
|--admin.blade.php