Cadre de développement PHP Tutoriel Yii Framework (10) Composants d'interface utilisateur Composants personnalisés

黄舟
Libérer: 2023-03-05 07:30:01
original
1164 Les gens l'ont consulté

Avant de présenter les composants d'interface utilisateur intégrés de Yii, voyons d'abord comment personnaliser les composants. Cela aidera également à comprendre l'utilisation de CWidget. La personnalisation des composants consiste à surcharger les méthodes init() et run() de CWidget.

class MyWidget extends CWidget{public function init(){// 此方法会被 CController::beginWidget() 调用}
public function run(){// 此方法会被 CController::endWidget() 调用}}
Copier après la connexion

Cet exemple définit un composant d'interface utilisateur d'entrée de plage de valeurs-RangeInputField en étendant CInputWidget, qui permet à l'utilisateur de saisir deux nombres pour définir une plage de valeurs. CInputWidget prend en charge l'utilisation de CModel ou l'utilisation directe de variables, et RangeInputField conserve également cette tradition.

RangeInputField définit trois ensembles de propriétés.

$attributeFrom et $attributeTo sont utilisés dans CModel. Avec la méthode activeXXX de CHtml, activeXXX peut générer automatiquement des étiquettes de zones de texte et des zones de texte.

Attributs $nameFrom, $nameTo, $valueFrom, $valueTo Les programmeurs peuvent définir eux-mêmes l'étiquette de la zone de texte.

Selon la structure de répertoires par défaut de l'application Yii, le RangeInputField nouvellement créé est placé dans le répertoire protected/components, donc créez 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;}}
Copier après la connexion

C'est personnalisé Un nouveau composant d'interface utilisateur, RangeInputField, surcharge uniquement la méthode run et utilise la méthode init dans sa classe parent.

Vous pouvez maintenant tester ce composant d'interface utilisateur personnalisé nouvellement créé, RangeInputField. Nous utilisons la méthode FormModel (à l'aide de CModel) pour utiliser ce composant d'interface utilisateur.

Créez 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),);}}
Copier après la connexion

sous protected/models puis modifiez la méthode par défaut du Controller par défaut, la méthode actionIndex dans 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,));}
Copier après la connexion

Créez la vue correspondante

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(); ?>
Copier après la connexion

Exécutez cet exemple

Cadre de développement PHP Tutoriel Yii Framework (10) Composants dinterface utilisateur Composants personnalisés

Ce qui précède est le tutoriel du framework de développement PHP Yii Framework (10 ) Contenu du composant personnalisé du composant d'interface utilisateur, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal