2016-04-09 26 views
6

Denetleyicimden her on dakikada bir çalışmak için kodlara ihtiyacım var. Scheduler ve Commands ile yeterince kolay. Fakat. Ben bir Command oluşturdum, Laravel Scheduler (Kernel.php içinde) kaydedildi ve şimdi Controller başlatılamıyor. Bu soruna yaklaşmanın yanlış bir yol olduğunu biliyorum, ama hızlı bir test yapmam gerekiyordu. Bunu başarmak için bir yol var mı? Teşekkür ederim.Laravel 5 - Bir Artisan Komutanından bir Denetleyici metodu nasıl çalıştırılır?

Güncelleme # 1:

Command:

[Symfony\Component\Debug\Exception\FatalErrorException] 
syntax error, unexpected 'if' (T_IF) 
0123:

<?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() yöntem

public static function updateStats($theProfileName) { 
    // the body 
} 

Bu StatsController.php bir FatalErrorException döndürür

Güncelleme # 2:

ben updateStats() yönteminde bir yazım hatası yaşadım çıkıyor, ama @ alexey-mezenin tarafından cevap bir cazibe gibi çalışır! normalde yapacağını olarak

use App\Http\Controllers\StatsController; 

Ve sonra başlatmak: statik komuta kodu ve kullanım yönteminde use Full\Path\To\Your\Controller; kullanmak

public function handle() { 
    $statControl  = new StatsController; 
    $statControl->updateStats('<theProfileName>'); 
} 
+0

Denetleyici yöntemine bir rota eşleştirebilir ve çalıştırmak için [bu komut] 'u kullanabilirsiniz (http://stackoverflow.com/questions/28866821/call-laravel-controller-via-command-line/28868350#28868350). rota yolu – Bogdan

+0

Neden denetleyiciden çıkmak ve sırayla bir komut/denetleyiciden aramak için gereken kodu doğru şekilde kullanmayın. Hayalet bir çözümden çok daha temiz. – mstoppert

+0

Tamamen aynı fikirdeyim, ama ilk kez bir şeyler ile karşılaştığınızda ve sadece öğrenmek istiyorsanız, kaçınılmaz olarak hacky çözümlerini kullanıyorsunuz. Yeteriyi öğrendikten sonra, kavramları anla, tekrar oku. – iSS

cevap

5

deneyin Command içine Controller ithal etmek de yeterlidir: komut kodu

public static function someStaticMethod() 
{ 
    return 'Hello'; 
} 

:

echo myClass::someStaticMethod(); 
+0

Spasibo. Denedim ama maalesef işe yaramadı. Geri döndüğü şudur: '[Symfony \ Component \ Debug \ Exception \ FatalErrorException] sözdizimi hatası, beklenmeyen 'if' (T_IF)' – iSS

+0

Kodu bana gösterebilir misiniz? –

+0

Lütfen düzenlemeye bakın, teşekkürler. – iSS

İlgili konular