728x90
참고1. https://github.com/appstract/laravel-blade-directives
참고2. https://github.com/duncan3dc/blade
blade template을 쓰다 보면, 레이아웃 내에 준비한 scripts나 styles 섹션에 각 태그를 넣어주는 일은 무척 귀찮다.
@js(), @css() 와 같이 해결하려고 시도 해 봤다.
먼저 Providers/AppServiceProvider.php 에 아래와 같이 내용을 추가한다.
public function boot()
{
Blade::directive('css', function ($css) {
return '<script type="text/javascript" src="' . $this->_assetify($css, "css", $css) . '"></script>';
});
Blade::directive('js', function ($js) {
return '<script type="text/javascript" src="' . $this->_assetify($js, "js", $js) . '"></script>';
});
}
public function stripQuote($str)
{
return str_replace("'", "", $str);
}
private function _assetify(string $file, string $type, string $path): string
{
if (in_array(substr($file, 0, 1), ["'", '"'], TRUE)) {
$file = trim($file, "'\"");
} else {
return "{{ {$file} }}";
}
if (substr($file, 0, 8) === "https://") {
return $file;
}
if (substr($file, 0, 7) === "http://") {
return $file;
}
if (substr($file, 0, 1) !== "/") {
$path = trim($path, "/");
if (strlen($path) > 0) {
$path = "/{$path}/";
} else {
$path = "/";
}
$file = $path . $file;
}
if (substr($file, (strlen($type) + 1) * -1) !== ".{$type}") {
$file .= ".{$type}";
}
return $file;
}
여기까지만 해도 사용은 가능하지만, phpstorm 에서 highlighting이 되지 않는다.
Settings > Languages & Frameworks > PHP > Blade 로 들어가, Use default settings 의 체크를 해제한다.
Directives 탭으로 넘어가 우측의 + 버튼으로 디렉티브를 추가 해 준다.
@js
Prefix: <?php echo '<script type="text/javascript" src="
Suffix: "></script>'; ?>
@css
Prefix: <?php echo '<link rel="stylesheet" type="text/css" href="
Suffix: "/>'; ?>
@js("/js/myscript.js")
잘 동작한다.
'내가 자꾸 까먹어서 쓰는 개발 이야기 > Laravel' 카테고리의 다른 글
Eloquent의 deep relationship (0) | 2020.07.10 |
---|---|
php artisan make:model 실행 시 경로 지정하기 (0) | 2020.05.26 |
사용자 Facade 만들어 phpstorm 에서 자동완성까지 (0) | 2019.06.11 |
Laravel-mix로 webpack 사용하기 (0) | 2018.10.02 |
블레이드 템플릿의 lang 지시어 보안패치 (0) | 2018.09.19 |
최근댓글