Chiamare un metodo da un controller all’interno di un altro

È possibile chiamare un metodo da un controller all’interno di un altro controller di Laravel 5 (a prescindere dal metodo http utilizzato per accedere a ogni metodo)?

  • L4 tecnica stackoverflow.com/questions/15205239/… probabilmente continuerà a lavorare.
  • È certo che in qualche modo potrebbe farlo, ma se sei in una situazione in cui si hanno a che fare, che è un grande codice odore! Estrarre le funzionalità di cui avete bisogno in una classe separata, e quindi di inserire nel vostro controller.
  • Questo è un grande no-no! Si dovrebbe rifrattore a creare una classe per questo scopo, o di una classe astratta e di estendere a tutti i controller da esso
  • Ho’f è possibile, mi piacerebbe mettere qualsiasi funzione, è necessario chiamare in un tratto e l’uso che tratto nel tuo controller che ne hanno bisogno.
InformationsquelleAutor Paulo Coghi | 2015-04-20



2 Replies
  1. 18

    Questo è come l’ho fatto. Utilizzare il use parola chiave per rendere il OtherController disponibili. Quindi è possibile chiamare un metodo da che classe, su istanza.

    <?php namespace App\Http\Controllers;
    
    use App\Http\Controllers\OtherController;
    
    class MyController extends Controller {
    
        public function __construct()
        {
            //Calling a method that is from the OtherController
            $result = (new OtherController)->method();
        }
    }

    Di controllare anche il concetto di Comando in Laravel. Si potrebbe dare più flessibilità rispetto al metodo di cui sopra.

    • Questo è quello che ho pensato di fare, ma chiedo come passare Inputs?
  2. 0
    use App\Http\Controllers\TargetsController;
    
    //this controller contains a function to call
    class OrganizationController extends Controller {
        public function createHolidays() {
            //first create the reference of this controller
            $b = new TargetsController();
            $mob = 9898989898;
            $msg = "i am ready to send a msg";
    
            //parameter will be same 
            $result = $b->mytesting($msg, $mob);
            log::info('my testing function call with return value' . $result);
        }
    }
    
    //this controller calls it
    class TargetsController extends Controller {
        public function mytesting($msg, $mob) {
            log::info('my testing function call');
            log::info('my mob:-' . $mob . 'my msg:-' . $msg);
            $a = 10;
            return $a;
        }
    }
    • Questo crea solo un altro controller e chiama il suo metodo. Anche la direzione della chiamata è di invertire anche a ciò che è scritto nei commenti

Lascia un commento