Laravel 5.5 프로젝트의 모든 렌더링 된보기에 내용을 추가 할 수있는 방법이 있습니까? 예를 들어 실제 프로젝트 코드를 수정하지 않고도 모든 렌더링 된 뷰에 JavaScript 코드를 추가하는 하나의 Composer 패키지가 필요합니다.Laravel은 렌더링 된 모든보기에 내용을 추가합니다.
이제는 패키지로 뷰를 만들고이를 레이아웃 헤더에 포함시켜 구현했지만, 수동 포함없이이 방법을 사용할 수 있다면 더 좋을 것입니다.
Laravel 5.5 프로젝트의 모든 렌더링 된보기에 내용을 추가 할 수있는 방법이 있습니까? 예를 들어 실제 프로젝트 코드를 수정하지 않고도 모든 렌더링 된 뷰에 JavaScript 코드를 추가하는 하나의 Composer 패키지가 필요합니다.Laravel은 렌더링 된 모든보기에 내용을 추가합니다.
이제는 패키지로 뷰를 만들고이를 레이아웃 헤더에 포함시켜 구현했지만, 수동 포함없이이 방법을 사용할 수 있다면 더 좋을 것입니다.
미들웨어를 사용할 수 있습니다. 테스트를 실행할 때이 코드는 HTML에서 </head>
하기 전에 코드의 추가 조각을 추가하면, 예를 들어 원하는 코드의 조각을 추가 응답을 수정할 수 있습니다
public function handle($request, Closure $next, $guard = null)
{
/** @var Response $response */
$response = $next($request);
if ($response instanceof Response && app()->runningUnitTests() &&
str_contains($response->headers->get('Content-Type'), 'text/html')) {
$content = $response->getContent();
if (($head = mb_strpos($content, '</head>')) !== false) {
$response->setContent(mb_substr($content, 0, $head) .
'<style>' . $this->config->get('laravel_test_css.style') . '</style>' .
mb_substr($content, $head));
}
}
return $response;
}
(이 내 미들웨어의 코드 조각 - 전체 파일 - https://github.com/mnabialek/laravel-test-css/blob/master/src/Middleware/LaravelTestCss.php) 당신은 전 세계적으로이 미들웨어를 적용 할 경우
이 같은 일을 할 수 있습니다 : 내가 아는
app('Illuminate\Contracts\Http\Kernel')->pushMiddleware(CustomMiddleware::class);
경우에 따라 응용 프로그램에서 렌더링 한 모든보기와 데이터를 공유해야 할 수도 있습니다. 뷰 파사드의 공유 방법을 사용하면됩니다. 일반적으로 서비스 공급자의 부팅 방법 내에서 공유 할 호출을해야합니다. 당신은 그들에게
https://laravel.com/docs/5.5/views#sharing-data-with-all-views
을 수용하기 위해 별도의 서비스 제공을 AppServiceProvider
에 추가하거나 생성하는 무료 또는 당신은보기 작곡가 사용할 수 있습니다
작곡가 방법은 또한
*
을 허용을 문자를 와일드 카드로 사용하여 모든보기에 작곡가를 추가 할 수 있습니다.
View::composer('*', function ($view) {
//
});
단순히 변수로만 플레이하지 않기 때문에 그렇게 간단하지 않습니다. 모든 렌더링 된보기에 내용을 포함하고 싶습니다. – lingo
@ HTML/JS/CSS 인 경우 기본 레이아웃 블레이드 파일에 추가 할 수 있습니다. BTW, 내가 본 모든 고품질 패키지는 작곡가를 사용합니다. 그래서, 예를 들어 동적 JS를 렌더링 할 수 있습니다. –
레이아웃에 수동으로 포함해야하는 경우 자동화 된 구현에 대해 이야기하는 것이 아닙니다. 작곡가는 다른 것들을위한 것입니다. 나는 middlewares를 사용하여이 작업을 수행했습니다. 다른 답변도 읽어주십시오. – lingo
을 [debugbar] (https://github.com/barryvdh/laravel-debugbar)는 현재 때문에이 동작을 구현 네, 가능합니다. – milo526