2010-09-24 8 views
0

Dans Kohana 3bootstrap.php on peut définir base_url:Comment obtenir Kohana base_url dans le modèle

Kohana::init(array(
    'base_url' => '/foo/', 
)); 

Cela signifie généralement aussi déplacer les /js/, /css/ et d'autres médias que comme la base dir /foo/js/, /foo/css/. Ma question n'est pas de discuter de ce qui est bon ou mauvais.

est-il un intégré manière Kohana pour accéder au base_url à partir d'un modèle (comme dans Django vous pouvez utiliser {{ MEDIA_URL }}css/)?

Répondre

6

Vous pouvez sortir l'URL de base en utilisant URL::base:

<?php echo URL::base(); ?> 

Si vous délivrer une URL par rapport à ce que vous voulez probablement URL::site:

<?php echo URL::site('css/'); ?> 

Kohana 3 contrôleurs de modèle utilisent la vue classe pour rendre les modèles. Les vues sont des fichiers php normaux et n'ont pas de syntaxe particulière. Il suffit donc d'utiliser les balises normales <?php ... ?> comme ci-dessus. La classe View vous permet de déclarer les variables à utiliser dans cette vue avant de les rendre.

+0

Mon site est placé dans la racine du domaine et la partie de l'URL '/ index.php /' est cachée (de façon bien connue). 'URL :: base()' donne '/' et 'URL :: site()' donne '/ index.php /' - ils sont peu utiles, je dirais ... – Ivan

+0

J'ai trouvé que 'URL :: site ('myfolder', 'http'); 'fait presque ce dont j'ai besoin mais il ajoute toujours'/index.php/'qui freine tout. Ce dont j'ai besoin serait liik comme 'http: // example.com/myfolder /' mais cela me donne 'http: // example.com/index.php/myfolder /' – Ivan

+0

Ceci est dû à votre configuration du 'fichier_index' option dans votre configuration d'application/bootstrap. Voir: http://kohanaframework.org/3.0/guide/kohana/tutorials/clean-urls – Lethargy

2

Une bonne façon est que votre point de vue de la mise en page, dans la tête du code HTML que vous mettez près de la balise <title>:

<base href="<?php echo URL::base(TRUE) ?>"> 

puis, vous chargez vos actifs ainsi:

<img src="assets/images/img.jpg" alt=""> 

La balise HTML <base> permet de définir une URL de base pour tous les actifs de la page. De cette façon, vous chargez votre image située au /foo/assets/images/img.jpg sans effectuer d'appel URL::base() dans chaque balise. J'espère que ça aide.