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>');
}
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
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
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