PHP-Entwicklungsframework Yii Framework-Tutorial (10) UI-Komponenten, benutzerdefinierte Komponenten

黄舟
Freigeben: 2023-03-05 07:30:01
Original
1164 Leute haben es durchsucht

Bevor wir die integrierten UI-Komponenten von Yii vorstellen, stellen wir zunächst vor, wie Komponenten angepasst werden. Dies hilft auch dabei, die Verwendung von CWidget zu verstehen, indem die Methoden init() und run() von CWidget überladen werden.

class MyWidget extends CWidget{public function init(){// 此方法会被 CController::beginWidget() 调用}
public function run(){// 此方法会被 CController::endWidget() 调用}}
Nach dem Login kopieren

In diesem Beispiel wird die UI-Komponente „RangeInputField“ für die Wertebereichseingabe durch Erweiterung von CInputWidget definiert, die es dem Benutzer ermöglicht, zwei Zahlen einzugeben, um einen Wertebereich zu definieren. CInputWidget unterstützt die Verwendung von CModel oder die direkte Verwendung von Variablen, und RangeInputField behält diese Tradition ebenfalls bei.

RangeInputField definiert drei Sätze von Eigenschaften.

$attributeFrom und $attributeTo werden in CModel verwendet. Mit der activeXXX-Methode von CHtml kann activeXXX automatisch Textfeldbeschriftungen und Textfelder generieren.

Attribute $nameFrom, $nameTo, $valueFrom, $valueTo. Programmierer können die Beschriftung des Textfelds selbst definieren.

Gemäß der Standardverzeichnisstruktur der Yii-Anwendung wird das neu erstellte RangeInputField im Verzeichnis protected/components abgelegt, also erstellen Sie protected/components/RangeInputField.php

class RangeInputField extends CInputWidget{public $attributeFrom;public $attributeTo;
public $nameFrom;public $nameTo;
public $valueFrom;public $valueTo;
function run(){if($this->hasModel()){
echo CHtml::activeTextField($this->model,
$this->attributeFrom);echo ' -> ';
echo CHtml::activeTextField($this->model,
$this->attributeTo);}else{echo CHtml::textField($this->nameFrom,$this->valueFrom);
echo ' -> ';echo CHtml::textField($this->nameTo,$this->valueTo);}}
/*** @return boolean whether this widget
* is associated with a data model.*/
protected function hasModel(){return $this->model instanceof CModel&& 
$this->attributeFrom!==null&& $this->attributeTo!==null;}}
Nach dem Login kopieren

Dies ist Angepasst Eine neue UI-Komponente, RangeInputField, überlädt nur die Ausführungsmethode und verwendet die Init-Methode in ihrer übergeordneten Klasse.

Jetzt können Sie diese neu erstellte benutzerdefinierte UI-Komponente RangeInputField testen. Wir verwenden die FormModel-Methode (mit CModel), um diese UI-Komponente zu verwenden.

Erstellen Sie RangeFrom.php

class RangeForm extends CFormModel{public $from;public $to;
function rules(){return 
array(array('from,to','numerical','integerOnly' =>true),
array(&#39;from&#39;,&#39;compare&#39;,&#39;compareAttribute&#39;=>&#39;to&#39;,&#39;operator&#39;=> &#39;<=&#39;,&#39;skipOnError&#39; => true),);}}
Nach dem Login kopieren

unter protected/models und ändern Sie dann die Standardmethode des Standard-Controllers, die actionIndex-Methode in protected/controllers/siteController.php.

public function actionIndex(){$success=false;$model=new RangeForm();
if(!emptyempty($_POST[&#39;RangeForm&#39;])){$model->attributes=$_POST[&#39;RangeForm&#39;];if($model->validate()) $success=true;
}
$this->render(&#39;index&#39;, array(&#39;model&#39; => $model,&#39;success&#39; => $success,));}
Nach dem Login kopieren

Erstellen Sie die entsprechende Ansicht

Success!
beginWidget(&#39;CActiveForm&#39;); ?>
errorSummary($model); ?>
widget(&#39;RangeInputField&#39;,array(&#39;model&#39;=>$model,&#39;attributeFrom&#39; => &#39;from&#39;,&#39;attributeTo&#39; => &#39;to&#39;,)) ?>endWidget(); ?>
Nach dem Login kopieren

Führen Sie dieses Beispiel aus

PHP-Entwicklungsframework Yii Framework-Tutorial (10) UI-Komponenten, benutzerdefinierte Komponenten

Das Obige ist das Tutorial zum PHP-Entwicklungsframework Yii Framework (10) Benutzerdefinierte Komponenteninhalte für UI-Komponenten. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage