web-dev-qa-db-fra.com

Comment appeler une fonction de contrôleur dans une vue dans laravel 5

Dans laravel 4, je viens d'utiliser une fonction 

$varbl = App::make("ControllerName")->FunctionName($params);

appeler une fonction de contrôleur depuis un modèle mon balde (page de visualisation) . Maintenant, je me sers de Laravel 5 pour faire un nouveau projet et j’ai essayé cette méthode pour appeler une fonction de contrôleur à partir de mon modèle de lame. montrant quelques erreurs .. Y at-il une méthode pour appeler une fonction de contrôleur à partir d’une page de vue dans Laravel 5?

8
Vishal

Si vous avez une fonction utilisée à plusieurs endroits, vous devez la définir dans le fichier helpers. Pour ce faire, créez-en une dans le dossier app/Http/Helpers et nommez-la helpers.php. Mentionnez ce fichier dans le bloc autorun de votre composer.json de la manière suivante: 

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Http/Helpers/helpers.php"
    ]
},

lancez composer dump-autoload, puis vous pouvez appeler cette fonction de n’importe où, en l’utilisant comme vue ou modèle du contrôleur.

ou si vous n'avez pas besoin de mettre les aides. Vous pouvez simplement l'appeler depuis son contrôleur. Il suffit de faire un static function. Créer.

public static function funtion_name($args) {}

Appel.

\App\Http\Controllers\ControllerName::function_name($args)

Si vous n'aimez pas le très long code, vous pouvez simplement le faire 

ControllerName::function_name($args)

mais n'oubliez pas de l'appeler en haut de la page d'affichage.

use \App\Http\Controllers\ControllerName;
18
Khan Shahrukh

Essayez ceci à votre avis: 

{{ ControllerName::Functionname($params); }}

OR

<?php echo ControllerName::Functionname($params);?>

Reportez-vous à ceci: http://laravel.io/forum/03-06-2014- what-is-the-proper-way-toc-call-controllers-from-the-view?page=1

36
Mr. Engineer

Dans laravel 5, vous pouvez le faire comme si

A votre avis:

<?php use App\Http\Controllers\ControllerName;
echo ControllerName::functionName(); ?>

FunctionName devrait avoir le mot clé 'static' par exemple

Fonction du contrôleur:

public static function functionName() {
return "Hello World!";
}
10
Acheme Paul

J'aime et privilégie Khan Shahrukh way, il est préférable de créer un fichier helpers avec toutes vos fonctions, puis de l'ajouter à votre fichier composer.json: 

"autoload": {
    "files": [
        "app/Http/Helpers/helpers.php"
    ]
},

Vous pouvez sélectionner le chemin qui vous convient, puis composez dump-autoload pour l'inclure dans le nouveau fichier.

Pour des raisons de convivialité et de propreté, vous pourrez ensuite appeler votre fonction dans n’importe quel élément de projet de fichier de vue OR: Contrôleur, Modèle.

Si vous avez décidé d'utiliser la méthode statique public, n'oubliez pas d'ajouter cette ligne tout en haut de votre vue: 

use \App\Http\Controllers\ControllerName;
0
Murad

Pour accéder à une méthode d'un contrôleur à partir d'une page de vue, vous devez indiquer le chemin complet de ce contrôleur dans votre page de lame.

use App\Http\Controllers\AdminAfterAuth;
$admin_dtls = AdminAfterAuth::globAdmin();

Ici, AdminAfterAuth est le nom de la classe du contrôleur et globAdmin est le nom de la méthode.

Maintenant, dans votre contrôleur, déclarez la méthode de manière statique.

public static function globAdmin(){
 $admin_val = AdminLogin::where('id',session('admin_id'))->get();
 return $admin_val;
 }
0
Yesuus Yesuus

Les méthodes des contrôleurs ne doivent pas être appelées à partir de la vue. La meilleure option consiste à appeler la méthode à partir de la méthode qui renvoie l'objet view, qui contient la sortie que vous pouvez ensuite afficher en écho dans la vue.

    public function bar() {
        $foo = $this->foo();
        return view( 'my.view', compact( 'foo' ) );
    }

    protected method foo()
    {
        return 'foobar';
    }

deuxième option pour ajouter un fichier helpers au fichier compose.json

"autoload": {
    "files": [
        "app/helpers.php"
    ]
},

dump votre autoload et vous pouvez appeler ces fonctions de n’importe où dans votre application

0
Luke Snowden

Vous pouvez réellement appeler une classe, une classe d'assistance ou toute classe déclarée dans votre modèle de lame, mais en la plaçant dans le tableau d'alias de votre app.php dans le dossier config 

        'Helper' =>   App\Http\Helpers\Helper::class,

En utilisant Helper comme alias, vous pouvez le référencer dans votre modèle de lame, exemple ci-dessous:

        {{Helper::formatDateToAgo ($notification->created_at)}}                                                
0
Seyi Daniels