Laravel: Fonctions d'appel définies dans base_controller from view
En utilisant le framework laravel, comment puis-je appeler une fonction définie dans base_controller, dans une vue. Pour exacmple:
class Base_Controller extends Controller {
public static function format_something()
{
return something;
}
}
Comment puis-je appeler format_something() dans un fichier de vue?
Généralement l'erreur que je reçois ressemble à quelque chose comme ceci:
Méthode [link_to_action] n'est pas définie sur la classe de la Vue.
Probablement une question stupide, mais merci d'avance!
Modifier
D'accord! D'abord le bon endroit pour faire quelque chose comme ce qui est dans le dossier libraries.
Deuxièmement, le problème est que votre classe ne peut pas avoir des traits de soulignement.
Donc dans l'application/les bibliothèques j'ai fait fichier AppHelper.php avec la classe
class AppHelper {
public static function format_something()
{
return something;
}
}
Et peut l'appeler comme:
$formated = AppHelper::format_something;
Merci pour l'aide et le bon forum trouver Boofus McGoofus.
source d'informationauteur Jim
Vous devez vous connecter pour publier un commentaire.
Cette réponse a été écrit pour Laravel 3. Pour Laravel 4 et après, Lajdák de Marek réponse à l'aide du Compositeur de l'autochargeur est mieux.
Fonctions comme
format_something()
n'appartiennent pas dans le contrôleur. Le contrôleur doit être juste au sujet de la collecte de données provenant de diverses sources et en passant à la vue. C'est le travail est principalement de routage.J'ai créé un dossier appelé "aides" dans le dossier de l'application pour tous mes petits helpery fonctions. Assurez-vous que tous mes contrôleurs, les vues, et les modèles ont accès à eux, j'ai inclus les éléments suivants dans mon
start.php
fichier:Je soupçonne qu'il y a une meilleure façon de le faire, mais jusqu'à présent, il a travaillé pour moi.
Pour moi est de travail:
De créer un répertoire "aides" ou quoi que ce soit et fichier:
Ajouter un chemin d'accès au compositeur.json
Exécuter: (recharger l'autoload)
Maintenant, vous pouvez appeler le:
Vous pouvez vous inspirez-vous de Laravel cadre lui-même.
Je vais prendre l'exemple d'un module de formatage et de se référer à
url
aide dans Laravel Cadre.Commencez par créer votre propre
helpers.php
fichier:Et ajouter à votre
composer.json
fichier:Exécutez cette commande pour recréer l'autoload fichier php:
Créer votre prestataire de services
app/Providers/FormatterServiceProvider.php
:Registre votre fournisseur de services. Laravel cadre invoque
register
méthode, mais vous avez seulement besoin de l'ajouter à votre application fichier configconfig/app.php
:Enfin, créez votre réel générateur de classe
app/Helpers/FormatGenerator.php
Vous pouvez éventuellement créer une Façade
app/Facade/Formatter.php
pour être en mesure de faireFormatter::format_that($text)
:Vous pourriez vous demander:
Formatter::format_that($text)
au lieu deapp('formatter')->format_that($text)
. Sucre syntaxe vraiment.Request
ou si vous voulez construire un objet complexe, le prestataire prendra en charge pour vous les rendre disponibles dans votre$app
objet.