新しい Laravel 4 でアセットをどのように管理しますか? Taylor OtwellがAsset::add
新しいものに置き換えられたようです.
私がやろうとしているのは、Laravel に CSS と JS ファイルを追加させることです。Laravel 3 ではこれを行う方法がいくつかありましたが、現在はなくなっているようです。1 つはAsset::add
で、もう 1 つは でしたHTML
。これらの代替品は何ですか?
私はヘルパーを使用します:
<script src="{{ asset('js/jquery-1.9.1.js') }}"></script>
<script src="{{ asset('js/bootstrap.min.js') }}"></script>
こちらもご覧ください
vendor/laravel/framework/src/Illuminate/Support/helpers.php
app_path()、さまざまな配列ツール、link_to_route()、link_to_action()、storage_path() など、他の多くのヘルパーも同様です。
Laravel 4 には、すぐに使えるアセット管理機能がありません。しかし、この種のことを処理するためにいくつかのパッケージが作成されています。
codeleeve/asset-pipeline (これまでのお気に入り)
jasonlewis/basset (これにはいくつかのエラーがありました)
teepluss/asset (Laravel 3 Asset::add() に最も近いが、連結や縮小は行わない)
way/guard-laravel (実行するには ruby ガード gem が必要です)
これは、特定のページにのみいくつかの .css および .js ファイルを追加する必要があるときに行った方法です。
私のブレードテンプレートでは:
<head>
<title>.....</title>
.....
@yield('head')
</head>
そして、私の特定のページブレードファイルでは:
@extends('template')
@section('head')
{{ HTML::style('css/filename.css') }}
{{ HTML::script('js/filename.js') }}
@stop
...
Basset (以前の Best Asset) はどうですか?: http://jasonlewis.me/code/basset
L4にインストールしたばかりで、まだテストは行われていませんが、有望な音です。
Laravel 3 の Asset クラスのポート。Laravel 4で動作するように作られています。
私は Laravel 3 Asset クラスのはるかに単純なバージョンを作成し、Laravel 4 で完璧に動作します。私にとって必要なのはそれだけです! コンテナーの名前を選択し、アセットを最終的な順序で追加するだけです。
Asset::container('jq_1.10')->add('js/jquery-1.10.1.min.js')->add('css/css.css');
出力の場合:
echo Asset::container('jq_1.10')->asset();
クラス:
class Asset {
public static $containers = array();
public static function container($container = 'default')
{
if ( ! isset(static::$containers[$container]))
{
static::$containers[$container] = new Asset_Container($container);
}
return static::$containers[$container];
}
}
class Asset_Container {
public $name;
public $assets = array();
public function __construct($name)
{
$this->name = $name;
}
public function add($source)
{
$type = (pathinfo($source, PATHINFO_EXTENSION) == 'css') ? 'style' : 'script';
$obj = (object)array('type' => $type,'source' => $source);
$this->assets[] = $obj;
return $this;
}
public function asset()
{
$str = '';
foreach($this->assets as $aset){
if($aset->type == 'style')$str .= HTML::style($aset->source);
else $str .= HTML::script($aset->source);
}
return $str;
}
}
または、Grunt.js を使用してアセットを管理することもできます。
Grunt は基本的に、次のような「タスク」を実行するプラグインのライブラリです。
すべて PHP から独立しています。
これらはLaravel 4には存在しません-Composerバンドルを使用してそれらを追加するという考えだと思います.
Meido は、Laravel 3 から Laravel 4 への HTML、Form、および Str クラスの「ポート」を作成しました。
アセット ポートについては知りません。ニーズに合ったものを見つけるには、Composer に既にあるバンドルを参照する必要があると思います。