Yii ã«ããã¦ãã©ã¼ã ã使ç¨ããã¨ãã¯ã主ã¨ã㦠yii\widgets\ActiveForm ã«ããæ¹æ³ã使ãã¾ãã ãã©ã¼ã ãã¢ãã«ã«åºã¥ããã®ã§ããå ´åã¯ãã®æ¹æ³ãé¸ã¶ã¹ãã§ãã ããã«å ãã¦ãyii\helpers\Html ã«ã¯ããã¤ãã®æç¨ãªã¡ã½ããããããã©ããªãã©ã¼ã ã§ãããã¿ã³ããã«ãã»ããã¹ãã追å ããã®ã«ã¯ãé常ããããã®ã¡ã½ããã使ãã¾ãã
ãã©ã¼ã ã¯ãã¯ã©ã¤ã¢ã³ãã»ãµã¤ãã§è¡¨ç¤ºããããã®ã§ãããããã¦ãã®å ´åã対å¿ãã ã¢ãã« ãæã¡ãããã使ã£ã¦ãµã¼ãã»ãµã¤ãã§ãã©ã¼ã ã®å ¥åãæ¤è¨¼ãã¾ã (å ¥åã®æ¤è¨¼ã®è©³ç´°ã«ã¤ãã¦ã¯ãå ¥åãæ¤è¨¼ãã ã®ã»ã¯ã·ã§ã³ãåç §ãã¦ãã ãã)ã ã¢ãã«ã«åºã¥ããã©ã¼ã ãä½æããå ´åãæåã®ã¹ãããã¯ãã¢ãã«ãã®ãã®ãå®ç¾©ãããã¨ã§ãã ã¢ãã«ã¯ããã¼ã¿ãã¼ã¹ã®ä½ããã®ãã¼ã¿ã表ç¾ããããã« ã¢ã¯ãã£ãã»ã¬ã³ã¼ã ããæ´¾çãããã¯ã©ã¹ãã ãããã¯ãä»»æã®å ¥åãä¾ãã°ãã°ã¤ã³ã»ãã©ã¼ã ã®å ¥åãä¿æããããã® (yii\base\Model ããæ´¾çããã) æ±ç¨ç㪠Model ã¯ã©ã¹ããã©ã¡ããã«ãããã¨ãåºæ¥ã¾ãã
ãã³ã: ãã©ã¼ã ã®ãã£ã¼ã«ãããã¼ã¿ãã¼ã¹ã®ã«ã©ã ã¨ç°ãªã£ã¦ãããããã®ãã©ã¼ã ç¹æã®ãã©ã¼ãããå½¢å¼ããã¸ãã¯ããã£ããããå ´åã¯ã yii\base\Model ãæ¡å¼µããç¬èªã®ã¢ãã«ãä½ãã»ããé¸ãã§ä¸ããã
以ä¸ã®ä¾ã«ããã¦ã¯ããã°ã¤ã³ã»ãã©ã¼ã ã®ããã«æ±ç¨çãªã¢ãã«ã使ãæ¹æ³ã示ãã¾ãã
<?php
class LoginForm extends \yii\base\Model
{
public $username;
public $password;
public function rules()
{
return [
// æ¤è¨¼è¦åãããã§å®ç¾©
];
}
ã³ã³ããã¼ã©ã«ããã¦ããã®ã¢ãã«ã®ã¤ã³ã¹ã¿ã³ã¹ããã¥ã¼ã«æ¸¡ãããã¥ã¼ã§ã¯ ActiveForm ã¦ã£ã¸ã§ããããã©ã¼ã ã表示ããã®ã«ä½¿ããã¾ãã
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
]) ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<div class="form-group">
<div class="col-lg-offset-1 col-lg-11">
<?= Html::submitButton('ãã°ã¤ã³class' => 'btn btn-primary']) ?>
</div>
</div>
<?php ActiveForm::end() ?>
begin()
㨠end()
ã§å²ã ¶ä¸è¨ã®ã³ã¼ãã§ã¯ãActiveForm::begin() ããã©ã¼ã ã®ã¤ã³ã¹ã¿ã³ã¹ãä½æããã¨ã¨ãã«ããã©ã¼ã ã®éå§ããã¼ã¯ãã¦ãã¾ãã
ActiveForm::begin() 㨠ActiveForm::end()
ã®éã«ç½®ãããå
¨ã¦ã®ã³ã³ãã³ãã HTML ã® <form>
ã¿ã°ã«ãã£ã¦å²ã¾ãã¾ãã
ã©ã®ã¦ã£ã¸ã§ããã§ãåãã§ãããã¦ã£ã¸ã§ãããã©ã®ããã«æ§æãã¹ããã«é¢ãããªãã·ã§ã³ãæå®ããããã«ãbegin
ã¡ã½ããã«é
åã渡ããã¨ãåºæ¥ã¾ãã
ãã®ä¾ã§ã¯ã追å ã® CSS ã¯ã©ã¹ã¨è¦ç´ ãç¹å®ããããã® ID ã渡ããã¦ã<form>
ã®éå§ã¿ã°ã«é©ç¨ããã¦ãã¾ãã
å©ç¨ã§ãããªãã·ã§ã³ã®å
¨ã¦ã¯ yii\widgets\ActiveForm ã® API ããã¥ã¡ã³ãã«è¨ããã¦ãã¾ãã®ã§åç
§ãã¦ãã ããã
ãã©ã¼ã ã®ä¸ã§ã¯ããã©ã¼ã ã®è¦ç´ ãä½æããããã«ãActiveForm ã¦ã£ã¸ã§ããã® ActiveForm::field() ã¡ã½ãããå¼ã°ãã¦ãã¾ãã ãã®ã¡ã½ããã¯ããã©ã¼ã ã®è¦ç´ ã ãã§ãªãããã®ã©ãã«ãä½æããé©ç¨ã§ãã JavaScript ã®æ¤è¨¼ã¡ã½ãããããã°ãããã追å ãã¾ããActiveForm::field() ã¡ã½ããã¯ã yii\widgets\ActiveField ã®ã¤ã³ã¹ã¿ã³ã¹ãè¿ãã¾ãããã®ã¡ã½ããã®å¼ã³åºãçµæãç´æ¥ã«ã¨ã³ã¼ããã¨ãçµæã¯é常㮠(text ã®) ã¤ã³ãããã«ãªãã¾ãã ãã®ã¡ã½ããã®å¼ã³åºãã«è¿½å ã® ActiveField ã®ã¡ã½ããããã§ã¼ã³ãã¦ãåºåçµæãã«ã¹ã¿ãã¤ãºãããã¨ãåºæ¥ã¾ãã
// ãã¹ã¯ã¼ãã®ã¤ã³ããã
<?= $form->field($model, 'password')->passwordInput() ?>
// ãã³ãã¨ã«ã¹ã¿ãã¤ãºããã©ãã«ã追å
<?= $form->field($model, 'username')->textInput()->hint('ãååãå
¥åãã¦ãã ãã')->label('ãåå') ?>
// HTML5 ã®ã¡ã¼ã«ã»ã¤ã³ãããè¦ç´ ãä½æ
<?= $form->field($model, 'email')->input('email') ?>
ããã§ããã©ã¼ã ã®ãã£ã¼ã«ãã«ãã£ã¦å®ç¾©ããã ãã³ãã¬ã¼ã ã«å¾ã£ã¦ã<label>
ã<input>
ãªã©ãå
¨ã¦ã®ã¿ã°ãçæããã¾ãã
ã¤ã³ãããã»ãã£ã¼ã«ãã®ååã¯ãã¢ãã«ã® ãã©ã¼ã å ã¨å±æ§ããèªåçã«æ±ºå®ããã¾ãã
ä¾ãã°ãä¸è¨ã®ä¾ã«ããã username
å±æ§ã®ã¤ã³ãããã»ãã£ã¼ã«ãã®åå㯠LoginForm[username]
ã¨ãªãã¾ãã
ãã®å½åè¦åã®çµæã¨ãã¦ããã°ã¤ã³ã»ãã©ã¼ã ã®å
¨ã¦ã®å±æ§ãé
åã¨ãã¦ããµã¼ãã»ãµã¤ãã«ããã¦ã¯ $_POST['LoginForm']
ã«æ ¼ç´ããã¦å©ç¨ã§ãããã¨ã«ãªãã¾ãã
ãã³ã: ä¸ã¤ã®ãã©ã¼ã ã«ä¸ã¤ã®ã¢ãã«ã ããããå ´åãã¤ã³ãããã®ååãåç´åãããã¨ãã¯ã ã¢ãã«ã® formName() ã¡ã½ããããªã¼ãã¼ã©ã¤ããã¦ç©ºæååãè¿ãããã«ãã¦ãé åã®é¨åãã¹ããããããã¨ãåºæ¥ã¾ãã ãã®æ¹æ³ã使ãã°ãGridView ã§ä½¿ããããã£ã«ã¿ã¼ã»ã¢ãã«ã§ããã£ã¨è¦æ ãã®è¯ã URL ãçæããããã¨ãåºæ¥ã¾ãã
ã¢ãã«ã®å±æ§ãæå®ããããã«ããã£ã¨æ´ç·´ãããæ¹æ³ã使ããã¨ãåºæ¥ã¾ãã
ä¾ãã°ãè¤æ°ã®ãã¡ã¤ã«ãã¢ãããã¼ãããããè¤æ°ã®é
ç®ãé¸æãããããå ´åã«ãå±æ§ã®ååã« []
ãä»ãã¦ã
å±æ§ãé
åã®å¤ãåãå¾ããã¨ãæå®ãããã¨ãåºæ¥ã¾ãã
// è¤æ°ã®ãã¡ã¤ã«ã®ã¢ãããã¼ãã許å¯ãã
echo $form->field($model, 'uploadFile[]')->fileInput(['multiple'=>'multiple']);
// è¤æ°ã®é
ç®ããã§ãã¯ãããã¨ã許å¯ãã
echo $form->field($model, 'items[]')->checkboxList(['a' => 'Item A', 'b' => 'Item B', 'c' => 'Item C']);
éä¿¡ãã¿ã³ãªã©ã®ãã©ã¼ã è¦ç´ ã«ååãã¤ããã¨ãã«ã¯æ³¨æãå¿ è¦ã§ãã jQuery ããã¥ã¡ã³ã ã«ããã°ãè¡çªãçãããå¾ãäºç´ãããååãããã¤ãããã¾ãã
ãã©ã¼ã ããã³ãã©ã¼ã ã®åè¦ç´ ã¯ããã©ã¼ã ã®ããããã£ã¨è¡çªããã¤ã³ãããåã idããã¨ãã°
submit
ãlength
ãmethod
ãªã©ã使ã£ã¦ã¯ãªãã¾ããã ååã®è¡çªã¯è¨³ã®åããªã失æãçãããããã¨ãããã¾ãã å½åè¦åã®å®å ¨ãªãªã¹ããç¥ãããã®åé¡ã«ã¤ãã¦ããªãã®ãã¼ã¯ã¢ããããã§ãã¯ããããã«ã¯ãDOMLint ãåç §ãã¦ãã ããã
ãã©ã¼ã ã« HTML ã¿ã°ã追å ããããã«ã¯ãç´ ã® HTML ã使ãããã¾ãã¯ãä¸è¨ã®ä¾ã® Html::submitButton() ã®ããã«ã Html ãã«ãã»ã¯ã©ã¹ã®ã¡ã½ããã使ããã¨ãåºæ¥ã¾ãã
ãã³ã: ããªãã®ã¢ããªã±ã¼ã·ã§ã³ã§ Twitter Bootstrap CSS ã使ã£ã¦ããå ´åã¯ãyii\widgets\ActiveForm ã®ä»£ãã« yii\bootstrap\ActiveForm ã使ãã®ãè¯ãã§ãããã å¾è ã¯åè ã®æ¡å¼µã§ãããbootstrap CSS ãã¬ã¼ã ã¯ã¼ã¯ã§ä½¿ç¨ããããã®è¿½å ã®ã¹ã¿ã¤ã«ããµãã¼ããã¦ãã¾ãã
ãã³ã: å¿ é ãã£ã¼ã«ããã¢ã¹ã¿ãªã¹ã¯ä»ãã®ã¹ã¿ã¤ã«ã«ããããã«ã次㮠CSS ã使ããã¨ãåºæ¥ã¾ãã
div.required label.control-label:after { content: " *"; color: red; }
ä¸ç¨®é¡ã®ãªã¹ããããã¾ã:
ãªã¹ããä½ãããã«ã¯ãé ç®ã®é åãæºåããªããã°ãªãã¾ãããããã¯ãæä½æ¥ã§ãããã¨ãåºæ¥ã¾ãã
$items = [
1 => 'é
ç® 1',
2 => 'é
ç® 2'
]
ã¾ãã¯ãDB ããåå¾ãããã¨ãåºæ¥ã¾ãã
$items = Category::find()
->select(['label'])
->indexBy('id')
->column();
ãã®ãã㪠$items
ããããããªãªã¹ãã»ã¦ã£ã¸ã§ããã«ãã£ã¦å¦çãããã¹ããã®ã¨ãªãã¾ãã
ãã©ã¼ã ã®ãã£ã¼ã«ãã®å¤(ããã³ç¾å¨ã¢ã¯ãã£ããªé
ç®)ã¯ã
$model
ã®å±æ§ã®ç¾å¨ã®å¤ã«å¾ã£ã¦èªåçã«è¨å®ããã¾ãã
ActiveField ã® yii\widgets\ActiveField::dropDownList() ã¡ã½ããã使ã£ã¦ããããããã¦ã³ã»ãªã¹ããä½ããã¨ãåºæ¥ã¾ãã
/* @var $form yii\widgets\ActiveForm */
echo $form->field($model, 'category')->dropdownList([
1 => 'é
ç® 1',
2 => 'é
ç® 2'
],
['prompt'=>'ã«ãã´ãªã¼ãé¸æãã¦ãã ãã']
);
ActiveField ã® yii\widgets\ActiveField::radioList() ã¡ã½ããã使ã£ã¦ã©ã¸ãªã»ãªã¹ããä½ããã¨ãåºæ¥ã¾ãã
/* @var $form yii\widgets\ActiveForm */
echo $form->field($model, 'category')->radioList([
1 => 'ã©ã¸ãª 1',
2 => 'ã©ã¸ãª 2'
]);
ActiveField ã® yii\widgets\ActiveField::checkboxList() ã¡ã½ããã使ã£ã¦ãã§ãã¯ããã¯ã¹ã»ãªã¹ããä½ããã¨ãåºæ¥ã¾ãã
/* @var $form yii\widgets\ActiveForm */
echo $form->field($model, 'category')->checkboxList([
1 => 'ãã§ãã¯ããã¯ã¹ 1',
2 => 'ãã§ãã¯ããã¯ã¹ 2'
]);
Pjax ã¦ã£ã¸ã§ããã使ãã¨ããã¼ã¸å ¨ä½ããªãã¼ãããã«ã ãã¼ã¸ã®ä¸é¨åã ããæ´æ°ãããã¨ãåºæ¥ã¾ãã ããã使ãã¨ãéä¿¡å¾ã«ãã©ã¼ã ã ããæ´æ°ãã¦ããã®ä¸èº«ãå ¥ãæ¿ãããã¨ãåºæ¥ã¾ãã
$formSelector ãæ§æããã¨ãã©ã®ãã©ã¼ã ã®éä¿¡ã pjax ãèµ·åããããæå®ãããã¨ãåºæ¥ã¾ãã
ãããæå®ããã¦ããªãå ´åã¯ãPjax ã«å²ã¾ããã³ã³ãã³ãã®ä¸ã«ãã£ã¦
data-pjax
å±æ§ãæã¤ãã¹ã¦ã®ãã©ã¼ã ã pjax ãªã¯ã¨ã¹ããèµ·åãããã¨ã«ãªãã¾ãã
use yii\widgets\Pjax;
use yii\widgets\ActiveForm;
Pjax::begin([
// Pjax ã®ãªãã·ã§ã³
]);
$form = ActiveForm::begin([
'options' => ['data' => ['pjax' => true]],
// ActiveForm ã®è¿½å ã®ãªãã·ã§ã³
]);
// ActiveForm ã®ã³ã³ãã³ã
ActiveForm::end();
Pjax::end();
ãã³ã: Pjax ã¦ã£ã¸ã§ããå é¨ã®ãªã³ã¯ã«æ³¨æãã¦ãã ããã ã¨è¨ãã®ã¯ããªã³ã¯ã«å¯¾ããã¬ã¹ãã³ã¹ãã¦ã£ã¸ã§ããå é¨ã§ã¬ã³ããªã³ã°ãããããã§ãã ãããé²ãããã«ã¯ã
data-pjax="0"
ã¨ãã HTML å±æ§ã使ç¨ãã¾ãã
jQuery.serializeArray()
ã«ã¤ãã¦ã¯ã
ãã¡ã¤ã« ããã³
éä¿¡ãã¿ã³ã®å¤
ãæ±ãã¨ãã«åé¡ããããã¨ãç¥ããã¦ãã¾ãã
ãã®åé¡ã¯è§£æ±ºãããè¦è¾¼ã¿ããªããé¢æ°èªä½ã HTML5 ã§å°å
¥ããã FormData
ã¯ã©ã¹ã«ãã£ã¦ç½®ãæããããã¹ããã®ã¨ãã¦ãå»æ¢äºå®ã¨ãªã£ã¦ãã¾ãã
ãã®ãã¨ã¯ãããªãã¡ãajax ã¾ã㯠Pjax ã¦ã£ã¸ã§ããã使ãå ´åã
ãã¡ã¤ã«ã¨éä¿¡ãã¿ã³ã®å¤ã«å¯¾ããå¯ä¸ã®å
¬å¼ãªãµãã¼ãã¯ã
FormData
ã¯ã©ã¹ã«å¯¾ãã ãã©ã¦ã¶ã®ãµãã¼ã
ã«ä¾åãã¦ããã¨ãããã¨ãæå³ãã¾ãã
次ã®ã»ã¯ã·ã§ã³ å ¥åãæ¤è¨¼ãã ã¯ãéä¿¡ããããã©ã¼ã ãã¼ã¿ã®ãµã¼ãã»ãµã¤ãã§ã®æ¤è¨¼ã¨ãajax æ¤è¨¼ããã³ã¯ã©ã¤ã¢ã³ãã»ãµã¤ãã§ã®æ¤è¨¼ãæ±ãã¾ãã
ãã©ã¼ã ã®ãã£ã¨è¤éãªä½¿ç¨æ¹æ³ã«ã¤ãã¦ã¯ã以ä¸ã®ã»ã¯ã·ã§ã³ãèªãã§ä¸ããã
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.