Skip to content

Commit

Permalink
Merge branch 'master' into master-to-2.2
Browse files Browse the repository at this point in the history
# Conflicts:
#	.github/workflows/build.yml
#	.github/workflows/ci-mssql.yml
#	.github/workflows/ci-pgsql.yml
#	composer.lock
  • Loading branch information
bizley committed Jan 3, 2024
2 parents 0294cf4 + dea891e commit 008205e
Show file tree
Hide file tree
Showing 64 changed files with 539 additions and 380 deletions.
1 change: 1 addition & 0 deletions .github/workflows/ci-mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:
php:
- 8.1
- 8.2
- 8.3

mysql:
- 5.7
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci-pgsql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:
php:
- 8.1
- 8.2
- 8.3

pgsql:
- 10
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci-sqlite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ jobs:
php:
- 8.1
- 8.2
- 8.3

steps:
- name: Checkout.
Expand Down
1 change: 1 addition & 0 deletions docs/guide-ja/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ RESTful ウェブ・サービス

* [クイック・スタート](rest-quick-start.md)
* [リソース](rest-resources.md)
* [コレクションのフィルタリング](rest-filtering-collections.md)
* [コントローラ](rest-controllers.md)
* [ルーティング](rest-routing.md)
* [レスポンス形式の設定](rest-response-formatting.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/caching-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ $data = $cache->getOrSet($key, function () use ($user_id) {

キャッシュ・コンポーネントは通常グローバルに設定しアクセスできるように
[アプリケーション・コンポーネント](structure-application-components.md) として登録されます。
以下のコードは、二台のキャッシュ・サーバを用いる [Memcached](https://memcached.org/) を使うように
以下のコードは、二台のキャッシュ・サーバを用いる [memcached](https://memcached.org/) を使うように
`cache` アプリケーション・コンポーネントを構成する方法を示すものです。

```php
Expand Down
5 changes: 5 additions & 0 deletions docs/guide-ja/caching-fragment.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ if ($this->beginCache($id)) {

[データ・キャッシュ](caching-data.md) と同様に、キャッシュされるコンテントを識別するためにユニークな `$id` が必要になります。

次のようにすると、フラグメント・キャッシュを削除することが出来ます。
```php
Yii::$app->cache->delete(['yii\widgets\FragmentCache', $id]);
```


## キャッシュのオプション <span id="caching-options"></span>

Expand Down
4 changes: 2 additions & 2 deletions docs/guide-ja/concept-behaviors.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
ビヘイビア
==========

ビヘイビアは [[yii\base\Behavior]] またその子クラスのインスタンスです。ビヘイビアは
[ミックスイン](https://ja.wikipedia.org/wiki/Mixin) としても知られ、既存の [[yii\base\Component|component]] クラスの
ビヘイビアは [[yii\base\Behavior]] またその子クラスのインスタンスです。
ビヘイビアは [ミックスイン](https://ja.wikipedia.org/wiki/Mixin) としても知られ、既存の [[yii\base\Component|component]] クラスの
機能を、クラスの継承を変更せずに拡張することができます。コンポーネントにビヘイビアをアタッチすると、その
コンポーネントにはビヘイビアのメソッドとプロパティが "注入" され、それらのメソッドとプロパティは、
コンポーネント・クラス自体に定義されているかのようにアクセスできるようになります。また、ビヘイビアは、
Expand Down
4 changes: 2 additions & 2 deletions docs/guide-ja/concept-configurations.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ $config = [
'class' => 'yii\caching\FileCache',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'class' => 'yii\symfonymailer\Mailer',
],
'log' => [
'class' => 'yii\log\Dispatcher',
Expand Down Expand Up @@ -207,7 +207,7 @@ return [
'class' => 'yii\caching\FileCache',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'class' => 'yii\symfonymailer\Mailer',
],
'log' => [
'class' => 'yii\log\Dispatcher',
Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/concept-di-container.md
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ $reader = $container->get('app\storage\DocumentsReader');

依存注入と [サービス・ロケータ](concept-service-locator.md) はともに、疎結合でよりテストしやすい方法でのソフトウェア構築を可能にする、
定番のデザインパターンです。
依存注入とサービス・ロケータへのより深い理解を得るために[Martin の記事](https://martinfowler.com/articles/injection.html)
依存注入とサービス・ロケータをより深く理解するために[Martin の記事](https://martinfowler.com/articles/injection.html)
を読むことを強くお勧めします。

Yii はその [サービス・ロケータ](concept-service-locator.md) を、依存注入 (DI) コンテナの上に実装しています。
Expand Down
4 changes: 2 additions & 2 deletions docs/guide-ja/concept-properties.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ getter と setter で定義されたプロパティには、いくつかの特
* 通常の `property_exists()` の呼び出しでは、マジック・プロパティが存在するかどうかを知ることは出来ません。
それぞれ、[[yii\base\BaseObject::canGetProperty()|canGetProperty()]] または [[yii\base\BaseObject::canSetProperty()|canSetProperty()]] を呼び出さなければなりません。

このガイドの冒頭で説明した問題に戻ると、 `label` に値が代入されているあらゆる箇所で `trim()` を呼ぶのではなく、
もう `setLabel()` という setter の内部だけで `trim()` を呼べば済むのです
このガイドの冒頭で説明した問題に戻ると、`label` に値が代入されているあらゆる箇所で `trim()` を呼ぶのではなく、
`setLabel()` という setter の内部だけで `trim()` を呼べば済むようになります
さらに、新しい要求でラベルの先頭を大文字にする必要が発生しても、他のいっさいのコードに触れることなく、
すぐに `setLabel()` メソッドを変更することができます。一箇所の変更は、すべての `label` への代入に普遍的に作用します。
2 changes: 1 addition & 1 deletion docs/guide-ja/concept-service-locator.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,4 @@ return [
モジュールからサービスを引き出そうとする全てのリクエストは、そのモジュールが要求に応じられない場合は、すべてその親に渡されます。

モジュール内のコンポーネントの構成情報は、親モジュール内のコンポーネントの構成情報とは決してマージされないことに注意して下さい。
サービス・ロケータ・パターンによって私たちは名前の付いたサービスを定義することが出来ますが、同じ名前のサービスが同じ構成パラメータを使用すると想定することは出来ません。
サービス・ロケータのパターンによって私たちは名前の付いたサービスを定義することが出来ますが、同じ名前のサービスが同じ構成パラメータを使用すると想定することは出来ません。
2 changes: 1 addition & 1 deletion docs/guide-ja/db-dao.md
Original file line number Diff line number Diff line change
Expand Up @@ -680,5 +680,5 @@ $table = Yii::$app->db->getTableSchema('post');
```

このメソッドは、テーブルのカラム、プライマリ・キー、外部キーなどの情報を含む [[yii\db\TableSchema]] オブジェクトを返します。
これらの情報は、主として [クエリ・ビルダ](db-query-builder.md)[アクティブ・レコード](db-active-record.md) によって利用されて、
この情報は、主として [クエリ・ビルダ](db-query-builder.md)[アクティブ・レコード](db-active-record.md) によって利用されて、
特定のデータベースに依存しないコードを書くことを助けてくれています。
2 changes: 1 addition & 1 deletion docs/guide-ja/db-migrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,7 @@ class m150101_185401_create_news_table extends Migration
`safeDown()` では、先に行を削除して、次にテーブルを削除しています。

> Note: 全ての DBMS がトランザクションをサポートしている訳ではありません。また、トランザクションに入れることが出来ない DB クエリもあります。
いくつかの例を [暗黙のコミット](https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html) で見ることが出来ます。
そのいくつかの例を [暗黙のコミット](https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html) で見ることが出来ます。
その場合には、代りに、`up()``down()` を実装しなければなりません。


Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/db-query-builder.md
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ $query->where([$column => $value]);
値が自動的に一対のパーセント記号によって囲まれることに注意してください。

> Note: PostgreSQL を使っている場合は、`like` の代りに、大文字と小文字を区別しない比較のための
> [`ilike`](https://www.postgresql.org/docs/8.3/functions-matching.html#FUNCTIONS-LIKE) を使うことも出来ます。
> [`ilike`](https://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE) を使うことも出来ます。
- `or like`: オペランド 2 が配列である場合に `LIKE` 述語が `OR` によって結合される以外は、
`like` 演算子と同じです。
Expand Down
31 changes: 22 additions & 9 deletions docs/guide-ja/input-tabular-input.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,14 @@ class SettingsController extends Controller
{
$settings = Setting::find()->indexBy('id')->all();

if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
if ($this->request->isPost) {
if (Setting::loadMultiple($settings, $this->request->post()) && Setting::validateMultiple($settings)) {
foreach ($settings as $setting) {
$setting->save(false);
}
return $this->redirect('index');
}
}

return $this->render('update', ['settings' => $settings]);
}
Expand All @@ -71,10 +73,12 @@ use yii\widgets\ActiveForm;

$form = ActiveForm::begin();

foreach ($settings as $index => $setting) {
echo $form->field($setting, "[$index]value")->label($setting->name);
foreach ($settings as $id => $setting) {
echo $form->field($setting, "[$id]value")->label($setting->name);
}

echo Html::submitButton('Save');

ActiveForm::end();
```

Expand All @@ -88,20 +92,29 @@ ActiveForm::end();
```php
public function actionCreate()
{
$count = count(Yii::$app->request->post('Setting', []));
$settings = [new Setting()];
for($i = 1; $i < $count; $i++) {
$settings[] = new Setting();
$settings = [];
if ($this->request->isPost) {
$count = count($this->request->post($setting->tableName())) - 1;
for ($i = 0; $i < $count; $i++) {
$settings[$i] = new Setting();
}
if (Setting::loadMultiple($settings, $this->request->post()) && Setting::validateMultiple($settings)) {
foreach ($settings as $setting) {
$setting->save(false);
}
return $this->redirect('index');
}
}
$settings[] = new Setting();

// ...
return $this->render('create', ['settings' => $settings]);
}
```

ここでは、デフォルトで一個のモデルを含む `$settings` 配列を初期値として作成し、少なくとも一個のテキスト・フィールドが常にビューに表示されるようにしています。
そして、受信したインプットの行数に合せて、配列にモデルを追加しています。

ビューでは javascript を使ってインプットの行を動的に追加することが出来ます。
ビューでは JavaScript を使ってインプットの行を動的に追加することが出来ます。

### 更新、作成、削除を一つのページに組み合わせる

Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/input-validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ JS;
### Deferred 検証 <span id="deferred-validation"></span>
非同期のクライアント・サイドの検証をサポートする必要がある場合は、[Defered オブジェクト](https://api.jquery.com/category/deferred-object/) を作成することが出来ます。
非同期のクライアント・サイドの検証をサポートする必要がある場合は、[Deferred オブジェクト](https://api.jquery.com/category/deferred-object/) を作成することが出来ます。
例えば、AJAX によるカスタム検証を実行するために、次のコードを使うことが出来ます。
```php
Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/intro-upgrade-from-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ ActiveForm::end();
テーマは、ソースのビュー・ファイル・パスをテーマのビュー・ファイル・パスにマップするパス・マッピング機構に基づくものになりました。
例えば、あるテーマのパス・マップが `['/web/views' => '/web/themes/basic']` である場合、ビュー・ファイル `/web/views/site/index.php` のテーマ版は `/web/themes/basic/site/index.php` になります。
この理由により、テーマはどのようなビュー・ファイルに対してでも適用することが出来るようになりました。
コントローラやウィジェットのコンテキストの外で表示されるビューに対してすら、適用できます
コントローラやウィジェットのコンテキストの外で表示されるビューであっても適用できます

また、`CThemeManager` コンポーネントはもうありません。
その代りに、`theme``view` アプリケーション・コンポーネントの構成可能なプロパティになりました。
Expand Down
4 changes: 2 additions & 2 deletions docs/guide-ja/output-client-scripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ $this->registerJs(
- [[yii\web\View::POS_LOAD|View::POS_LOAD]] - [ドキュメントの `load` イベント](https://learn.jquery.com/using-jquery-core/document-ready/) でコードを実行するための指定。
上記と同じく、これを指定すると、[[yii\web\JqueryAsset|jQuery]] が自動的に登録されます。

最後の引数は、スクリプトのコード・ブロックを一意に特定するために使われるスクリプトのユニークな ID です。同じ ID のスクリプトが既にある場合は、新しいものを追加するのでなく、
それを置き換えます。ID を指定しない場合は、JS コードそれ自身が ID として扱われます。この ID によって、同じコードが複数回登録されるのを防止します。
最後の引数は、スクリプトのコード・ブロックを一意に特定するために使われるスクリプトのユニークな ID です。同じ ID のスクリプトが既にある場合は、新しいものを追加するのでなく、それを置き換えます。
ID を指定しない場合は、JS コードそれ自身が ID として扱われます。この ID によって、同じコードが複数回登録されるのを防止します。

### スクリプト・ファイルを登録する <span id="script-files"></span>

Expand Down
6 changes: 3 additions & 3 deletions docs/guide-ja/output-data-providers.md
Original file line number Diff line number Diff line change
Expand Up @@ -354,13 +354,13 @@ $filter = new ActiveDataFilter([

$filterCondition = null;

// どのようなソースからでもフィルタをロードすることが出来ます。
// 例えば、リクエスト・ボディの JSON からロードしたい場合は、
// どのようなソースからでもフィルタをロードすることが出来ます。例えば、
// リクエスト・ボディの JSON からロードしたい場合は、
// 下記のように Yii::$app->request->getBodyParams() を使います。
if ($filter->load(\Yii::$app->request->get())) {
$filterCondition = $filter->build();
if ($filterCondition === false) {
// シリアライザがエラーを抽出するだろう
// シリアライザがフィルタの抽出でエラーを出すかもしれない
return $filter;
}
}
Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/output-data-widgets.md
Original file line number Diff line number Diff line change
Expand Up @@ -777,4 +777,4 @@ yii gii/crud --controllerClass="backend\\controllers\PostController" \
さらに読むべき文書
------------------

- Arno Slatius による [Rendering Data in Yii 2 with GridView and ListView](https://www.sitepoint.com/rendering-data-in-yii-2-with-gridview-and-listview/)
- Arno Slatius による [Rendering Data in Yii 2 with GridView and ListView](https://www.sitepoint.com/rendering-data-in-yii-2-with-gridview-and-listview/)
2 changes: 1 addition & 1 deletion docs/guide-ja/output-formatting.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ return [
- [[yii\i18n\Formatter::asDate()|date]] - 値は日付としてフォーマットされます。例えば `January 01, 2014`
- [[yii\i18n\Formatter::asTime()|time]] - 値は時刻としてフォーマットされます。例えば `14:23`
- [[yii\i18n\Formatter::asDatetime()|datetime]] - 値は日付および時刻としてフォーマットされます。例えば `January 01, 2014 14:23`
- [[yii\i18n\Formatter::asTimestamp()|timestamp]] - 値は [unix タイムスタンプ](https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93) としてフォーマットされます。例えば `1412609982`
- [[yii\i18n\Formatter::asTimestamp()|timestamp]] - 値は [unix タイムスタンプ](https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93) としてフォーマットされます。例えば `1412609982`
- [[yii\i18n\Formatter::asRelativeTime()|relativeTime]] - 値は、その日時と現在との間隔として、人間に分かりやすい言葉でフォーマットされます。
例えば `1 hour ago`
- [[yii\i18n\Formatter::asDuration()|duration]] - 値は継続時間として、人間に分かりやすい言葉でフォーマットされます。例えば `1 day, 2 minutes`
Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/output-sorting.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ $articles = Article::find()
ラベルは HTML エンコードされないことに注意してください。

> Info: [[yii\data\Sort::$orders|orders]] の値をデータベースのクエリに直接に供給して、
`ORDER BY` 句を構築することが出来ます。 データベースのクエリが認識できない合成的な属性が入っている場合があるため、
`ORDER BY` 句を構築することが出来ます。データベースのクエリが認識できない合成的な属性が入っている場合があるため、
[[yii\data\Sort::$attributeOrders|attributeOrders]] を使ってはいけません。

[[yii\data\Sort::link()]] を呼んでハイパーリンクを生成すれば、それをクリックして、指定した属性によるデータの並べ替えをリクエストすることが出来るようになります。
Expand Down
2 changes: 1 addition & 1 deletion docs/guide-ja/rest-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

* [HTTP Basic 認証](https://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC): アクセス・トークンはユーザ名として送信されます。
この方法は、アクセス・トークンを API コンシューマ側で安全に保存することが出来る場合、
例えば API コンシューマがサーバ上で走るプログラムである場合などにのみ使用されるべきです
例えば API コンシューマがサーバ上で走るプログラムである場合などのみに使用されるべきです
* クエリ・パラメータ: アクセス・トークンは API の URL、例えば、`https://example.com/users?access-token=xxxxxxxx`
でクエリ・パラメータとして送信されます。
ほとんどのウェブ・サーバはクエリ・パラメータをサーバのログに記録するため、この手法は、
Expand Down
Loading

0 comments on commit 008205e

Please sign in to comment.