Comment gérez-vous les actifs dans le nouveau Laravel 4? Il semblerait que Taylor Otwell ait remplacé Asset::add
par quelque chose de nouveau.
Ce que j'essaie de faire est de demander à Laravel d'ajouter mes fichiers CSS et JS. Il y avait plusieurs façons de faire cela dans Laravel 3, mais elles semblent avoir disparu maintenant. L'un était Asset::add
et l'autre HTML
. Quels sont les remplaçants pour ceux-ci?
Dans Laravel 4, vous pouvez utiliser la classe HTML
. Elle est incluse par défaut dans le package Laravel Framework:
Feuille de style:
{{ HTML::style('css/style.css') }}
Javascript:
{{ HTML::script('js/default.js') }}
J'utilise l'assistant:
<script src="{{ asset('js/jquery-1.9.1.js') }}"></script>
<script src="{{ asset('js/bootstrap.min.js') }}"></script>
Voir également
vendor/laravel/framework/src/Illuminate/Support/helpers.php
De nombreux autres assistants aussi, par exemple app_path (), divers outils de tableau, link_to_route (), link_to_action (), storage_path (), etc.
Laravel 4 n'a pas de gestion des actifs prête à l'emploi. Mais certains paquets ont été créés pour gérer ce genre de choses.
codesleeve/asset-pipeline (mon préféré jusqu'à présent)
jasonlewis/basset (eu quelques erreurs avec cela)
teepluss/asset (le plus proche de Laravel 3 Asset :: add () mais ne fait pas de concaténation ou de minification)
way/guard-laravel (nécessite la gemme de garde Ruby pour courir)
C'est ce que j'ai fait lorsque j'ai eu besoin d'ajouter des fichiers .css et .js uniquement à une page spécifique:
Dans mon gabarit de lame:
<head>
<title>.....</title>
.....
@yield('head')
</head>
Et dans mon fichier de lame de page spécifique:
@extends('template')
@section('head')
{{ HTML::style('css/filename.css') }}
{{ HTML::script('js/filename.js') }}
@stop
...
Qu'en est-il de Basset (ex Best Asset) ?: http://jasonlewis.me/code/basset
Je viens de l'installer sur L4, toujours pas de test, mais prometteur.
Un port de la classe d'actifs de Laravel 3. Fait pour travailler avec Laravel 4.
J'ai conçu une version beaucoup plus simple de Laravel 3 Asset Class et fonctionne parfaitement dans Laravel 4. Pour moi, c'est tout ce dont j'ai besoin! Il suffit de choisir un nom pour le conteneur et d’ajouter les actifs dans l’ordre final:
Asset::container('jq_1.10')->add('js/jquery-1.10.1.min.js')->add('css/css.css');
Pour la sortie:
echo Asset::container('jq_1.10')->asset();
La classe:
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;
}
}
Ce sera une erreur si vous utilisez:
{{ HTML::style('assets/css/style.css') }}
Parce que Laravel change les alias de base Laravel de HTML
en Html
Si vous avez une erreur, utilisez le code ci-dessous.
Style:
{{ Html::style('assets/css/style.css') }}
Scénario:
{{ Html::script('assets/css/style.css') }}
Je sais que la réponse a déjà été donnée, mais le paquet d'actifs d'Orchestra est identique à la bibliothèque d'actifs Laravel 3 utilisée. Aurait même pu être le même paquet. C'est ce que j'utilise.
Je viens d'utiliser:
{{ asset('js/jquery.min.js') }}
Ce qui fonctionne pour tous les types de fichiers. Remarque: il ne renvoie que l'URL, mais pas les balises HTML.
Celles-ci n’existent pas dans Laravel 4 - Je pense que l’idée est d’utiliser des bundles Composer pour les ajouter.
Meido a créé un 'portage' de classes HTML, Form et Str de Laravel 3 à Laravel 4.
Je ne connais pas de port Asset. Je pense que vous devriez consulter les bundles déjà présents sur Composer pour en trouver un qui répond à vos besoins.
Vous pouvez également utiliser Grunt.js pour gérer vos actifs.
Grunt est essentiellement une bibliothèque de plugins exécutant des "tâches" telles que:
tous indépendants de PHP.