2014-12-25 5 views
11

मैं Yii2 में एक रेस्ट एपीआई है, और Yii सभी कार्यों को उत्पन्न करता हैYii2 बाकी ActiveController में ओवरराइड सामान्य बनाने कार्रवाई

देखें/अपडेट/बनाएँ/हटाना

मैं createMethode एट garde की comportement बदलना चाहते हैं अन्य विधियों, इसलिए मैं क्लास कंट्रोलर का उपयोग नहीं कर सकता, मुझे कक्षा ActiveController

का उपयोग करना चाहिए, लेकिन मैं चाहता हूं कि कक्षा एक ही काम करे, मुझे बनाने से पहले कुछ क्रियाएं जोड़ने और कुछ क्रियाएं करने की आवश्यकता है। इसलिए मुझे कार्रवाई को ओवरराइड करने की आवश्यकता है

मैं इसे कैसे कर सकता हूं?

+0

जहां सवाल है? –

+2

कैसे मैं यह कर सकता – Touhami

उत्तर

30

आप क्या कर सकते हैं निम्नलिखित

class CountryController extends ActiveController 
{ 
    public $modelClass = 'common\models\Country'; 

    public function actions() 
    { 
     $actions = parent::actions(); 
     unset($actions['create']); 
     return $actions; 
    } 

    public function actionCreate(){ 
     // implement here your code 

    } 

} 
+0

वास्तव में विधि का नाम createAction होना चाहिए actionCreate नहीं सार्वजनिक समारोह createAction() { // यहाँ लागू अपने कोड } – phpniki

+8

@phpniki आप गलत हैं – Shaeldon

-1

या आप इस कदम का पालन करके कर सकते हैं:

public function actions() { 
    $actions = parent::actions(); 
    // will overriding return data on the index action 
    $actions['index']['prepareDataProvider'] = [new app/models/Post(), 'getAllPost']; 
    return $actions; 
}