2016-04-09 15 views
6

मुझे हर दस मिनट चलाने के लिए मेरे नियंत्रक से कुछ कोड चाहिए। 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>'); 
} 
+0

आप नियंत्रक विधि के लिए एक मार्ग मैप कर सकते हैं और [इस आदेश] का उपयोग कर सकते हैं (http://stackoverflow.com/questions/28866821/call-laravel-controller-via-command-line/28868350#28868350) चलाने के लिए मार्ग पथ – Bogdan

+0

यह कंट्रोलर से बाहर निकलने के लिए आवश्यक कोड को सही तरीके से क्यों न करें और इसे क्रमशः कमांड/नियंत्रक से कॉल करें। एक हैकी समाधान की तुलना में बहुत साफ है। – mstoppert

+0

मैं पूरी तरह से सहमत हूं, लेकिन जब आप पहली बार सामान का सामना करते हैं और केवल सीखना चाहते हैं, तो आप अनिवार्य रूप से हैकी समाधान का उपयोग करते हैं। पर्याप्त सीखने के बाद, अवधारणाओं को समझें, आप इसे दोबारा प्रतिक्रिया देते हैं। – iSS

उत्तर

5

कोशिश यह भी Command में Controller आयात करने के लिए पर्याप्त है:

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

अपने आदेश कोड में:

echo myClass::someStaticMethod(); 
+0

स्पासिबो। मैंने कोशिश की है, लेकिन दुर्भाग्य से, यह काम नहीं किया। यह वही है जो यह लौटा: '[सिम्फनी \ घटक \ डीबग \ अपवाद \ FatalErrorException] वाक्यविन्यास त्रुटि, अप्रत्याशित' अगर '(T_IF) ' – iSS

+0

क्या आप मुझे कोड दिखा सकते हैं? –

+0

कृपया संपादन देखें, धन्यवाद। – iSS

संबंधित मुद्दे