カスタム関数をエイリアス使ってしまおうぜ。 @laravel5
以前、こんな記事を書きました。↓
これは確かに手段としてあるが、 Laravelチックではないな…と反省。
だったら もう少しLaravelチックに書こうじゃないかと。
上記記事と比べてみてください。
1. /app/lib/CostomHelper.php
ファイル名は適当で良いです。
<?php namespace app\lib; class CostomHelper { /** * Create link tag element for css * * @param string $file_name * @param bool $secure = false * @return string link_tag */ public static function asset_css($file_name, $secure = false){ if (is_array($file_name)) { $tag = ''; for ($i = 0; $i < count($file_name); $i++) { $relative_file_path = '/css/' . $file_name[$i] . '.css'; $tag .= self::make_tag($secure, 'link', $relative_file_path, ['rel' => 'stylesheet']) . PHP_EOL; } } else { $relative_file_path = '/css/' . $file_name . '.css'; $tag = self::make_tag($secure, 'link', $relative_file_path, ['rel' => 'stylesheet']); } return $tag; } /** * Create link tag element for javascript * * @param string $file_name * @param bool $secure = false * @return string script_tag */ public static function asset_js($file_name, $secure = false) { if (is_array($file_name)) { $tag = ''; for ($i = 0; $i < count($file_name); $i++) { $relative_file_path = '/js/' . $file_name[$i] . '.js'; $tag .= self::make_tag($secure, 'script', $relative_file_path, ['type' => 'text/javascript']) . PHP_EOL; } } else { $relative_file_path = '/js/' . $file_name . '.js'; $tag = self::make_tag($secure, 'script', $relative_file_path, ['type' => 'text/javascript']); } return $tag; } /** * Create link tag * * @param string $tag_header * @param string $relative_file_path * @param string $attr = ''(array) * @return string script_tag */ public static function make_tag($secure, $tag_header, $relative_file_path, $attr = '') { $file_full_name = asset($relative_file_path, $secure); $abs_file_path = public_path($relative_file_path); $timestamp = filemtime($abs_file_path); $tag_attr = ' '; if(is_array($attr)){ foreach ($attr as $key => $value) { $tag_attr .= $key . '="' . $value . '" '; } } else { $tag_attr .= $attr; } switch ($tag_header) { case 'link': $tag_file_name = ' href="' . $relative_file_path. '?' . $timestamp . '" '; $tag_end = ''; break; case 'script': $tag_file_name = ' src="' . $relative_file_path . '?' . $timestamp . '" '; $tag_end = '</' . $tag_header . '>'; break; default: $tag_file_name = ''; $tag_end = ''; break; } $tag_begin = '<' . $tag_header . $tag_file_name . trim($tag_attr) . '>'; $tag = $tag_begin . $tag_end; return $tag; } }
2. config/app.php
追記するよ
'aliases' => [ ... // Custom Function 'CostomHelper' => 'app\lib\CostomHelper', ],
こんな感じで使うよ
use 宣言しても良かったかも。
<head> <meta charset="utf-8"> <title>@yield('title')</title> <link rel="stylesheet" href="/assets/css/style.css"> {!! App\lib\CostomHelper::asset_css(['app', 'semantic.min']) !! {!! App\lib\CostomHelper::asset_js(['jquery.min', 'semantic.min', 'app']) !!} </head>