Yiiフレーム2.0のビューとwidgetsフォームの使用
5981 ワード
2.0のコントローラの作成とactionメソッドの追加は1.0と基本的に同じです.しかし、私は彼のwidgetsのActiveFormと1.1バージョンが少し違うことに気づいた.
ビューについても基本的に同じですが、renderとrenderPartialの2つの方法があり、後者はレイアウトに呼び出されません.jqueryコンポーネントも自動的に呼び出されませんが、設定レイアウトが異なります.
1.1はコンポネントでphpには$layoutの変数があり、この変数の値を変更することでレイアウトを変更します.
2.0では親Controllerに配置されていませんが、findLayoutFileの方法があります.ここでは様々な状況を分析しています.デフォルトはmainですが、1.1のように親に直接書くこともできます.プロファイルのwebに書くこともできます.phpでは、「layout」=>「mine」と、layoutPathとレイアウトファイルのパスを設定することもできます.場合によっては独自のレイアウトが必要な場合は、彼のコントローラで$this->layout=「mine」を変更することで、layoutディレクトリの下のmineを呼び出すことができます.phpレイアウト.
フロントアクセスのパスを取得できます.
$baseUrl=Yii::$app->request->baseUrlは、現在のスクリプトのディレクトリを取得します.このフレームワークはシングルエントリモードなので、ルートディレクトリです.
このうち1.1バージョンの場合はYii::app()で現在のYiiインスタンスを取得し、2.0バージョンで採用されていることYii:$appで現在のインスタンスを取得します.
まず、オブジェクトを取得します.
2.0バージョンでは、$form=ActiveForm::begin();またuse yiiwidgetsActiveFormを使用します.
1.1バージョンでは$form=$this->beginWidget('CActiveForm')です.
私は2.0バージョンのwidgetsディレクトリの下でCActiveFormを見つけられませんでした.phpはActiveFormのみphpファイル.
次に、テキストボックスなど、取得フォームのオブジェクトも異なります.
2.0には、このような$form->field($LoginForm,'name',['id'=>'name']);
1.1には、このような$form->textField($loginForm,'name',array('id'=>'name');
公式ドキュメントを見ていると、ActiveFormでformの要素を作成できるだけでなく、yiihelpersHtmlでも作成できることがわかります.例えば、例にはsubmitボタンがHtmlで作成されています.
Html::submitButton('コミット',['class'=>'btn-primary']);
たとえばinputを作成して自分の属性を加えるにはtextInputメソッドを呼び出す必要があります.たとえば、
しかし、inputなどのラベルのほかにも、外にdivをかぶっているなど、他のラベルがたくさん付いています.inputラベルのみを使用するには、yiihelpersHtmlのactiveシリーズ関数を使用してフォームを生成します.
ビューについても基本的に同じですが、renderとrenderPartialの2つの方法があり、後者はレイアウトに呼び出されません.jqueryコンポーネントも自動的に呼び出されませんが、設定レイアウトが異なります.
1.1はコンポネントでphpには$layoutの変数があり、この変数の値を変更することでレイアウトを変更します.
2.0では親Controllerに配置されていませんが、findLayoutFileの方法があります.ここでは様々な状況を分析しています.デフォルトはmainですが、1.1のように親に直接書くこともできます.プロファイルのwebに書くこともできます.phpでは、「layout」=>「mine」と、layoutPathとレイアウトファイルのパスを設定することもできます.場合によっては独自のレイアウトが必要な場合は、彼のコントローラで$this->layout=「mine」を変更することで、layoutディレクトリの下のmineを呼び出すことができます.phpレイアウト.
フロントアクセスのパスを取得できます.
$baseUrl=Yii::$app->request->baseUrlは、現在のスクリプトのディレクトリを取得します.このフレームワークはシングルエントリモードなので、ルートディレクトリです.
このうち1.1バージョンの場合はYii::app()で現在のYiiインスタンスを取得し、2.0バージョンで採用されていることYii:$appで現在のインスタンスを取得します.
まず、オブジェクトを取得します.
2.0バージョンでは、$form=ActiveForm::begin();またuse yiiwidgetsActiveFormを使用します.
1.1バージョンでは$form=$this->beginWidget('CActiveForm')です.
私は2.0バージョンのwidgetsディレクトリの下でCActiveFormを見つけられませんでした.phpはActiveFormのみphpファイル.
次に、テキストボックスなど、取得フォームのオブジェクトも異なります.
2.0には、このような$form->field($LoginForm,'name',['id'=>'name']);
1.1には、このような$form->textField($loginForm,'name',array('id'=>'name');
公式ドキュメントを見ていると、ActiveFormでformの要素を作成できるだけでなく、yiihelpersHtmlでも作成できることがわかります.例えば、例にはsubmitボタンがHtmlで作成されています.
Html::submitButton('コミット',['class'=>'btn-primary']);
たとえばinputを作成して自分の属性を加えるにはtextInputメソッドを呼び出す必要があります.たとえば、
<?php echo $form->field($model, 'username')->textInput(['id'=>'userName']); ?>
:textInput();
:passwordInput();
:radio(),radioList();
:checkbox(),checkboxList();
:dropDownList();
:hiddenInput();
:textarea(['rows'=>3]);
:fileInput();
:submitButton();
:resetButtun();
<?php
$form = ActiveForm::begin(['action' => ['test/getpost'],'method'=>'post',]); ?>
<? echo $form->field($model, 'username')->textInput(['maxlength' => 20]) ?>
<? echo $form->field($model, 'password')->passwordInput(['maxlength' => 20]) ?>
<? echo $form->field($model, 'sex')->radioList(['1'=>' ','0'=>' ']) ?>
<? echo $form->field($model, 'edu')->dropDownList(['1'=>' ','2'=>' ','3'=>' '], ['prompt'=>' ','style'=>'width:120px']) ?>
<? echo $form->field($model, 'file')->fileInput() ?>
<? echo $form->field($model, 'hobby')->checkboxList(['0'=>' ','1'=>' ','2'=>' ','3'=>' ']) ?>
<? echo $form->field($model, 'info')->textarea(['rows'=>3]) ?>
<? echo $form->field($model, 'userid')->hiddenInput(['value'=>3]) ?>
<? echo Html::submitButton(' ', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
<? echo Html::resetButton(' ', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
<?php ActiveForm::end(); ?>
しかし、inputなどのラベルのほかにも、外にdivをかぶっているなど、他のラベルがたくさん付いています.inputラベルのみを使用するには、yiihelpersHtmlのactiveシリーズ関数を使用してフォームを生成します.
<?php $form = ActiveForm::begin(); ?>
<?php echo Html::activeTextInput($model, 'username', ['id'=>'userName']); ?>
<?php echo Html::activePasswordInput($model, 'password', ['id'=>'psd']); ?>
<?php echo Html::activeTextInput($model, 'captcha', ['id'=>'verify']); ?>
<?php echo Html::submitInput('', ['id'=>'sub']) ?>
<?php ActiveForm::end();?>