मुझे हर दस मिनट चलाने के लिए मेरे नियंत्रक से कुछ कोड चाहिए। Scheduler
और Commands
के साथ पर्याप्त आसान है। परंतु। मैंने Command
बनाया है, इसे Laravel Scheduler
(Kernel.php
में) के साथ पंजीकृत किया है और अब मैं Controller
को तुरंत चालू करने में असमर्थ हूं। मुझे पता है कि इस समस्या से निपटने का यह गलत तरीका है, लेकिन मुझे बस एक त्वरित परीक्षण की आवश्यकता है। क्या यह कोई तरीका है, इसे पूरा करने के लिए आपको एक हैकी तरीका है? धन्यवाद।लार्वेल 5 - एक आर्टिसन कमांड से नियंत्रक विधि कैसे चलाएं?
# 1 अद्यतन:
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()
StatsController.php
public static function updateStats($theProfileName) {
// the body
}
इस में विधि देता है एक FatalErrorException
:
[Symfony\Component\Debug\Exception\FatalErrorException]
syntax error, unexpected 'if' (T_IF)
# अद्यतन 2:
बाहर कर देता है कि मैं updateStats()
विधि में एक टाइपो लिया है, लेकिन @ एलेक्सी-mezenin द्वारा जवाब एक आकर्षण की तरह काम करता है!
use App\Http\Controllers\StatsController;
और फिर से प्रारंभ यह के रूप में आप आमतौर पर करते हैं:: अपने आदेश कोड और उपयोग विधि स्थिर में use Full\Path\To\Your\Controller;
उपयोग करने के लिए
public function handle() {
$statControl = new StatsController;
$statControl->updateStats('<theProfileName>');
}
आप नियंत्रक विधि के लिए एक मार्ग मैप कर सकते हैं और [इस आदेश] का उपयोग कर सकते हैं (http://stackoverflow.com/questions/28866821/call-laravel-controller-via-command-line/28868350#28868350) चलाने के लिए मार्ग पथ – Bogdan
यह कंट्रोलर से बाहर निकलने के लिए आवश्यक कोड को सही तरीके से क्यों न करें और इसे क्रमशः कमांड/नियंत्रक से कॉल करें। एक हैकी समाधान की तुलना में बहुत साफ है। – mstoppert
मैं पूरी तरह से सहमत हूं, लेकिन जब आप पहली बार सामान का सामना करते हैं और केवल सीखना चाहते हैं, तो आप अनिवार्य रूप से हैकी समाधान का उपयोग करते हैं। पर्याप्त सीखने के बाद, अवधारणाओं को समझें, आप इसे दोबारा प्रतिक्रिया देते हैं। – iSS