diff --git a/docs/guide-ja/glossary.md b/docs/guide-ja/glossary.md new file mode 100644 index 0000000000..11557056d1 --- /dev/null +++ b/docs/guide-ja/glossary.md @@ -0,0 +1,73 @@ +# A + +## alias エイリアス + +エイリアスは、クラスやディレクトリを示すために Yii によって用いられる文字列です。例えば `@app/vendor`。 + +## application アプリケーション + +アプリケーションは HTTP リクエスト処理のための中心的なオブジェクトです。 +内部に抱える数多くのコンポーネントによって、リクエストから情報を取得し、更に処理を進めるためにそれを適切なコントローラに送致します。 + +アプリケーション・オブジェクトはエントリ・スクリプトによってシングルトンとしてインスタンス化されます。 +アプリケーション・シングルトンはどの場所からでも `\Yii::$app` としてアクセス可能です。 + +## assets アセット + +アセットとはリソース・ファイルを指し示すものです。 +典型的には JavaScript または CSS を含むファイルですが、HTTP によってアクセス可能なものなら何でも構いません。t or CSS code but can be anything else that is accessed via HTTP. + +## attribute 属性 + +属性は、**ビジネス・データ** を保存するモデルのプロパティ (クラスのメンバ変数、または、`__get()`/`__set()` によって定義されるマジック・プロパティ) です。 + +# B + +## bundle バンドル + +バンドルは、Yii 1.1 では「パッケージ」として知られていましたが、 +一群のアセットと、アセットの一覧と依存関係を記述する構成ファイルです。 + +# C + +## configuration 構成 + +構成という言葉は、オブジェクトのプロパティを設定するプロセス、または、オブジェクトやクラスのための設定を保存する構成ファイルを指し示します。 + +# E + +## extension エクステンション + +エクステンションは、アプリケーションに機能を追加するための、一セットとなったクラス、アセットバンドル、構成ファイルです。 + +# I + +## installation インストレーション + +インストレーションは、説明文書に従ったり、特別に用意されたスクリプトを実行したりして、何かが動作するように準備するプロセスを指します。 +Yii の場合は、パーミッションを設定すること、および、ソフトウェアの必要条件を満たすことを指します。 + +# M + +## module モジュール + +モジュールは、それ自体にモデル、ビュー、コントローラなどの MVC 要素を含み、メインのアプリケーションの中で使用することが出来る下位アプリケーションです。 +その場合、通常、メインのアプリケーションは自分のコントローラで処理する代りに、モジュールにリクエストをフォワードします。 + +# N + +## namespace 名前空間 + +名前空間は Yii 2 で積極的に使用されている [PHP 言語機能のひとつ](http://php.net/manual/ja/language.namespaces.php) です。 + +# P + +## package パッケージ + +[バンドル](#bundle) を参照。 + +# V + +## vendor ベンダ + +ベンダは、エクステンション、モジュール、ライブラリの形式でコードを提供している、組織または個人の開発者です。 diff --git a/docs/guide-ja/helper-array.md b/docs/guide-ja/helper-array.md index 39541b629d..f2ba01b539 100644 --- a/docs/guide-ja/helper-array.md +++ b/docs/guide-ja/helper-array.md @@ -52,6 +52,56 @@ $fullName = ArrayHelper::getValue($user, function ($user, $defaultValue) { $username = ArrayHelper::getValue($comment, 'user.username', 'Unknown'); ``` +## 蛟、繧定ィュ螳壹☆繧 + +```php +$array = [ + 'key' => [ + 'in' => ['k' => 'value'] + ] +]; + +ArrayHelper::setValue($array, 'key.in', ['arr' => 'val']); +// `$array` 縺ァ蛟、繧呈嶌縺上◆繧√ョ繝代せ縺ッ驟榊励→縺励※謖螳壹☆繧九%縺ィ繧ょコ譚・縺セ縺 +ArrayHelper::setValue($array, ['key', 'in'], ['arr' => 'val']); +``` + +邨先棡縺ィ縺励※縲〜$array['key']['in']` 縺ョ蛻晄悄蛟、縺ッ譁ー縺励>蛟、縺ォ繧医▲縺ヲ荳頑嶌縺阪&繧後∪縺吶 + +```php +[ + 'key' => [ + 'in' => ['arr' => 'val'] + ] +] +``` + +繝代せ縺悟ュ伜惠縺励↑縺繧ュ繝シ繧貞性繧薙〒縺繧句エ蜷医ッ縲√く繝シ縺御ス懈舌&繧後∪縺吶 + +```php +// `$array['key']['in']['arr0']` 縺檎ゥコ縺ァ縺ェ縺代l縺ー縲∝、縺碁榊励↓霑ス蜉縺輔l繧 +ArrayHelper::setValue($array, 'key.in.arr0.arr1', 'val'); + +// `$array['key']['in']['arr0']` 縺ョ蛟、繧貞ョ悟ィ縺ォ荳頑嶌縺阪@縺溘>蝣エ蜷医ッ +ArrayHelper::setValue($array, 'key.in.arr0', ['arr1' => 'val']); +``` + +邨先棡縺ッ莉・荳九ョ繧医≧縺ォ縺ェ繧翫∪縺 + +```php +[ + 'key' => [ + 'in' => [ + 'k' => 'value', + 'arr0' => ['arr1' => 'val'] + ] + ] +] +``` + + +## 驟榊励°繧牙、繧貞叙繧企勁縺 + 蛟、繧貞叙蠕励@縺ヲ縲√◎縺ョ逶エ蠕後↓縺昴l繧帝榊励°繧牙炎髯、縺励◆縺蝣エ蜷医ッ縲〜remove` 繝。繧ス繝繝峨r菴ソ縺縺薙→縺悟コ譚・縺セ縺吶 ```php diff --git a/docs/guide-ja/helper-html.md b/docs/guide-ja/helper-html.md index e1942a049b..27738129c2 100644 --- a/docs/guide-ja/helper-html.md +++ b/docs/guide-ja/helper-html.md @@ -231,11 +231,11 @@ $decodedUserName = Html::decode($userName); 繝ゥ繧ク繧ェ縺ィ繝√ぉ繝繧ッ繝懊ャ繧ッ繧ケ縺ッ縲√Γ繧ス繝繝峨ョ繧キ繧ー繝九メ繝」縺ョ髱「縺ァ蟆代@逡ー縺ェ縺」縺ヲ縺縺セ縺吶 ```php - '蜷梧э縺励∪縺']); - 'agreement']) + '蜷梧э縺励∪縺']) ?> + 'agreement']) ?> - '蜷梧э縺励∪縺']); - 'agreement']) + '蜷梧э縺励∪縺']) ?> + 'agreement']) ?> ``` 繝峨Ο繝繝励ム繧ヲ繝ウ繝ェ繧ケ繝医→繝ェ繧ケ繝医懊ャ繧ッ繧ケ縺ッ縲∵ャ。縺ョ繧医≧縺ォ縺励※繝ャ繝ウ繝繝ェ繝ウ繧ー縺吶k縺薙→縺悟コ譚・縺セ縺吶 @@ -336,7 +336,7 @@ echo Html::getAttributeName('dates[0]'); - true]); + true]) ?> 縺薙l縺ッ谺。縺ョ HTML 繧堤函謌舌@縺セ縺吶 diff --git a/docs/guide-ja/helper-overview.md b/docs/guide-ja/helper-overview.md index 4364f860db..2f4b056d0a 100644 --- a/docs/guide-ja/helper-overview.md +++ b/docs/guide-ja/helper-overview.md @@ -72,4 +72,4 @@ Yii::$classMap['yii\helpers\ArrayHelper'] = '@app/components/ArrayHelper.php'; ``` 繝倥Ν繝代け繝ゥ繧ケ縺ョ繧ォ繧ケ繧ソ繝槭う繧コ縺ッ縲√倥Ν繝代ョ譌「蟄倥ョ髢「謨ー縺ョ謖ッ繧玖槭>繧貞、画峩縺励◆縺蝣エ蜷医↓縺縺大スケ遶九▽繧ゅョ縺ァ縺ゅk縺薙→縺ォ豕ィ諢上@縺ヲ縺上□縺輔>縲 -繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺ョ荳ュ縺ァ菴ソ逕ィ縺吶k髢「謨ー繧定ソス蜉縺励◆縺蝣エ蜷医↓縺ッ縲√◎縺ョ縺溘a縺ョ迢ャ遶九@縺溘倥Ν繝代r菴懈舌☆繧区婿縺瑚憶縺縺ァ縺励g縺縲 +繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺ョ荳ュ縺ァ菴ソ逕ィ縺吶k髢「謨ー繧定ソス蜉縺励◆縺蝣エ蜷医ッ縲√◎縺ョ縺溘a縺ョ迢ャ遶九@縺溘倥Ν繝代r菴懈舌☆繧区婿縺瑚憶縺縺ァ縺励g縺縲 diff --git a/docs/guide-ja/helper-url.md b/docs/guide-ja/helper-url.md index d25070b95b..d9b9289fa1 100644 --- a/docs/guide-ja/helper-url.md +++ b/docs/guide-ja/helper-url.md @@ -99,7 +99,7 @@ echo Url::toRoute('site/index', 'https'); - 騾壼クク縺ョ譁蟄怜: 縺昴ョ騾壹j縺ョ繧ゅョ縺ィ縺励※謇ア繧上l縺セ縺吶 `$scheme` (譁蟄怜励∪縺溘ッ `true`) 縺梧欠螳壹&繧後◆蝣エ蜷医ッ縲√帙せ繝域ュ蝣ア ([[\yii\web\UrlManager::hostInfo]] 縺九i蜿門セ励&繧後∪縺) 繧剃シエ縺邨カ蟇セ URL 縺瑚ソ斐&繧後∪縺吶 -`$url` 縺梧里縺ォ邨カ蟇セ URL 縺ァ縺ゅ▲縺溷エ蜷医↓縺ッ縲√◎縺ョ繧ケ繧ュ繝シ繝縺梧欠螳壹&繧後◆繧ゅョ縺ォ鄂ョ縺肴鋤縺医i繧後∪縺吶 +`$url` 縺梧里縺ォ邨カ蟇セ URL 縺ァ縺ゅ▲縺溷エ蜷医↓縺ッ縲√せ繧ュ繝シ繝縺梧欠螳壹&繧後◆繧ゅョ縺ォ鄂ョ縺肴鋤縺医i繧後∪縺吶 荳玖ィ倥↓縺縺上▽縺九ョ逕ィ萓九r謖吶£縺セ縺吶 diff --git a/docs/guide-ja/input-form-javascript.md b/docs/guide-ja/input-form-javascript.md new file mode 100644 index 0000000000..7d678283ea --- /dev/null +++ b/docs/guide-ja/input-form-javascript.md @@ -0,0 +1,197 @@ +クライアントサイドで ActiveForm を拡張する +========================================== + +[[yii\widgets\ActiveForm]] ウィジェットは、クライアントバリデーションのために使う一連の JavaScript メソッドを備えています。 +その実装は非常に柔軟で、様々な方法で拡張することが可能になっています。 +下記でそれについて解説します。 + +## ActiveForm イベント + +ActiveForm は、一連の専用のイベントを発生させます。 +次のようなコードを使って、これらのイベントを購読して処理することが出来ます。 + +```javascript +$('#contact-form').on('beforeSubmit', function (e) { + if (!confirm("全てオーケー。送信しますか?")) { + return false; + } + return true; +}); +``` + +以下、利用できるイベントを見ていきましょう。 + +### `beforeValidate` + +`beforeValidate` は、フォーム全体を検証する前にトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event, messages, deferreds) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 +- `messages`: 連想配列で、キーは属性の ID、値は対応する属性のエラーメッセージの配列です。 +- `deferreds`: Deferred オブジェクトの配列。`deferreds.add(callback)` を使って、新しい deferrd な検証を追加することが出来ます。 + +ハンドラが真偽値 `false` を返すと、このイベントに続くフォームの検証は中止されます。 +その結果、`afterValidate` イベントもトリガーされません。 + +### `afterValidate` + +`afterValidate` イベントは、フォーム全体を検証した後でトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event, messages, errorAttributes) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 +- `messages`: 連想配列で、キーは属性の ID、値は対応する属性のエラーメッセージの配列です。 +- `errorAttributes`: 検証エラーがある属性の配列。この引数の構造については `attributeDefaults` を参照して下さい。 + +### `beforeValidateAttribute` + +`beforeValidateAttribute` イベントは、属性を検証する前にトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event, attribute, messages, deferreds) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 +- `attribute`: 検証される属性。この引数の構造については `attributeDefaults` を参照して下さい。 +- `messages`: 指定された属性に対する検証エラーメッセージを追加することが出来る配列。 +- `deferreds`: Deferred オブジェクトの配列。`deferreds.add(callback)` を使って、新しい deferrd な検証を追加することが出来ます。 + +ハンドラが真偽値 `false` を返すと、指定された属性の検証は中止されます。 +その結果、`afterValidateAttribute` イベントもトリガーされません。 + +### `afterValidateAttribute` + +`afterValidateAttribute` イベントは、フォーム全体および各属性の検証の後にトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event, attribute, messages) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 +- `attribute`: 検証される属性。この引数の構造については `attributeDefaults` を参照して下さい。 +- `messages`: 指定された属性に対する追加の検証エラーメッセージを追加することが出来る配列。 + +### `beforeSubmit` + +`beforeSubmit` イベントは、全ての検証が通った後、フォームを送信する前にトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 + +ハンドラが真偽値 `false` を返すと、フォームの送信は中止されます。 + +### `ajaxBeforeSend` + +`ajaxBeforeSend` イベントは、AJAX ベースの検証のための AJAX リクエストを送信する前にトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event, jqXHR, settings) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 +- `jqXHR`: jqXHR のオブジェクト。 +- `settings`: AJAX リクエストの設定。 + +### `ajaxComplete` + +`ajaxComplete` イベントはAJAX ベースの検証のための AJAX リクエストが完了した後にトリガーされます。 + +イベントハンドラのシグニチャは以下の通り: + +```javascript +function (event, jqXHR, textStatus) +``` + +引数は以下の通り: + +- `event`: イベントのオブジェクト。 +- `jqXHR`: jqXHR のオブジェクト。 +- `textStatus`: リクエストの状態 ("success", "notmodified", "error", "timeout", +"abort", または "parsererror")。 + +## AJAX でフォームを送信する + +検証(バリデーション)は、クライアントサイドまたは AJAX リクエストによって行うことが出来ますが、 +フォームの送信そのものはデフォルトでは通常のリクエストとして実行されます。 +フォームを AJAX で送信したい場合は、次のように、フォームの `beforeSubmit` イベントを処理することによって達成することが出来ます。 + +```javascript +var $form = $('#formId'); +$form.on('beforeSubmit', function() { + var data = $form.serialize(); + $.ajax({ + url: $form.attr('action'), + type: 'POST', + data: data, + success: function (data) { + // 成功したときの実装 + }, + error: function(jqXHR, errMsg) { + alert(errMsg); + } + }); + return false; // デフォルトの送信を抑止 +}); +``` + +jQuery の `ajax()` 関数について更に学習するためには、[jQuery documentation](https://api.jquery.com/jQuery.ajax/) を参照して下さい。 + + +## フィールドを動的に追加する + +現在のウェブ・アプリケーションでは、ユーザに対して表示した後でフォームを変更する必要がある場合がよくあります。 +例えば、"追加"アイコンをクリックするとフィールドが追加される場合などです。 +このようなフィールドに対するクライアント・バリデーションを有効にするためには、フィールドを ActiveForm JavaScript プラグインに登録しなければなりません。 + +フィールドそのものを追加して、そして、バリデーションのリストに追加しなければなりません。 + +```javascript +$('#contact-form').yiiActiveForm('add', { + id: 'address', + name: 'address', + container: '.field-address', + input: '#address', + error: '.help-block', + validate: function (attribute, value, messages, deferred, $form) { + yii.validation.required(value, messages, {message: "Validation Message Here"}); + } +}); +``` + +フィールドをバリデーションのリストから削除して検証されないようにするためには、次のようにします。 + +```javascript +$('#contact-form').yiiActiveForm('remove', 'address'); +``` diff --git a/docs/guide-ja/input-forms.md b/docs/guide-ja/input-forms.md index e407dfa89a..1156e9fcf6 100644 --- a/docs/guide-ja/input-forms.md +++ b/docs/guide-ja/input-forms.md @@ -11,6 +11,10 @@ Yii 縺ォ縺翫>縺ヲ繝輔か繝シ繝繧剃スソ逕ィ縺吶k縺ィ縺阪ッ縲∽クサ縺ィ縺励※ [[yii\widget (蜈・蜉帙ョ讀懆ィシ縺ョ隧ウ邏ー縺ォ縺、縺縺ヲ縺ッ縲ー蜈・蜉帙r讀懆ィシ縺吶k](input-validation.md) 縺ョ遽繧貞盾辣ァ縺励※縺上□縺輔>)縲 繝「繝繝ォ縺ォ蝓コ縺・縺上ヵ繧ゥ繝シ繝繧剃ス懈舌☆繧句エ蜷医∵怙蛻昴ョ繧ケ繝繝繝励ッ縲√Δ繝繝ォ縺昴ョ繧ゅョ繧貞ョ夂セゥ縺吶k縺薙→縺ァ縺吶 繝「繝繝ォ縺ッ縲√ョ繝シ繧ソ繝吶シ繧ケ縺ョ菴輔i縺九ョ繝繝シ繧ソ繧定。ィ迴セ縺吶k縺溘a縺ォ [繧「繧ッ繝繧」繝悶Ξ繧ウ繝シ繝云(db-active-record.md) 縺九i豢セ逕溘&縺帙◆繧ッ繝ゥ繧ケ縺九√≠繧九>縺ッ縲∽ササ諢上ョ蜈・蜉帙∽セ九∴縺ー繝ュ繧ー繧、繝ウ繝輔か繝シ繝縺ョ蜈・蜉帙r菫晄戟縺吶k縺溘a縺ョ ([[yii\base\Model]] 縺九i豢セ逕溘&縺帙◆) 豎守畑逧縺ェ Model 繧ッ繝ゥ繧ケ縺九√←縺。繧峨°縺ォ縺吶k縺薙→縺悟コ譚・縺セ縺吶 + +> Tip: 繝輔か繝シ繝縺ョ繝輔ぅ繝シ繝ォ繝峨′繝繝シ繧ソ繝吶シ繧ケ縺ョ繧ォ繝ゥ繝縺ィ逡ー縺ェ縺」縺ヲ縺縺溘j縲√◎縺ョ繝輔か繝シ繝迚ケ譛峨ョ繝輔か繝シ繝槭ャ繝亥ス「蠑上d繝ュ繧ク繝繧ッ縺後≠縺」縺溘j縺吶k蝣エ蜷医ッ縲 +> [[yii\base\Model]] 繧呈僑蠑オ縺励◆迢ャ閾ェ縺ョ繝「繝繝ォ繧剃ス懊k縺サ縺繧帝∈繧薙〒荳九&縺縲 + 莉・荳九ョ萓九↓縺翫>縺ヲ縺ッ縲√Ο繧ー繧、繝ウ繝輔か繝シ繝縺ョ縺溘a縺ォ豎守畑逧縺ェ繝「繝繝ォ繧剃スソ縺譁ケ豕輔r遉コ縺励∪縺吶 ```php @@ -59,7 +63,7 @@ $form = ActiveForm::begin([ 縺薙ョ萓九〒縺ッ縲∬ソス蜉縺ョ CSS 繧ッ繝ゥ繧ケ縺ィ隕∫エ繧堤音螳壹☆繧九◆繧√ョ ID 縺梧ク。縺輔l縺ヲ縲〜
` 縺ョ髢句ァ九ち繧ー縺ォ驕ゥ逕ィ縺輔l縺ヲ縺縺セ縺吶 蛻ゥ逕ィ縺ァ縺阪k繧ェ繝励す繝ァ繝ウ縺ョ蜈ィ縺ヲ縺ッ [[yii\widgets\ActiveForm]] 縺ョ API 繝峨く繝・繝。繝ウ繝医↓險倥&繧後※縺縺セ縺吶ョ縺ァ蜿らァ縺励※縺上□縺輔>縲 -### ActiveField . +### ActiveField 繝輔か繝シ繝縺ョ荳ュ縺ァ縺ッ縲√ヵ繧ゥ繝シ繝縺ョ隕∫エ繧剃ス懈舌☆繧九◆繧√↓縲、ctiveForm 繧ヲ繧」繧ク繧ァ繝繝医ョ [[yii\widgets\ActiveForm::field()|ActiveForm::field()]] 繝。繧ス繝繝峨′蜻シ縺ー繧後※縺縺セ縺吶 縺薙ョ繝。繧ス繝繝峨ッ縲√ヵ繧ゥ繝シ繝縺ョ隕∫エ縺縺代〒縺ェ縺上√◎縺ョ繝ゥ繝吶Ν繧ゆス懈舌@縲驕ゥ逕ィ縺ァ縺阪k JavaScript 縺ョ讀懆ィシ繝。繧ス繝繝峨′縺ゅl縺ー縲√◎繧後b霑ス蜉縺励∪縺吶 [[yii\widgets\ActiveForm::field()|ActiveForm::field()]] 繝。繧ス繝繝峨ッ縲ー[yii\widgets\ActiveField]] 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ繧定ソ斐@縺セ縺吶 @@ -137,7 +141,7 @@ $items = [ ```php $items = Category::find() - ->select(['id', 'label']) + ->select(['label']) ->indexBy('id') ->column(); ``` diff --git a/docs/guide-ja/input-multiple-models.md b/docs/guide-ja/input-multiple-models.md index bcf2798e80..9f8f4b7f63 100644 --- a/docs/guide-ja/input-multiple-models.md +++ b/docs/guide-ja/input-multiple-models.md @@ -58,6 +58,7 @@ class UserController extends Controller 縺薙ョ `update` 繧「繧ッ繧キ繝ァ繝ウ縺ァ縺ッ縲∵怙蛻昴↓縲∵峩譁ー縺ョ蟇セ雎。縺ォ縺ェ繧 `$user` 縺ィ `$profile` 縺ョ繝「繝繝ォ繧偵ョ繝シ繧ソ繝吶シ繧ケ縺九i繝ュ繝シ繝峨@縺セ縺吶 谺。縺ォ [[yii\base\Model::load()]] 繧貞他繧薙〒縲√%繧後i莠後▽縺ョ繝「繝繝ォ縺ォ繝ヲ繝シ繧カ蜈・蜉帙r莉」蜈・縺励∪縺吶 莉」蜈・縺梧仙粥縺吶l縺ー縲∽コ後▽縺ョ繝「繝繝ォ繧呈、懆ィシ縺励※菫晏ュ倥@縺セ縺吶 +— 繝「繝繝ォ縺ョ荳ュ縺ァ縺ッ縲√Θ繝シ繧カ縺ョ蜈・蜉帙ョ繝シ繧ソ縺ッ譌「縺ォ讀懆ィシ貂医∩縺ァ縺ゅk縺溘a縲驕主臆縺ェ讀懆ィシ繧帝∩縺代k縺溘a縺ォ `save(false)` 繧剃スソ縺」縺ヲ縺繧九%縺ィ縺ォ豕ィ諢上@縺ヲ荳九&縺縲 縺昴≧縺ァ縺ェ縺蝣エ蜷医ッ縲∵ャ。縺ョ蜀螳ケ繧呈戟縺、 `update` 繝薙Η繝シ繧偵Ξ繝ウ繝繝ェ繝ウ繧ー縺励∪縺吶 ```php