mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 13:02:24 +08:00
dosc/guide-ja updated [ci skip] (#13471)
* doc/guide-ja updated [ci skip] * docs/guide-ja updated [ci skip] * docs/guide-ja/db-migrations.md updated [ci skip]
This commit is contained in:
committed by
Alexander Makarov
parent
5609e918de
commit
7988331e65
@ -9,7 +9,7 @@
|
|||||||
* [ビヘイビア](concept-behaviors.md)
|
* [ビヘイビア](concept-behaviors.md)
|
||||||
|
|
||||||
個々にでも、組み合わせでも、これらの機能は Yii のクラスのカスタマイズ性と使いやすさをとても高めてくれます。たとえば、[[yii\jui\DatePicker|日付選択]] を行うユーザインターフェース·コンポーネントは、
|
個々にでも、組み合わせでも、これらの機能は Yii のクラスのカスタマイズ性と使いやすさをとても高めてくれます。たとえば、[[yii\jui\DatePicker|日付選択]] を行うユーザインターフェース·コンポーネントは、
|
||||||
対話型の日付選択UIを生成するとき、[ビュー](structure-view.md) で次のように使用することができます:
|
対話型の日付選択UIを生成するとき、[ビュー](structure-views.md) で次のように使用することができます:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
use yii\jui\DatePicker;
|
use yii\jui\DatePicker;
|
||||||
|
|||||||
@ -869,11 +869,12 @@ return [
|
|||||||
もう、`migrationTable` のコマンドラインオプションを使ってテーブルを指定する必要はなくなります。
|
もう、`migrationTable` のコマンドラインオプションを使ってテーブルを指定する必要はなくなります。
|
||||||
|
|
||||||
|
|
||||||
### Namespaced Migrations <span id="namespaced-migrations"></span>
|
### 名前空間を持つマイグレーション <span id="namespaced-migrations"></span>
|
||||||
|
|
||||||
Since 2.0.10 you can use namespaces for the migration classes. You can specify the list of the migration namespaces via
|
2.0.10 以降では、マイグレーションのクラスに名前空間を適用することが出来ます。
|
||||||
[[yii\console\controllers\MigrateController::migrationNamespaces|migrationNamespaces]]. Using of the namespaces for
|
マイグレーションの名前空間のリストをを [[yii\console\controllers\MigrateController::migrationNamespaces|migrationNamespaces]] によって指定することが出来ます。
|
||||||
migration classes allows you usage of the several source locations for the migrations. For example:
|
マイグレーションのクラスに名前空間を使うと、マイグレーションのソースについて、複数の配置場所を使用することが出来ます。
|
||||||
|
例えば、
|
||||||
|
|
||||||
```php
|
```php
|
||||||
return [
|
return [
|
||||||
@ -881,36 +882,35 @@ return [
|
|||||||
'migrate' => [
|
'migrate' => [
|
||||||
'class' => 'yii\console\controllers\MigrateController',
|
'class' => 'yii\console\controllers\MigrateController',
|
||||||
'migrationNamespaces' => [
|
'migrationNamespaces' => [
|
||||||
'app\migrations', // Common migrations for the whole application
|
'app\migrations', // アプリケーション全体のための共通のマイグレーション
|
||||||
'module\migrations', // Migrations for the specific project's module
|
'module\migrations', // プロジェクトの特定のモジュールのためのマイグレーション
|
||||||
'some\extension\migrations', // Migrations for the specific extension
|
'some\extension\migrations', // 特定のエクステンションのためのマイグレーション
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
```
|
```
|
||||||
|
|
||||||
> Note: migrations applied from different namespaces will create a **single** migration history, e.g. you might be
|
> Note: 異なる名前空間に属するマイグレーションを適用しても、**単一の** マイグレーション履歴が生成されます。
|
||||||
unable to apply or revert migrations from particular namespace only.
|
> つまり、特定の名前空間に属するマイグレーションだけを適用したり元に戻したりすることは出来ません。
|
||||||
|
|
||||||
While operating namespaced migrations: creating new, reverting and so on, you should specify full namespace before
|
名前空間を持つマイグレーションを操作するときは、新規作成時も、元に戻すときも、マイグレーション名の前にフルパスの名前空間を指定しなければなりません。
|
||||||
migration name. Note that backslash (`\`) symbol is usually considered a special character in the shell, so you need
|
バックスラッシュ (`\`) のシンボルは、通常、シェルでは特殊文字として扱われますので、シェルのエラーや誤った動作を防止するために、適切にエスケープしなければならないことに注意して下さい。
|
||||||
to escape it properly to avoid shell errors or incorrect behavior. For example:
|
例えば、
|
||||||
|
|
||||||
```
|
```
|
||||||
yii migrate/create 'app\\migrations\\createUserTable'
|
yii migrate/create 'app\\migrations\\createUserTable'
|
||||||
```
|
```
|
||||||
|
|
||||||
> Note: migrations specified via [[yii\console\controllers\MigrateController::migrationPath|migrationPath]] can not
|
> Note: [[yii\console\controllers\MigrateController::migrationPath|migrationPath]] によって指定されたマイグレーションは、名前空間を持つことが出来ません。
|
||||||
contain a namespace, namespaced migration can be applied only via [[yii\console\controllers\MigrateController::migrationNamespaces]]
|
名前空間を持つマイグレーションは [[yii\console\controllers\MigrateController::migrationNamespaces]] プロパティを通じてのみ適用可能です。
|
||||||
property.
|
|
||||||
|
|
||||||
|
|
||||||
### 分離されたマイグレーション <span id="separated-migrations"></span>
|
### 分離されたマイグレーション <span id="separated-migrations"></span>
|
||||||
|
|
||||||
Sometimes using single migration history for all project migrations is not desirable. For example: you may install some
|
プロジェクトのマイグレーション全体に単一のマイグレーション履歴を使用することが望ましくない場合もあります。
|
||||||
'blog' extension, which contains fully separated functionality and contain its own migrations, which should not affect
|
例えば、完全に独立した機能性とそれ自身のためのマイグレーションを持つような 'blog' エクステンションをインストールする場合には、
|
||||||
the ones dedicated to main project functionality.
|
メインのプロジェクトの機能専用のマイグレーションに影響を与えたくないでしょう。
|
||||||
|
|
||||||
これらをお互いに完全に分離して適用かつ追跡したい場合は、別々の名前空間とマイグレーション履歴テーブルを使う
|
これらをお互いに完全に分離して適用かつ追跡したい場合は、別々の名前空間とマイグレーション履歴テーブルを使う
|
||||||
複数のマイグレーションコマンドを構成することが出来ます。
|
複数のマイグレーションコマンドを構成することが出来ます。
|
||||||
|
|||||||
@ -10,7 +10,7 @@ Yii が内蔵している [[yii\web\ErrorHandler|エラーハンドラ]] は、
|
|||||||
* さまざまなエラーレスポンス形式をサポートしています。
|
* さまざまなエラーレスポンス形式をサポートしています。
|
||||||
|
|
||||||
[[yii\web\ErrorHandler|エラーハンドラ]] はデフォルトで有効になっています。
|
[[yii\web\ErrorHandler|エラーハンドラ]] はデフォルトで有効になっています。
|
||||||
アプリケーションの [エントリスクリプト](structure-entry-scripts.md) において、定数 `YII_ENABLE_ERROR_HANDLER` を false と定義することによって、これを無効にすることが出来ます。
|
アプリケーションの [エントリスクリプト](structure-entry-scripts.md) において、定数 `YII_ENABLE_ERROR_HANDLER` を `false` と定義することによって、これを無効にすることが出来ます。
|
||||||
|
|
||||||
|
|
||||||
## エラーハンドラを使用する <span id="using-error-handler"></span>
|
## エラーハンドラを使用する <span id="using-error-handler"></span>
|
||||||
@ -59,8 +59,8 @@ throw new NotFoundHttpException();
|
|||||||
## エラー表示をカスタマイズする <span id="customizing-error-display"></span>
|
## エラー表示をカスタマイズする <span id="customizing-error-display"></span>
|
||||||
|
|
||||||
[[yii\web\ErrorHandler|エラーハンドラ]] は、定数 `YII_DEBUG` の値に従って、エラー表示を調整します。
|
[[yii\web\ErrorHandler|エラーハンドラ]] は、定数 `YII_DEBUG` の値に従って、エラー表示を調整します。
|
||||||
`YII_DEBUG` が true である (デバッグモードである) 場合は、エラーハンドラは、デバッグがより容易になるように、例外とともに、詳細なコールスタック情報とソースコード行を表示します。
|
`YII_DEBUG` が `true` である (デバッグモードである) 場合は、エラーハンドラは、デバッグがより容易になるように、例外とともに、詳細なコールスタック情報とソースコード行を表示します。
|
||||||
そして、`YII_DEBUG` が false のときは、アプリケーションに関する公開できない情報の開示を防ぐために、エラーメッセージだけが表示されます。
|
そして、`YII_DEBUG` が `false` のときは、アプリケーションに関する公開できない情報の開示を防ぐために、エラーメッセージだけが表示されます。
|
||||||
|
|
||||||
> Info: 例外が [[yii\base\UserException]] の子孫である場合は、`YII_DEBUG` の値の如何にかかわらず、コールスタックは表示されません。
|
> Info: 例外が [[yii\base\UserException]] の子孫である場合は、`YII_DEBUG` の値の如何にかかわらず、コールスタックは表示されません。
|
||||||
これは、この種の例外はユーザの誤操作によって引き起こされるものであり、開発者は何も修正する必要がないと考えられるからです。
|
これは、この種の例外はユーザの誤操作によって引き起こされるものであり、開発者は何も修正する必要がないと考えられるからです。
|
||||||
@ -68,7 +68,7 @@ throw new NotFoundHttpException();
|
|||||||
デフォルトでは、[[yii\web\ErrorHandler|エラーハンドラ]] は二つの [ビュー](structure-views.md) を使ってエラーを表示します。
|
デフォルトでは、[[yii\web\ErrorHandler|エラーハンドラ]] は二つの [ビュー](structure-views.md) を使ってエラーを表示します。
|
||||||
|
|
||||||
* `@yii/views/errorHandler/error.php`: エラーがコールスタック情報なしで表示されるべき場合に使用されます。
|
* `@yii/views/errorHandler/error.php`: エラーがコールスタック情報なしで表示されるべき場合に使用されます。
|
||||||
`YII_DEBUG` が false の場合、これが表示される唯一のビューとなります。
|
`YII_DEBUG` が `false` の場合、これが表示される唯一のビューとなります。
|
||||||
* `@yii/views/errorHandler/exception.php`: エラーがコールスタック情報と共に表示されるべき場合に使用されます。
|
* `@yii/views/errorHandler/exception.php`: エラーがコールスタック情報と共に表示されるべき場合に使用されます。
|
||||||
|
|
||||||
エラー表示をカスタマイズするために、エラーハンドラの [[yii\web\ErrorHandler::errorView|errorView]] および [[yii\web\ErrorHandler::exceptionView|exceptionView]] プロパティを構成して、自分自身のビューを使用することが出来ます。
|
エラー表示をカスタマイズするために、エラーハンドラの [[yii\web\ErrorHandler::errorView|errorView]] および [[yii\web\ErrorHandler::exceptionView|exceptionView]] プロパティを構成して、自分自身のビューを使用することが出来ます。
|
||||||
|
|||||||
@ -191,8 +191,9 @@ public function actionOld()
|
|||||||
そして、クライアントサイドで、このヘッダの値を読み、それに応じてブラウザをリダイレクトする JavaScript を書くことが出来ます。
|
そして、クライアントサイドで、このヘッダの値を読み、それに応じてブラウザをリダイレクトする JavaScript を書くことが出来ます。
|
||||||
|
|
||||||
> Info: Yii には `yii.js` という JavaScript ファイルが付属しています。
|
> Info: Yii には `yii.js` という JavaScript ファイルが付属しています。
|
||||||
これは、よく使われる一連の JavaScript 機能を提供するもので、その中には `X-Redirect` ヘッダに基づくブラウザのリダイレクトも含まれています。
|
これは、よく使われる一連の JavaScript 機能を提供するもので、その中には `X-Redirect` ヘッダに基づくブラウザのリダイレクトも含まれています。
|
||||||
従って、あなたが ([[yii\web\YiiAsset]] アセットバンドルを登録して) この JavaScript ファイルを使うつもりなら、AJAX のリダイレクトをサポートするためには、何も書く必要がなくなります。
|
従って、あなたが ([[yii\web\YiiAsset]] アセットバンドルを登録して) この JavaScript ファイルを使うつもりなら、AJAX のリダイレクトをサポートするためには、何も書く必要がなくなります。
|
||||||
|
`yii.js` に関する更なる情報は [クライアントスクリプトの節](output-client-scripts.md#yii.js) にあります。
|
||||||
|
|
||||||
|
|
||||||
## ファイルを送信する <span id="sending-files"></span>
|
## ファイルを送信する <span id="sending-files"></span>
|
||||||
|
|||||||
@ -288,7 +288,7 @@ unset($cookies['language']);
|
|||||||
や [[yii\web\Cookie::expire|expire]] など、他のプロパティを定義して、利用可能なクッキー情報の全てを完全に表しています。
|
や [[yii\web\Cookie::expire|expire]] など、他のプロパティを定義して、利用可能なクッキー情報の全てを完全に表しています。
|
||||||
クッキーを準備するときに必要に応じてこれらのプロパティを構成してから、レスポンスのクッキーコレクションに追加することが出来ます。
|
クッキーを準備するときに必要に応じてこれらのプロパティを構成してから、レスポンスのクッキーコレクションに追加することが出来ます。
|
||||||
|
|
||||||
> Note: セキュリティを向上させるために、[[yii\web\Cookie::httpOnly]] のデフォルト値は true に設定されています。
|
> Note: セキュリティを向上させるために、[[yii\web\Cookie::httpOnly]] のデフォルト値は `true` に設定されています。
|
||||||
これは、クライアントサイドスクリプトが保護されたクッキーにアクセスする危険を軽減するものです (ブラウザがサポートしていれば)。
|
これは、クライアントサイドスクリプトが保護されたクッキーにアクセスする危険を軽減するものです (ブラウザがサポートしていれば)。
|
||||||
詳細については、[httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) を読んでください。
|
詳細については、[httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly) を読んでください。
|
||||||
|
|
||||||
@ -304,7 +304,7 @@ unset($cookies['language']);
|
|||||||
これは、サードパーティのライブラリが、クッキー検証を含まない独自の方法でクッキーを操作することが出来るようにするするためです。
|
これは、サードパーティのライブラリが、クッキー検証を含まない独自の方法でクッキーを操作することが出来るようにするするためです。
|
||||||
|
|
||||||
クッキー検証はデフォルトで有効になっています。
|
クッキー検証はデフォルトで有効になっています。
|
||||||
[[yii\web\Request::enableCookieValidation]] プロパティを false に設定することによって無効にすることが出来ますが、無効にしないことを強く推奨します。
|
[[yii\web\Request::enableCookieValidation]] プロパティを `false` に設定することによって無効にすることが出来ますが、無効にしないことを強く推奨します。
|
||||||
|
|
||||||
> Note: `$_COOKIE` と `setcookie()` によって直接に 読み出し/送信 されるクッキーは検証されません。
|
> Note: `$_COOKIE` と `setcookie()` によって直接に 読み出し/送信 されるクッキーは検証されません。
|
||||||
|
|
||||||
|
|||||||
@ -245,6 +245,10 @@ return [
|
|||||||
|
|
||||||
`yii migrate --migrationPath=@yii/rbac/migrations`
|
`yii migrate --migrationPath=@yii/rbac/migrations`
|
||||||
|
|
||||||
|
異なる名前空間のマイグレーションを扱う方法の詳細については
|
||||||
|
[分離されたマイグレーション](db-migrations.md#separated-migrations) の節を参照して下さい。
|
||||||
|
|
||||||
|
|
||||||
これで `authManager` は `\Yii::$app->authManager` によってアクセスすることが出来るようになります。
|
これで `authManager` は `\Yii::$app->authManager` によってアクセスすることが出来るようになります。
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -57,7 +57,7 @@ class EntryForm extends Model
|
|||||||
* `email` のデータは構文的に有効なメールアドレスでなければならない
|
* `email` のデータは構文的に有効なメールアドレスでなければならない
|
||||||
|
|
||||||
ユーザによって入力されたデータを `EntryForm` オブジェクトに投入した後、[[yii\base\Model::validate()|validate()]] を呼んでデータ検証ルーチンを始動することが出来ます。
|
ユーザによって入力されたデータを `EntryForm` オブジェクトに投入した後、[[yii\base\Model::validate()|validate()]] を呼んでデータ検証ルーチンを始動することが出来ます。
|
||||||
データ検証が失敗すると [[yii\base\Model::hasErrors|hasErrors]] プロパティが true に設定されます。
|
データ検証が失敗すると [[yii\base\Model::hasErrors|hasErrors]] プロパティが `true` に設定されます。
|
||||||
そして、[[yii\base\Model::getErrors|errors]] を通じて、どのような検証エラーが発生したかを知ることが出来ます。
|
そして、[[yii\base\Model::getErrors|errors]] を通じて、どのような検証エラーが発生したかを知ることが出来ます。
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -33,7 +33,7 @@ if (YII_ENV_DEV) {
|
|||||||
上記の構成情報は、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは `gii` という名前のモジュールをインクルードすべきこと、そして `gii` は [[yii\gii\Module]] というクラスであることを記述しています。
|
上記の構成情報は、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは `gii` という名前のモジュールをインクルードすべきこと、そして `gii` は [[yii\gii\Module]] というクラスであることを記述しています。
|
||||||
|
|
||||||
アプリケーションの [エントリスクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。
|
アプリケーションの [エントリスクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。
|
||||||
これは本質的には `YII_ENV_DEV` を true に設定するものです。
|
これは本質的には `YII_ENV_DEV` を `true` に設定するものです。
|
||||||
|
|
||||||
```php
|
```php
|
||||||
defined('YII_ENV') or define('YII_ENV', 'dev');
|
defined('YII_ENV') or define('YII_ENV', 'dev');
|
||||||
|
|||||||
@ -50,7 +50,7 @@ Composer は `composer self-update` コマンドを実行してアップデー
|
|||||||
> アクセス・トークンの構成の仕方については、[Github API トークンに関する Composer ドキュメント](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens)
|
> アクセス・トークンの構成の仕方については、[Github API トークンに関する Composer ドキュメント](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens)
|
||||||
> の指示を参照して下さい。
|
> の指示を参照して下さい。
|
||||||
|
|
||||||
### Yii をインストールする
|
### Yii をインストールする <span id="installing-from-composer"></span>
|
||||||
|
|
||||||
Composer がインストールされたら、ウェブからアクセスできるフォルダで下記のコマンドを実行することによって Yii をインストールすることが出来ます。
|
Composer がインストールされたら、ウェブからアクセスできるフォルダで下記のコマンドを実行することによって Yii をインストールすることが出来ます。
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ http://localhost:8080/
|
|||||||
```
|
```
|
||||||
|
|
||||||
Yii の最低必要条件を満たすように PHP のインストールを構成しなければなりません。
|
Yii の最低必要条件を満たすように PHP のインストールを構成しなければなりません。
|
||||||
最も重要なことは、PHP 5.4 以上でなければならないということです。
|
最も重要なことは、PHP 5.4 以上でなければならないということです。最新の PHP 7 なら理想的です。
|
||||||
また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベースドライバ (MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。
|
また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベースドライバ (MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -397,7 +397,7 @@ class SiteController extends Controller
|
|||||||
* アクション ID に合致するアクションメソッドが見つかった場合は、インラインアクションが作成される。
|
* アクション ID に合致するアクションメソッドが見つかった場合は、インラインアクションが作成される。
|
||||||
* 上記以外の場合は、[[yii\base\InvalidRouteException]] 例外が投げられる。
|
* 上記以外の場合は、[[yii\base\InvalidRouteException]] 例外が投げられる。
|
||||||
3. コントローラは、アプリケーション、(コントローラがモジュールに属する場合は) モジュール、そしてコントローラの `beforeAction()` メソッドをこの順で呼び出す。
|
3. コントローラは、アプリケーション、(コントローラがモジュールに属する場合は) モジュール、そしてコントローラの `beforeAction()` メソッドをこの順で呼び出す。
|
||||||
* どれか一つの呼び出しが false を返した場合は、残りのまだ呼ばれていない `beforeAction()` メソッドはスキップされ、アクションの実行はキャンセルされる。
|
* どれか一つの呼び出しが `false` を返した場合は、残りのまだ呼ばれていない `beforeAction()` メソッドはスキップされ、アクションの実行はキャンセルされる。
|
||||||
* デフォルトでは、それぞれの `beforeAction()` メソッドは、ハンドラをアタッチすることが可能な `beforeAction` イベントをトリガする。
|
* デフォルトでは、それぞれの `beforeAction()` メソッドは、ハンドラをアタッチすることが可能な `beforeAction` イベントをトリガする。
|
||||||
4. コントローラがアクションを実行する。
|
4. コントローラがアクションを実行する。
|
||||||
* アクションパラメータが解析されて、リクエストデータからデータが投入される。
|
* アクションパラメータが解析されて、リクエストデータからデータが投入される。
|
||||||
|
|||||||
@ -60,7 +60,7 @@ public function behaviors()
|
|||||||
新しいアクションフィルタを作成するためには、[[yii\base\ActionFilter]] を拡張して、[[yii\base\ActionFilter::beforeAction()|beforeAction()]] および/または [[yii\base\ActionFilter::afterAction()|afterAction()]] メソッドをオーバーライドします。
|
新しいアクションフィルタを作成するためには、[[yii\base\ActionFilter]] を拡張して、[[yii\base\ActionFilter::beforeAction()|beforeAction()]] および/または [[yii\base\ActionFilter::afterAction()|afterAction()]] メソッドをオーバーライドします。
|
||||||
前者はアクションが走る前に実行され、後者は走った後に実行されます。
|
前者はアクションが走る前に実行され、後者は走った後に実行されます。
|
||||||
[[yii\base\ActionFilter::beforeAction()|beforeAction()]] の返り値が、アクションが実行されるべきか否かを決定します。
|
[[yii\base\ActionFilter::beforeAction()|beforeAction()]] の返り値が、アクションが実行されるべきか否かを決定します。
|
||||||
返り値が false である場合、このフィルタの後に続くフィルタはスキップされ、アクションは実行を中止されます。
|
返り値が `false` である場合、このフィルタの後に続くフィルタはスキップされ、アクションは実行を中止されます。
|
||||||
|
|
||||||
次の例は、アクションの実行時間をログに記録するフィルタを示すものです。
|
次の例は、アクションの実行時間をログに記録するフィルタを示すものです。
|
||||||
|
|
||||||
|
|||||||
@ -37,7 +37,7 @@ echo $model->name;
|
|||||||
```
|
```
|
||||||
|
|
||||||
また、配列の要素にアクセスするようして、属性にアクセスすることも出来ます。
|
また、配列の要素にアクセスするようして、属性にアクセスすることも出来ます。
|
||||||
これは、[[yii\base\Model]] が [ArrayAccess インターフェイス](http://php.net/manual/ja/class.arrayaccess.php) と [ArrayIterator クラス](http://jp2.php.net/manual/ja/class.arrayiterator.php) をサポートしている恩恵です。
|
これは、[[yii\base\Model]] が [ArrayAccess インターフェイス](http://php.net/manual/ja/class.arrayaccess.php) と [Traversable インターフェイス](http://jp2.php.net/manual/ja/class.traversable.php) をサポートしている恩恵です。
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$model = new \app\models\ContactForm;
|
$model = new \app\models\ContactForm;
|
||||||
@ -46,7 +46,7 @@ $model = new \app\models\ContactForm;
|
|||||||
$model['name'] = 'example';
|
$model['name'] = 'example';
|
||||||
echo $model['name'];
|
echo $model['name'];
|
||||||
|
|
||||||
// 属性に反復アクセスする
|
// モデルは foreach で中身をたどることが出来る
|
||||||
foreach ($model as $name => $value) {
|
foreach ($model as $name => $value) {
|
||||||
echo "$name: $value\n";
|
echo "$name: $value\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -177,7 +177,7 @@ $module = MyModuleClass::getInstance();
|
|||||||
|
|
||||||
ここで `MyModuleClass` は、当該モジュールクラスの名前を指すものです。
|
ここで `MyModuleClass` は、当該モジュールクラスの名前を指すものです。
|
||||||
`getInstance()` メソッドは、現在リクエストされているモジュールクラスのインスタンスを返します。
|
`getInstance()` メソッドは、現在リクエストされているモジュールクラスのインスタンスを返します。
|
||||||
モジュールがリクエストされていない場合は、このメソッドは null を返します。
|
モジュールがリクエストされていない場合は、このメソッドは `null` を返します。
|
||||||
モジュールクラスの新しいインスタンスを手動で作成しようとしてはいけないことに注意してください。
|
モジュールクラスの新しいインスタンスを手動で作成しようとしてはいけないことに注意してください。
|
||||||
手動で作成したインスタンスは、リクエストに対するレスポンスとして Yii によって作成されたインスタンスとは別のものになります。
|
手動で作成したインスタンスは、リクエストに対するレスポンスとして Yii によって作成されたインスタンスとは別のものになります。
|
||||||
|
|
||||||
|
|||||||
@ -596,7 +596,7 @@ $this->registerLinkTag([
|
|||||||
これらのイベントに反応することによって、ビューにコンテントを注入したり、エンドユーザに送信される前にレンダリング結果を加工したりすることが出来ます。
|
これらのイベントに反応することによって、ビューにコンテントを注入したり、エンドユーザに送信される前にレンダリング結果を加工したりすることが出来ます。
|
||||||
|
|
||||||
- [[yii\base\View::EVENT_BEFORE_RENDER|EVENT_BEFORE_RENDER]]: コントローラでファイルをレンダリングする前にトリガされます。
|
- [[yii\base\View::EVENT_BEFORE_RENDER|EVENT_BEFORE_RENDER]]: コントローラでファイルをレンダリングする前にトリガされます。
|
||||||
このイベントのハンドラは、[[yii\base\ViewEvent::isValid]] を false にセットして、レンダリングのプロセスをキャンセルすることが出来ます。
|
このイベントのハンドラは、[[yii\base\ViewEvent::isValid]] を `false` にセットして、レンダリングのプロセスをキャンセルすることが出来ます。
|
||||||
- [[yii\base\View::EVENT_AFTER_RENDER|EVENT_AFTER_RENDER]]: ファイルのレンダリングの後、[[yii\base\View::afterRender()]] を呼ぶことによってトリガされます。
|
- [[yii\base\View::EVENT_AFTER_RENDER|EVENT_AFTER_RENDER]]: ファイルのレンダリングの後、[[yii\base\View::afterRender()]] を呼ぶことによってトリガされます。
|
||||||
このイベントのハンドラは、レンダリング結果をプロパティ [[yii\base\ViewEvent::output]] を通じて取得して、それを修正してレンダリング結果を変更することが出来ます。
|
このイベントのハンドラは、レンダリング結果をプロパティ [[yii\base\ViewEvent::output]] を通じて取得して、それを修正してレンダリング結果を変更することが出来ます。
|
||||||
- [[yii\base\View::EVENT_BEGIN_PAGE|EVENT_BEGIN_PAGE]]: レイアウトの中で [[yii\base\View::beginPage()]] を呼ぶことによってトリガされます。
|
- [[yii\base\View::EVENT_BEGIN_PAGE|EVENT_BEGIN_PAGE]]: レイアウトの中で [[yii\base\View::beginPage()]] を呼ぶことによってトリガされます。
|
||||||
|
|||||||
@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
テストはソフトウェア開発の重要な部分です。
|
テストはソフトウェア開発の重要な部分です。
|
||||||
気付いているか否かにかかわらず、私たちは継続的にテストをしています。
|
気付いているか否かにかかわらず、私たちは継続的にテストをしています。
|
||||||
例えば、PHP でクラスを書くとき、私たちはステップごとにデバッグしたり、または単純に echo 文や die 文を使ったりして、実装が最初の計画通りに動作することを検証します。
|
例えば、PHP でクラスを書くとき、私たちはステップごとにデバッグしたり、または単純に `echo` 文や `die` 文を使ったりして、実装が最初の計画通りに動作することを検証します。
|
||||||
ウェブアプリケーションの場合は、何らかのテストデータをフォームに入力して、ページが期待通りにユーザと相互作用をすることを確認します。
|
ウェブアプリケーションの場合は、何らかのテストデータをフォームに入力して、ページが期待通りにユーザと相互作用をすることを確認します。
|
||||||
|
|
||||||
テストを実行するプロセスを自動化して、何かを検証する必要があるときは、いつでも、それを代行してくれるコードを呼び出すだけでよいようにすることが出来ます。
|
テストを実行するプロセスを自動化して、何かを検証する必要があるときは、いつでも、それを代行してくれるコードを呼び出すだけでよいようにすることが出来ます。
|
||||||
結果が計画したものと合致することを検証するコードがテストと呼ばれ、それを作成して更に実行するプロセスがテスト自動化として知られています。
|
結果が計画したものと合致することを検証するコードが *テスト* と呼ばれ、それを作成して更に実行するプロセスが *テスト自動化* として知られています。
|
||||||
このテストの章の主題は、このテストの自動化です。
|
このテストの章の主題は、このテストの自動化です。
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -34,12 +34,12 @@ public function rules()
|
|||||||
|
|
||||||
このバリデータは、入力値が真偽値であるかどうかをチェックします。
|
このバリデータは、入力値が真偽値であるかどうかをチェックします。
|
||||||
|
|
||||||
- `trueValue`: *true* を表す値。デフォルト値は `'1'`。
|
- `trueValue`: `true` を表す値。デフォルト値は `'1'`。
|
||||||
- `falseValue`: *false* を表す値。デフォルト値は `'0'`。
|
- `falseValue`: `false` を表す値。デフォルト値は `'0'`。
|
||||||
- `strict`: 入力値の型が `trueValue` と `falseValue` の型と一致しなければならないかどうか。デフォルト値は `false`。
|
- `strict`: 入力値の型が `trueValue` と `falseValue` の型と一致しなければならないかどうか。デフォルト値は `false`。
|
||||||
|
|
||||||
|
|
||||||
> Note: HTML フォームで送信されたデータ入力値は全て文字列であるため、通常は、[[yii\validators\BooleanValidator::strict|strict]] プロパティは false のままにすべきです。
|
> Note: HTML フォームで送信されたデータ入力値は全て文字列であるため、通常は、[[yii\validators\BooleanValidator::strict|strict]] プロパティは `false` のままにすべきです。
|
||||||
|
|
||||||
|
|
||||||
## [[yii\captcha\CaptchaValidator|captcha]] <span id="captcha"></span>
|
## [[yii\captcha\CaptchaValidator|captcha]] <span id="captcha"></span>
|
||||||
@ -52,9 +52,9 @@ public function rules()
|
|||||||
|
|
||||||
このバリデータは、通常、[[yii\captcha\CaptchaAction]] および [[yii\captcha\Captcha]] と一緒に使われ、入力値が [[yii\captcha\Captcha|CAPTCHA]] ウィジェットによって表示された検証コードと同じであることを確認します。
|
このバリデータは、通常、[[yii\captcha\CaptchaAction]] および [[yii\captcha\Captcha]] と一緒に使われ、入力値が [[yii\captcha\Captcha|CAPTCHA]] ウィジェットによって表示された検証コードと同じであることを確認します。
|
||||||
|
|
||||||
- `caseSensitive`: 検証コードの比較で大文字と小文字を区別するかどうか。デフォルト値は false。
|
- `caseSensitive`: 検証コードの比較で大文字と小文字を区別するかどうか。デフォルト値は `false`。
|
||||||
- `captchaAction`: CAPTCHA 画像を表示する [[yii\captcha\CaptchaAction|CAPTCHA アクション]] に対応する [ルート](structure-controllers.md#routes)。デフォルト値は `'site/captcha'`。
|
- `captchaAction`: CAPTCHA 画像を表示する [[yii\captcha\CaptchaAction|CAPTCHA アクション]] に対応する [ルート](structure-controllers.md#routes)。デフォルト値は `'site/captcha'`。
|
||||||
- `skipOnEmpty`: 入力値が空のときに検証をスキップできるかどうか。デフォルト値は false で、入力が必須であることを意味します。
|
- `skipOnEmpty`: 入力値が空のときに検証をスキップできるかどうか。デフォルト値は `false` で、入力が必須であることを意味します。
|
||||||
|
|
||||||
|
|
||||||
## [[yii\validators\CompareValidator|compare]] <span id="compare"></span>
|
## [[yii\validators\CompareValidator|compare]] <span id="compare"></span>
|
||||||
@ -64,8 +64,11 @@ public function rules()
|
|||||||
// "password" 属性の値が "password_repeat" 属性の値と同じであるかどうか検証する
|
// "password" 属性の値が "password_repeat" 属性の値と同じであるかどうか検証する
|
||||||
['password', 'compare'],
|
['password', 'compare'],
|
||||||
|
|
||||||
|
// 上記と同じだが、比較する属性を明示的に指定
|
||||||
|
['password', 'compare', 'compareAttribute' => 'password_repeat'],
|
||||||
|
|
||||||
// "age" が 30 以上であるかどうか検証する
|
// "age" が 30 以上であるかどうか検証する
|
||||||
['age', 'compare', 'compareValue' => 30, 'operator' => '>='],
|
['age', 'compare', 'compareValue' => 30, 'operator' => '>=', 'type' => 'number'],
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -86,7 +89,9 @@ public function rules()
|
|||||||
* `>=`: 検証される値が比較される値よりも大きいか等しいことを検証する。
|
* `>=`: 検証される値が比較される値よりも大きいか等しいことを検証する。
|
||||||
* `<`: 検証される値が比較される値よりも小さいことを検証する。
|
* `<`: 検証される値が比較される値よりも小さいことを検証する。
|
||||||
* `<=`: 検証される値が比較される値よりも小さいか等しいことを検証する。
|
* `<=`: 検証される値が比較される値よりも小さいか等しいことを検証する。
|
||||||
|
- `type`: デフォルトの比較タイプは '[[yii\validators\CompareValidator::TYPE_STRING|string]]' (文字列) であり、その場合、値は 1 バイトごとに比較されます。
|
||||||
|
数値を比較する場合は、必ず [[yii\validators\CompareValidator::$type|$type]] を '[[yii\validators\CompareValidator::TYPE_NUMBER|number]]' に設定して、数値としての比較を有効にして下さい。
|
||||||
|
|
||||||
|
|
||||||
### 日付の値を比較する
|
### 日付の値を比較する
|
||||||
|
|
||||||
@ -111,9 +116,14 @@ compare バリデータは、文字列や数値を比較するためにしか使
|
|||||||
|
|
||||||
## [[yii\validators\DateValidator|date]] <span id="date"></span>
|
## [[yii\validators\DateValidator|date]] <span id="date"></span>
|
||||||
|
|
||||||
|
[[yii\validators\DateValidator|date]] バリデータには 3 つの異なるショートカットがあります。
|
||||||
|
|
||||||
|
|
||||||
```php
|
```php
|
||||||
[
|
[
|
||||||
[['from_date', 'to_date'], 'date'],
|
[['from_date', 'to_date'], 'date'],
|
||||||
|
[['from_datetime', 'to_datetime'], 'datetime'],
|
||||||
|
[['some_time'], 'time'],
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -133,6 +143,9 @@ compare バリデータは、文字列や数値を比較するためにしか使
|
|||||||
|
|
||||||
バージョン 2.0.4 以降では、[[yii\validators\DateValidator::$timestampAttributeFormat|$timestampAttributeFormat]] と [[yii\validators\DateValidator::$timestampAttributeTimeZone|$timestampAttributeTimeZone]] を使って、この属性に対するフォーマットとタイムゾーンを指定することが出来ます。
|
バージョン 2.0.4 以降では、[[yii\validators\DateValidator::$timestampAttributeFormat|$timestampAttributeFormat]] と [[yii\validators\DateValidator::$timestampAttributeTimeZone|$timestampAttributeTimeZone]] を使って、この属性に対するフォーマットとタイムゾーンを指定することが出来ます。
|
||||||
|
|
||||||
|
`timestampAttribute` を使う場合、入力値が UNIX タイムスタンプに変換されること、そして、UNIX タイムスタンプは定義により UTC であることに注意して下さい。
|
||||||
|
すなわち、[[yii\validators\DateValidator::timeZone|入力のタイムゾーン]] から UTC への変換が実行されます。
|
||||||
|
|
||||||
- バージョン 2.0.4 以降では、タイムスタンプの [[yii\validators\DateValidator::$min|最小値]] または [[yii\validators\DateValidator::$max|最大値]] を指定することも出来ます。
|
- バージョン 2.0.4 以降では、タイムスタンプの [[yii\validators\DateValidator::$min|最小値]] または [[yii\validators\DateValidator::$max|最大値]] を指定することも出来ます。
|
||||||
|
|
||||||
入力が必須でない場合には、date バリデータに加えて、default バリデータ (デフォルト値フィルタ) を追加すれば、空の入力値が `null` として保存されることを保証することが出来ます。
|
入力が必須でない場合には、date バリデータに加えて、default バリデータ (デフォルト値フィルタ) を追加すれば、空の入力値が `null` として保存されることを保証することが出来ます。
|
||||||
@ -153,7 +166,7 @@ compare バリデータは、文字列や数値を比較するためにしか使
|
|||||||
// 空のときは "country" を "USA" にする
|
// 空のときは "country" を "USA" にする
|
||||||
['country', 'default', 'value' => 'USA'],
|
['country', 'default', 'value' => 'USA'],
|
||||||
|
|
||||||
// 空のときは "from" と "to" に今日から三日後・六日後の日付にする
|
// 空のときは "from" と "to" に今日から三日後・六日後の日付を入れる
|
||||||
[['from', 'to'], 'default', 'value' => function ($model, $attribute) {
|
[['from', 'to'], 'default', 'value' => function ($model, $attribute) {
|
||||||
return date('Y-m-d', strtotime($attribute === 'to' ? '+3 days' : '+6 days'));
|
return date('Y-m-d', strtotime($attribute === 'to' ? '+3 days' : '+6 days'));
|
||||||
}],
|
}],
|
||||||
@ -214,7 +227,7 @@ function foo($model, $attribute) {
|
|||||||
配列の最初の要素がバリデータのクラス名かエイリアスを指定します。
|
配列の最初の要素がバリデータのクラス名かエイリアスを指定します。
|
||||||
配列の残りの「名前・値」のペアが、バリデータオブジェクトを構成するのに使われます。
|
配列の残りの「名前・値」のペアが、バリデータオブジェクトを構成するのに使われます。
|
||||||
- `allowMessageFromRule`: 埋め込まれた検証規則によって返されるエラーメッセージを使うかどうか。
|
- `allowMessageFromRule`: 埋め込まれた検証規則によって返されるエラーメッセージを使うかどうか。
|
||||||
デフォルト値は true です。これが false の場合は、`message` をエラーメッセージとして使います。
|
デフォルト値は `true` です。これが `false` の場合は、`message` をエラーメッセージとして使います。
|
||||||
|
|
||||||
> Note: 属性が配列でない場合は、検証が失敗したと見なされ、`message` がエラーメッセージとして返されます。
|
> Note: 属性が配列でない場合は、検証が失敗したと見なされ、`message` がエラーメッセージとして返されます。
|
||||||
|
|
||||||
@ -230,12 +243,12 @@ function foo($model, $attribute) {
|
|||||||
|
|
||||||
このバリデータは、入力値が有効なメールアドレスであるかどうかをチェックします。
|
このバリデータは、入力値が有効なメールアドレスであるかどうかをチェックします。
|
||||||
|
|
||||||
- `allowName`: メールアドレスに表示名 (例えば、`John Smith <john.smith@example.com>`) を許容するか否か。デフォルト値は false。
|
- `allowName`: メールアドレスに表示名 (例えば、`John Smith <john.smith@example.com>`) を許容するか否か。デフォルト値は `false`。
|
||||||
- `checkDNS`: メールのドメインが存在して A または MX レコードを持っているかどうかをチェックするか否か。
|
- `checkDNS`: メールのドメインが存在して A または MX レコードを持っているかどうかをチェックするか否か。
|
||||||
このチェックは、メールアドレスが実際には有効なものでも、一時的な DNS の問題によって失敗する場合があることに注意してください。
|
このチェックは、メールアドレスが実際には有効なものでも、一時的な DNS の問題によって失敗する場合があることに注意してください。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
- `enableIDN`: 検証のプロセスが IDN (国際化ドメイン名) を考慮に入れるか否か。
|
- `enableIDN`: 検証のプロセスが IDN (国際化ドメイン名) を考慮に入れるか否か。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
IDN のバリデーションを使用するためには、`intl` PHP 拡張をインストールして有効化する必要があることに注意してください。そうしないと、例外が投げられます。
|
IDN のバリデーションを使用するためには、`intl` PHP 拡張をインストールして有効化する必要があることに注意してください。そうしないと、例外が投げられます。
|
||||||
|
|
||||||
|
|
||||||
@ -287,9 +300,9 @@ function foo($model, $attribute) {
|
|||||||
または、`function ($query)` というシグニチャを持つ無名関数でも構いません。
|
または、`function ($query)` というシグニチャを持つ無名関数でも構いません。
|
||||||
`$query` は関数の中で修正できる [[yii\db\Query|Query]] オブジェクトです。
|
`$query` は関数の中で修正できる [[yii\db\Query|Query]] オブジェクトです。
|
||||||
- `allowArray`: 入力値が配列であることを許容するか否か。
|
- `allowArray`: 入力値が配列であることを許容するか否か。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
このプロパティが true で入力値が配列であった場合は、配列の全ての要素がターゲットのカラムに存在しなければなりません。
|
このプロパティが `true` で入力値が配列であった場合は、配列の全ての要素がターゲットのカラムに存在しなければなりません。
|
||||||
`targetAttribute` を配列で指定して複数のカラムに対して検証しようとしている場合は、このプロパティを true に設定することが出来ないことに注意してください。
|
`targetAttribute` を配列で指定して複数のカラムに対して検証しようとしている場合は、このプロパティを `true` に設定することが出来ないことに注意してください。
|
||||||
|
|
||||||
|
|
||||||
## [[yii\validators\FileValidator|file]] <span id="file"></span>
|
## [[yii\validators\FileValidator|file]] <span id="file"></span>
|
||||||
@ -307,24 +320,24 @@ function foo($model, $attribute) {
|
|||||||
- `extensions`: アップロードを許可されるファイル名拡張子のリスト。
|
- `extensions`: アップロードを許可されるファイル名拡張子のリスト。
|
||||||
リストは、配列、または、空白かカンマで区切られたファイル名拡張子からなる文字列 (例えば、"gif, jpg") で指定することが出来ます。
|
リストは、配列、または、空白かカンマで区切られたファイル名拡張子からなる文字列 (例えば、"gif, jpg") で指定することが出来ます。
|
||||||
拡張子名は大文字と小文字を区別しません。
|
拡張子名は大文字と小文字を区別しません。
|
||||||
デフォルト値は null であり、すべてのファイル名拡張子が許可されることを意味します。
|
デフォルト値は `null` であり、すべてのファイル名拡張子が許可されることを意味します。
|
||||||
- `mimeTypes`: アップロードを許可されるファイルの MIME タイプのリスト。
|
- `mimeTypes`: アップロードを許可されるファイルの MIME タイプのリスト。
|
||||||
リストは、配列、または、空白かカンマで区切られたファイルの MIME タイプからなる文字列 (例えば、"image/jpeg, image/png") で指定することが出来ます。
|
リストは、配列、または、空白かカンマで区切られたファイルの MIME タイプからなる文字列 (例えば、"image/jpeg, image/png") で指定することが出来ます。
|
||||||
特殊文字 `*` によるワイルドカードのマスクを使って、一群の MIME タイプに一致させることも出来ます。
|
特殊文字 `*` によるワイルドカードのマスクを使って、一群の MIME タイプに一致させることも出来ます。
|
||||||
例えば `image/*` は、`image/` で始まる全ての MIME タイプ (`image/jpeg`, `image/png` など) を通します。
|
例えば `image/*` は、`image/` で始まる全ての MIME タイプ (`image/jpeg`, `image/png` など) を通します。
|
||||||
MIME タイプ名は大文字と小文字を区別しません。
|
MIME タイプ名は大文字と小文字を区別しません。
|
||||||
デフォルト値は null であり、すべての MIME タイプが許可されることを意味します。
|
デフォルト値は `null` であり、すべての MIME タイプが許可されることを意味します。
|
||||||
MIME タイプの詳細については、[一般的なメディアタイプ](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types) を参照してください。
|
MIME タイプの詳細については、[一般的なメディアタイプ](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types) を参照してください。
|
||||||
- `minSize`: アップロードされるファイルに要求される最小限のバイト数。
|
- `minSize`: アップロードされるファイルに要求される最小限のバイト数。
|
||||||
デフォルト値は null であり、下限値が無いことを意味します。
|
デフォルト値は `null` であり、下限値が無いことを意味します。
|
||||||
- `maxSize`: アップロードされるファイルに許可される最大限のバイト数。
|
- `maxSize`: アップロードされるファイルに許可される最大限のバイト数。
|
||||||
デフォルト値は null であり、上限値が無いことを意味します。
|
デフォルト値は `null` であり、上限値が無いことを意味します。
|
||||||
- `maxFiles`: 指定された属性が保持しうる最大限のファイル数。
|
- `maxFiles`: 指定された属性が保持しうる最大限のファイル数。
|
||||||
デフォルト値は 1 であり、入力値がアップロードされた一つだけのファイルでなければならないことを意味します。
|
デフォルト値は 1 であり、入力値がアップロードされた一つだけのファイルでなければならないことを意味します。
|
||||||
この値が 2 以上である場合は、入力値は最大で `maxFiles` 数のアップロードされたファイルからなる配列でなければなりません。
|
この値が 2 以上である場合は、入力値は最大で `maxFiles` 数のアップロードされたファイルからなる配列でなければなりません。
|
||||||
- `checkExtensionByMimeType`: ファイルの MIME タイプでファイル拡張子をチェックするか否か。
|
- `checkExtensionByMimeType`: ファイルの MIME タイプでファイル拡張子をチェックするか否か。
|
||||||
MIME タイプのチェックから導かれる拡張子がアップロードされたファイルの拡張子と違う場合に、そのファイルは無効であると見なされます。
|
MIME タイプのチェックから導かれる拡張子がアップロードされたファイルの拡張子と違う場合に、そのファイルは無効であると見なされます。
|
||||||
デフォルト値は true であり、そのようなチェックが行われることを意味します。
|
デフォルト値は `true` であり、そのようなチェックが行われることを意味します。
|
||||||
|
|
||||||
`FileValidator` は [[yii\web\UploadedFile]] と一緒に使用されます。
|
`FileValidator` は [[yii\web\UploadedFile]] と一緒に使用されます。
|
||||||
ファイルのアップロードおよびアップロードされたファイルの検証の実行に関する完全な説明は、[ファイルをアップロードする](input-file-upload.md) の節を参照してください。
|
ファイルのアップロードおよびアップロードされたファイルの検証の実行に関する完全な説明は、[ファイルをアップロードする](input-file-upload.md) の節を参照してください。
|
||||||
@ -353,8 +366,8 @@ function foo($model, $attribute) {
|
|||||||
関数のシグニチャは ``function ($value) { return $newValue; }` でなければなりません。
|
関数のシグニチャは ``function ($value) { return $newValue; }` でなければなりません。
|
||||||
このプロパティは必須項目です。
|
このプロパティは必須項目です。
|
||||||
- `skipOnArray`: 入力値が配列である場合にフィルタをスキップするか否か。
|
- `skipOnArray`: 入力値が配列である場合にフィルタをスキップするか否か。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
フィルタが配列の入力を処理できない場合は、このプロパティを true に設定しなければなりません。
|
フィルタが配列の入力を処理できない場合は、このプロパティを `true` に設定しなければなりません。
|
||||||
そうしないと、何らかの PHP エラーが生じ得ます。
|
そうしないと、何らかの PHP エラーが生じ得ます。
|
||||||
|
|
||||||
> Tip: 入力値をトリムしたい場合は、[trim](#trim) バリデータを直接使うことが出来ます。
|
> Tip: 入力値をトリムしたい場合は、[trim](#trim) バリデータを直接使うことが出来ます。
|
||||||
@ -384,10 +397,10 @@ function foo($model, $attribute) {
|
|||||||
これは [file](#file) バリデータを拡張するものであり、従って、そのプロパティの全てを継承しています。
|
これは [file](#file) バリデータを拡張するものであり、従って、そのプロパティの全てを継承しています。
|
||||||
それに加えて、画像の検証の目的に特化した次のプロパティをサポートしています。
|
それに加えて、画像の検証の目的に特化した次のプロパティをサポートしています。
|
||||||
|
|
||||||
- `minWidth`: 画像の幅の最小値。デフォルト値は null であり、下限値がないことを意味します。
|
- `minWidth`: 画像の幅の最小値。デフォルト値は `null` であり、下限値がないことを意味します。
|
||||||
- `maxWidth`: 画像の幅の最大値。デフォルト値は null であり、上限値がないことを意味します。
|
- `maxWidth`: 画像の幅の最大値。デフォルト値は `null` であり、上限値がないことを意味します。
|
||||||
- `minHeight`: 画像の高さの最小値。デフォルト値は null であり、下限値がないことを意味します。
|
- `minHeight`: 画像の高さの最小値。デフォルト値は `null` であり、下限値がないことを意味します。
|
||||||
- `maxHeight`: 画像の高さの最大値。デフォルト値は null であり、上限値がないことを意味します。
|
- `maxHeight`: 画像の高さの最大値。デフォルト値は `null` であり、上限値がないことを意味します。
|
||||||
|
|
||||||
|
|
||||||
## [[yii\validators\IpValidator|ip]] <span id="ip"></span>
|
## [[yii\validators\IpValidator|ip]] <span id="ip"></span>
|
||||||
@ -411,26 +424,26 @@ function foo($model, $attribute) {
|
|||||||
|
|
||||||
バリデータは以下の構成オプションを持っています。
|
バリデータは以下の構成オプションを持っています。
|
||||||
|
|
||||||
- `ipv4`: 検証の対象となる値が IPv4 アドレスであってよいか否か。デフォルト値は true。
|
- `ipv4`: 検証の対象となる値が IPv4 アドレスであってよいか否か。デフォルト値は `true`。
|
||||||
- `ipv6`: 検証の対象となる値が IPv6 アドレスであってよいか否か。デフォルト値は true。
|
- `ipv6`: 検証の対象となる値が IPv6 アドレスであってよいか否か。デフォルト値は `true`。
|
||||||
- `subnet`: アドレスが `192.168.10.0/24` のような CIDR サブネットを持つ IP であってよいか否か。whether the address can be an IP with CIDR subnet, like `192.168.10.0/24`
|
- `subnet`: アドレスが `192.168.10.0/24` のような CIDR サブネットを持つ IP であってよいか否か。
|
||||||
* `true` - サブネットが必要。CIDR の無いアドレスは却下されます
|
* `true` - サブネットが必要。CIDR の無いアドレスは却下されます
|
||||||
* `false` - アドレスは CIDR を伴ってはいけません
|
* `false` - アドレスは CIDR を伴ってはいけません
|
||||||
* `null` - CIDR は有っても無くても構いません
|
* `null` - CIDR は有っても無くても構いません
|
||||||
|
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
- `normalize`: CIDR を持たないアドレスに、最も短い (IPv4 では 32、IPv6 では 128) CIDR プレフィクスを追加するか否か。
|
- `normalize`: CIDR を持たないアドレスに、最も短い (IPv4 では 32、IPv6 では 128) CIDR プレフィクスを追加するか否か。
|
||||||
`subnet` が `false` 以外の場合にのみ動作します。
|
`subnet` が `false` 以外の場合にのみ動作します。
|
||||||
例えば、
|
例えば、
|
||||||
* `10.0.1.5` は `10.0.1.5/32` に正規化され、
|
* `10.0.1.5` は `10.0.1.5/32` に正規化され、
|
||||||
* `2008:db0::1` は `2008:db0::1/128` に正規化されます
|
* `2008:db0::1` は `2008:db0::1/128` に正規化されます
|
||||||
|
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
- `negation`: 検証の対象となるアドレスが先頭に否定文字 `!` を持つことが出来るか否か。
|
- `negation`: 検証の対象となるアドレスが先頭に否定文字 `!` を持つことが出来るか否か。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
- `expandIPv6`: IPv6 アドレスを完全な記法に展開するか否か。
|
- `expandIPv6`: IPv6 アドレスを完全な記法に展開するか否か。
|
||||||
例えば、`2008:db0::1` は `2008:0db0:0000:0000:0000:0000:0000:0001` に展開されます。
|
例えば、`2008:db0::1` は `2008:0db0:0000:0000:0000:0000:0000:0001` に展開されます。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
- `ranges`: 許容または禁止される IPv4 または IPv6 の範囲の配列。
|
- `ranges`: 許容または禁止される IPv4 または IPv6 の範囲の配列。
|
||||||
|
|
||||||
配列が空の場合、またはこのオプションが設定されていない場合は、全ての IP アドレスが許容されます。
|
配列が空の場合、またはこのオプションが設定されていない場合は、全ての IP アドレスが許容されます。
|
||||||
@ -482,11 +495,11 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
|
|||||||
|
|
||||||
- `range`: 与えられた値のリスト。この中に、入力値がなければならない。
|
- `range`: 与えられた値のリスト。この中に、入力値がなければならない。
|
||||||
- `strict`: 入力値と所与の値の比較が厳密でなければならない (型と値の両方が同じでなければならない) かどうか。
|
- `strict`: 入力値と所与の値の比較が厳密でなければならない (型と値の両方が同じでなければならない) かどうか。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
- `not`: 検証結果を反転すべきか否か。デフォルト値は false。
|
- `not`: 検証結果を反転すべきか否か。デフォルト値は `false`。
|
||||||
このプロパティが true に設定されているときは、入力値が所与の値のリストにない場合に検証が成功したとされます。
|
このプロパティが `true` に設定されているときは、入力値が所与の値のリストにない場合に検証が成功したとされます。
|
||||||
- `allowArray`: 入力値が配列であることを許可するかどうか。
|
- `allowArray`: 入力値が配列であることを許可するかどうか。
|
||||||
このプロパティが true であるときに、入力値が配列である場合は、配列の全ての要素が所与の値のリストにある必要があり、そうでなければ検証は失敗します。
|
このプロパティが `true` であるときに、入力値が配列である場合は、配列の全ての要素が所与の値のリストにある必要があり、そうでなければ検証は失敗します。
|
||||||
|
|
||||||
|
|
||||||
## [[yii\validators\NumberValidator|integer]] <span id="integer"></span>
|
## [[yii\validators\NumberValidator|integer]] <span id="integer"></span>
|
||||||
@ -549,10 +562,10 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
|
|||||||
|
|
||||||
- `requiredValue`: 入力値として要求される値。
|
- `requiredValue`: 入力値として要求される値。
|
||||||
このプロパティが設定されていない場合は、入力値が空ではいけないことを意味します。
|
このプロパティが設定されていない場合は、入力値が空ではいけないことを意味します。
|
||||||
- `strict`: 値を検証するときに、データ型をチェックするかどうか。デフォルト値は false。
|
- `strict`: 値を検証するときに、データ型をチェックするかどうか。デフォルト値は `false`。
|
||||||
`requiredValue` が設定されていない場合、このプロパティが true であるときは、バリデータは入力値が厳密な意味で null であるかどうかをチェックします。
|
`requiredValue` が設定されていない場合、このプロパティが `true` であるときは、バリデータは入力値が厳密な意味で `null` であるかどうかをチェックします。
|
||||||
一方、このプロパティが false であるときは、値が空か否かの判断に緩い規則を使います。
|
一方、このプロパティが `false` であるときは、値が空か否かの判断に緩い規則を使います。
|
||||||
`requiredValue` が設定されている場合、このプロパティが true であるときは、入力値と `requiredValue` を比較するときに型のチェックを行います。
|
`requiredValue` が設定されている場合、このプロパティが `true` であるときは、入力値と `requiredValue` を比較するときに型のチェックを行います。
|
||||||
|
|
||||||
> Info: 値が空であるか否かを決定する方法については、独立したトピックとして、[空の入力値を扱う](input-validation.md#handling-empty-inputs) の節でカバーされています。
|
> Info: 値が空であるか否かを決定する方法については、独立したトピックとして、[空の入力値を扱う](input-validation.md#handling-empty-inputs) の節でカバーされています。
|
||||||
|
|
||||||
@ -662,9 +675,9 @@ IPv4 アドレス `192.168.10.128` も、制約の前にリストされている
|
|||||||
- `validSchemes`: 有効と見なされるべき URI スキームを指定する配列。
|
- `validSchemes`: 有効と見なされるべき URI スキームを指定する配列。
|
||||||
デフォルト値は `['http', 'https']` であり、`http` と `https` の URL がともに有効と見なされることを意味します。
|
デフォルト値は `['http', 'https']` であり、`http` と `https` の URL がともに有効と見なされることを意味します。
|
||||||
- `defaultScheme`: 入力値がスキームの部分を持たないときに前置されるデフォルトの URI スキーム。
|
- `defaultScheme`: 入力値がスキームの部分を持たないときに前置されるデフォルトの URI スキーム。
|
||||||
デフォルト値は null であり、入力値を修正しないことを意味します。
|
デフォルト値は `null` であり、入力値を修正しないことを意味します。
|
||||||
- `enableIDN`: バリデータが IDN (国際化ドメイン名) を考慮すべきか否か。
|
- `enableIDN`: バリデータが IDN (国際化ドメイン名) を考慮すべきか否か。
|
||||||
デフォルト値は false。
|
デフォルト値は `false`。
|
||||||
IDN のバリデーションを使用するためには、`intl` PHP 拡張をインストールして有効化する必要があることに注意してください。
|
IDN のバリデーションを使用するためには、`intl` PHP 拡張をインストールして有効化する必要があることに注意してください。
|
||||||
そうしないと、例外が投げられます。
|
そうしないと、例外が投げられます。
|
||||||
|
|
||||||
|
|||||||
@ -50,9 +50,9 @@ Yii::$app->mailer->compose()
|
|||||||
```php
|
```php
|
||||||
$message = Yii::$app->mailer->compose();
|
$message = Yii::$app->mailer->compose();
|
||||||
if (Yii::$app->user->isGuest) {
|
if (Yii::$app->user->isGuest) {
|
||||||
$message->setFrom('from@domain.com')
|
$message->setFrom('from@domain.com');
|
||||||
} else {
|
} else {
|
||||||
$message->setFrom(Yii::$app->user->identity->email)
|
$message->setFrom(Yii::$app->user->identity->email);
|
||||||
}
|
}
|
||||||
$message->setTo(Yii::$app->params['adminEmail'])
|
$message->setTo(Yii::$app->params['adminEmail'])
|
||||||
->setSubject('メッセージの題')
|
->setSubject('メッセージの題')
|
||||||
@ -60,9 +60,9 @@ $message->setTo(Yii::$app->params['adminEmail'])
|
|||||||
->send();
|
->send();
|
||||||
```
|
```
|
||||||
|
|
||||||
> Note: すべての 'mailer' エクステンションは、二つの主要なクラス、すなわち、'Mailer' と 'Message' のセットとして提供されます。
|
> Note: すべての `mailer` エクステンションは、二つの主要なクラス、すなわち、`Mailer` と `Message` のセットとして提供されます。
|
||||||
'Mailer' は常に 'Message' のクラス名と仕様を知っています。
|
`Mailer` は常に `Message` のクラス名と仕様を知っています。
|
||||||
'Message' オブジェクトのインスタンスを直接に作成しようとしてはいけません。常に `compose()` メソッドを使って作成してください。
|
`Message` オブジェクトのインスタンスを直接に作成しようとしてはいけません。常に `compose()` メソッドを使って作成してください。
|
||||||
|
|
||||||
いくつかのメッセージを一度に送信することも出来ます。
|
いくつかのメッセージを一度に送信することも出来ます。
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ Yii::$app->mailer->sendMultiple($messages);
|
|||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
Yii は実際のメールメッセージを特別なビューファイルによって作成することを許容しています。
|
Yii は実際のメールメッセージを特別なビューファイルによって作成することを許容しています。
|
||||||
デフォルトでは、それらのファイルは '@app/mail' というパスに配置されなければなりません。
|
デフォルトでは、それらのファイルは `@app/mail` というパスに配置されなければなりません。
|
||||||
|
|
||||||
以下はメールビューファイルの内容の例です。
|
以下はメールビューファイルの内容の例です。
|
||||||
|
|
||||||
@ -92,7 +92,6 @@ Yii は実際のメールメッセージを特別なビューファイルによ
|
|||||||
use yii\helpers\Html;
|
use yii\helpers\Html;
|
||||||
use yii\helpers\Url;
|
use yii\helpers\Url;
|
||||||
|
|
||||||
|
|
||||||
/* @var $this \yii\web\View ビューコンポーネントのインスタンス */
|
/* @var $this \yii\web\View ビューコンポーネントのインスタンス */
|
||||||
/* @var $message \yii\mail\BaseMessage 新しく作成されたメールメッセージのインスタンス */
|
/* @var $message \yii\mail\BaseMessage 新しく作成されたメールメッセージのインスタンス */
|
||||||
|
|
||||||
@ -188,7 +187,7 @@ $message->attachContent('添付される内容', ['fileName' => 'attach.txt', 'c
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
`embed()` メソッドを使って、メッセージのコンテントに画像を埋め込むことが出来ます。
|
`embed()` メソッドを使って、メッセージのコンテントに画像を埋め込むことが出来ます。
|
||||||
このメソッドは添付ファイルの ID を返しますので、それを 'img' タグで使わなければなりません。
|
このメソッドは添付ファイルの ID を返しますので、それを `img` タグで使わなければなりません。
|
||||||
このメソッドはビューファイルによってメッセージのコンテントを作成するときに簡単に使うことが出来ます。
|
このメソッドはビューファイルによってメッセージのコンテントを作成するときに簡単に使うことが出来ます。
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@ -210,7 +209,7 @@ Yii::$app->mailer->compose('embed-email', ['imageFileName' => '/path/to/image.jp
|
|||||||
開発者は、実際にどのようなメールがアプリケーションによって送信されたか、その内容はどのようなものであったか、等をチェックしなければならないことが多くあります。
|
開発者は、実際にどのようなメールがアプリケーションによって送信されたか、その内容はどのようなものであったか、等をチェックしなければならないことが多くあります。
|
||||||
Yii は、そのようなチェックが出来ることを `yii\mail\BaseMailer::useFileTransport` によって保証しています。
|
Yii は、そのようなチェックが出来ることを `yii\mail\BaseMailer::useFileTransport` によって保証しています。
|
||||||
このオプションを有効にすると、メールのメッセージデータが、通常のように送信される代りに、ローカルファイルに強制的に保存されます。
|
このオプションを有効にすると、メールのメッセージデータが、通常のように送信される代りに、ローカルファイルに強制的に保存されます。
|
||||||
ファイルは、`yii\mail\BaseMailer::fileTransportPath`、デフォルトでは '@runtime/mail' の下に保存されます。
|
ファイルは、`yii\mail\BaseMailer::fileTransportPath`、デフォルトでは `@runtime/mail` の下に保存されます。
|
||||||
|
|
||||||
> Note: メッセージをファイルに保存するか、実際の受信者に送信するか、どちらかを選ぶことが出来ますが、両方を同時に実行することは出来ません。
|
> Note: メッセージをファイルに保存するか、実際の受信者に送信するか、どちらかを選ぶことが出来ますが、両方を同時に実行することは出来ません。
|
||||||
|
|
||||||
@ -224,7 +223,7 @@ Yii は、そのようなチェックが出来ることを `yii\mail\BaseMailer:
|
|||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
あなた自身のカスタムメールソリューションを作成するためには、二つのクラスを作成する必要があります。
|
あなた自身のカスタムメールソリューションを作成するためには、二つのクラスを作成する必要があります。
|
||||||
すなわち、一つは 'Mailer' であり、もう一つは 'Message' です。
|
すなわち、一つは `Mailer` であり、もう一つは `Message` です。
|
||||||
`yii\mail\BaseMailer` と `yii\mail\BaseMessage` をあなたのソリューションの基底クラスとして使うことが出来ます。
|
`yii\mail\BaseMailer` と `yii\mail\BaseMessage` をあなたのソリューションの基底クラスとして使うことが出来ます。
|
||||||
これらのクラスが、このガイドで説明された基本的なロジックを既に持っています。
|
これらのクラスが、このガイドで説明された基本的なロジックを既に持っています。
|
||||||
しかし、それを使用することは強制されていません。
|
しかし、それを使用することは強制されていません。
|
||||||
|
|||||||
@ -13,7 +13,7 @@ PHP 環境を正しく構成することは非常に重要です。
|
|||||||
|
|
||||||
- 最新の安定した PHP バージョンを使うこと。
|
- 最新の安定した PHP バージョンを使うこと。
|
||||||
使用する PHP のメジャーリリースを上げると、顕著なパフォーマンスの改善がもたらされることがあります。
|
使用する PHP のメジャーリリースを上げると、顕著なパフォーマンスの改善がもたらされることがあります。
|
||||||
- [Opcache](http://php.net/opcache) (PHP 5.5 以降) または [APC](http://ru2.php.net/apc) (PHP 5.4 以前) を使って、バイトコードキャッシュを有効にすること。
|
- [Opcache](http://php.net/opcache) (PHP 5.5 以降) または [APC](http://php.net/apc) (PHP 5.4) を使って、バイトコードキャッシュを有効にすること。
|
||||||
バイトコードキャッシュによって、リクエストが入ってくるたびに PHP スクリプトを解析してインクルードする時間の浪費を避けることが出来ます。
|
バイトコードキャッシュによって、リクエストが入ってくるたびに PHP スクリプトを解析してインクルードする時間の浪費を避けることが出来ます。
|
||||||
- [`realpath()` キャッシュをチューニングする](https://github.com/samdark/realpath_cache_tuner).
|
- [`realpath()` キャッシュをチューニングする](https://github.com/samdark/realpath_cache_tuner).
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ Yii は、`YII_DEBUG` という名前の定数の値を使って、デバッグ
|
|||||||
defined('YII_DEBUG') or define('YII_DEBUG', false);
|
defined('YII_DEBUG') or define('YII_DEBUG', false);
|
||||||
```
|
```
|
||||||
|
|
||||||
> Info: `YII_DEBUG` のデフォルト値は false です。
|
> Info: `YII_DEBUG` のデフォルト値は `false` です。
|
||||||
従って、アプリケーションコードの他のどこかでこのデフォルト値を変更していないと確信できるなら、単に上記の行を削除してデバッグモードを無効にしても構いません。
|
従って、アプリケーションコードの他のどこかでこのデフォルト値を変更していないと確信できるなら、単に上記の行を削除してデバッグモードを無効にしても構いません。
|
||||||
|
|
||||||
## キャッシュのテクニックを使う <span id="using-caching"></span>
|
## キャッシュのテクニックを使う <span id="using-caching"></span>
|
||||||
|
|||||||
Reference in New Issue
Block a user