2016-06-24 4 views
1

Ich stecke in einer Situation fest, in der ich versuche, die Ausgabe einer Komponente in der Ansichtsform als Dropdown anzuzeigen. Ich kann das Modell nicht verwenden, um die Daten aus der Komponentenausgabe zu speichern und sie in der Ansicht anzuzeigen. Dies führt zu einem enormen Datenspeicher und kann die Anwendungsverarbeitung verlangsamen. Die einzige verbleibende Option besteht darin, diese Komponentenausgabe direkt in der Ansicht zu verwenden.Ist es richtig, eine Komponentenfunktion oder ihre Ausgabe in View-Form in yii2 aufzurufen?

Nun, ich bin verwirrt, wenn ich diese Ausgabe in Controller anrufen sollte und von der Steuerung ich die Controller-Methode in ähnlicher Ansicht wie dies nenne: http://www.yiiframework.com/forum/index.php/topic/63169-way-to-call-controller-method-in-view-yii2/

Der andere Weg ist JS in Frontend zu verwenden und die Komponenten-Ausgang verwenden dort in der Ansicht gezeigt. Nicht sicher, ob dies auch ein guter Weg ist. Was wird der richtige Weg sein?

+0

gefunden, dass Widgets http://www.yiiframework.com/doc-2.0/guide-structure-widgets.html der beste Weg zu gehen dafür mit wiederverwendbarem Code im Blick. – user2075687

Antwort

1

Sie können Komponente in Ihrem Ergebnis Ansicht verwenden.

Ich gebe Ihnen eine Exapmle, um Ländercode von Komponente zu bekommen und es in Model zu speichern.

Ex .Funktion in Komponente.

public static function getDialCode() 
{ 
    return array(
    "+91"=>"India (+91)", 
    "+62"=>"Indonesia (+62)", 
    "+98"=>"Iran (+98)", 
    "+39"=>"Italy (+39)", 
); 
} 

Funktion in Sicht für Dropdown-Liste verwendet

<?= $form->field($model, 'country_code')->dropDownList(Yii::$app->mycomponent->getDialcode(),['prompt'=>'Select']) ?> 
// I registered component as mycomponent 
+0

Dies ist auch eine Möglichkeit, aber ich fand eine elegantere Möglichkeit, Widgets zu erstellen, um die Komponentenausgabe zu handhaben und sie in der Ansicht anzuzeigen. – user2075687

Verwandte Themen