Ho bisogno di un codice dal mio controller per funzionare ogni dieci minuti. Abbastanza facile con Scheduler
e Commands
. Ma. Ho creato uno Command
, registrato con Laravel Scheduler
(in Kernel.php
) e ora non riesco a creare un'istanza dello Controller
. So che è un modo sbagliato per affrontare questo problema, ma ho solo bisogno di un test rapido. C'è un modo, badate a un modo hacky, per realizzare questo? Grazie.Laravel 5 - come eseguire un metodo di controllo da un comando Artisan?
Update # 1:
Il Command
:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Http\Controllers\StatsController;
class UpdateProfiles extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'update-profiles';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Updates profiles in database.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
StatsController::updateStats('<theProfileName>');
}
}
updateStats()
metodo StatsController.php
public static function updateStats($theProfileName) {
// the body
}
Questo restituisce un FatalErrorException
:
[Symfony\Component\Debug\Exception\FatalErrorException]
syntax error, unexpected 'if' (T_IF)
Aggiornamento # 2:
Risulta che ho avuto un errore di battitura nel metodo updateStats()
, ma la risposta da @ alexey-mezenin funziona come un fascino! E 'anche abbastanza per importare il Controller
nella Command
:
use App\Http\Controllers\StatsController;
E poi inizializzare come faresti normalmente:
public function handle() {
$statControl = new StatsController;
$statControl->updateStats('<theProfileName>');
}
È possibile associare un percorso al metodo del controller e utilizzare [questo comando] (http://stackoverflow.com/questions/28866821/call-laravel-controller-via-command-line/28868350#28868350) per eseguire il percorso del percorso. – Bogdan
Perché non farlo nel modo giusto sposta il codice che ti serve per uscire dal controller e chiamalo rispettivamente da un comando/controller. Molto più pulito di una soluzione hacky. – mstoppert
Concordo pienamente, ma quando si incontrano le cose per la prima volta e si vuole solo imparare, si utilizzano inevitabilmente soluzioni hacky. Dopo aver imparato abbastanza, capisci i concetti, li rifatti. – iSS