From da94068224fe078b2751229948a76b0c91e33693 Mon Sep 17 00:00:00 2001 From: Yoshinobu Wakamatsu Date: Tue, 1 Jan 2013 17:36:28 +0900 Subject: [PATCH 001/458] translated console-and-shells/acl-shell section into Japanese. --- ja/console-and-shells/acl-shell.rst | 72 +++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 ja/console-and-shells/acl-shell.rst diff --git a/ja/console-and-shells/acl-shell.rst b/ja/console-and-shells/acl-shell.rst new file mode 100644 index 000000000..b543ea1ef --- /dev/null +++ b/ja/console-and-shells/acl-shell.rst @@ -0,0 +1,72 @@ +ACLShell +######### + +Aclシェル はACLデータベースのレコードの管理や確認をするのに有用です。 +多くの場合、コントローラに変更を加えるよりもこちらのほうが使いやすいはずです。 + +Aclシェルのサブコマンドはたいてい、 aco/aro ノードへの参照を伴います。ノードには2つの「形式」があるためシェルにも2種類の記述方法が存在します。 :: + + # モデル + 外部キーによる参照 + ./Console/cake acl view Model.1 + + # エイリアスパスによる参照 + ./Console/cake acl view root/controllers + +``.`` はレコードによる参照を表し、 ``/`` はエイリアスパスを表します。 + + +テーブルの準備 +============================== + +ACLデータベースを使用するにはテーブルを構築する必要があります。 +下のコマンドを入力することで構築できます。 :: + + ./Console/cake acl initdb + +ノードの生成と削除 +======================= + +create サブコマンドあるいは delete サブコマンドを利用し、ノードを新たに生成したり削除することができます。 :: + + ./Console/cake acl create aco controllers/Posts + +エイリアスパスによるACLレコードが生成されるでしょう。 +同様に以下のようにすると :: + + ./Console/cake acl create aro Group.1 + +Group id = 1のAROノード生成がされるはずです。 + +アクセス許可と禁止 +===================== + +ACLで許可を与えるには grant コマンドを使用してください。コマンドを実行すると、特定ARO(およびその子ノード)から特定のACOアクション(およびその子ノード)へのアクセスが許可されるはずです。 :: + + ./Console/cake acl grant Group.1 controllers/Posts + +上のコマンドでは全ての権限が与えられます。以下のコマンドを使用すると read 権限のみを許可することもできます。 :: + + ./Console/cake acl grant Group.1 controllers/Posts read + +禁止の場合も同じです。唯一の違いは grant の代わりに deny を使用することです。 + +権限のチェック +================= + + :: + + ./Console/cake acl check Group.1 controllers/Posts read + +``success`` または ``not allowed`` のどちらかが出力されるはずです。 + +ノードツリーを確認する +=================== + +view コマンドはAROツリーまたはACOツリーを返します。オプションを付けることにより、リクエストツリーの一部のみを返すこともできます。 :: + + ./Console/cake acl view + + + +.. meta:: + :title lang=ja: ACLシェル -- GitLab From 8e7c8168090e5179c228ec7defe65f9c274fe1ca Mon Sep 17 00:00:00 2001 From: Yoshinobu Wakamatsu Date: Wed, 2 Jan 2013 19:35:29 +0900 Subject: [PATCH 002/458] translated console-and-shells/schema-management-and-migrations section into Japanese --- .../schema-management-and-migrations.rst | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 ja/console-and-shells/schema-management-and-migrations.rst diff --git a/ja/console-and-shells/schema-management-and-migrations.rst b/ja/console-and-shells/schema-management-and-migrations.rst new file mode 100644 index 000000000..5a9ffecc1 --- /dev/null +++ b/ja/console-and-shells/schema-management-and-migrations.rst @@ -0,0 +1,160 @@ +スキーマの管理と移植 +################################ + +スキーマシェルはスキーマオブジェクト、SQLダンプを作成したり、スナップショットを作成、保存する機能を提供します。 + +スキーマファイルの作成と使用方法 +================================= + +作成したスキーマファイルを使うと、データベースに依存することなく単に別の環境へ移植できます。また、既存のデータベースを使用してスキーマファイルを生成することもできます。 :: + + $ Console/cake schema generate + +上のコマンドで schema.php ファイルが ``app/Config/Schema`` ディレクトリに生成されるはずです。 + +.. note:: + + スキーマシェルはモデルが定義されたテーブルのみを対象として処理します。 + 強制的に全てのテーブルを対象にするためには、 ``-f`` オプションを加える必要があります。 + +前もって作成した schema.php からデータベースを再構築するためには、次のコマンドを実行してください。 :: + + $ Console/cake schema create + +schema.php の中身に沿ってテーブルが再構成されるはずです。 + +スキーマファイルはSQLダンプファイルの作成に使用することもできます。 ``CREATE TABLE`` 文を含むSQLファイルを生成するには次のコマンドを実行してください。 :: + + $ Console/cake schema dump --write filename.sql + +ここで filename.sql にはSQLファイルとして出力したいファイル名を指定します。filename.sql を省略すると、SQLのダンプはコンソールへ出力されますが、ファイルへ出力されることはありません。 + +Cakeスキーマのコールバック +======================== + +スキーマの生成後、アプリケーションを動作させるためテーブルにデータを挿入したいと考えるかもしれません。データもCakeスキーマで保存させることができます。 +それぞれのスキーマファイルは ``before($event = array())`` メソッドおよび ``after($event = array())`` メソッドから生成されます。 + +``$event`` パラメータは2つのキーを持つArrayです。1つはテーブルを削除するのか生成するのかを示すパラメータで、もう1つはエラーに関するパラメータです。例を示します。 :: + + array('drop' => 'posts', 'errors' => null) + array('create' => 'posts', 'errors' => null) + +データを posts テーブルへ加える例は以下のようになります。 :: + + App::uses('Post', 'Model'); + public function after($event = array()) { + if (isset($event['create'])) { + switch ($event['create']) { + case 'posts': + $post = ClassRegistry::init('Post'); + $post->create(); + $post->save( + array('Post' => + array('title' => 'CakePHP Schema Files') + ) + ); + break; + } + } + } + +ここでコールバック関数 ``before()`` および ``after()`` は、スキーマからテーブルが生成されるか削除されるたびに実行されます。 + +データを2つ以上のテーブルへ挿入する場合は、各テーブルの生成後、データベースのキャッシュを実際にデータベースへ反映させる必要があるでしょう。 +beforeアクション内で ``$db->cacheSources = false`` を設定することにより、キャッシュを無効にできます。 :: + + public $connection = 'default'; + + public function before($event = array()) { + $db = ConnectionManager::getDataSource($this->connection); + $db->cacheSources = false; + return true; + } + +CakePHPのスキーマシェルを使った移植 +==================================== + +データベースを移植すると、スキーマのバージョン管理ができるようになります。 +その結果、新機能を開発したとき、データベースに依存することなく簡単に変更内容を配布できるようになります。 +変更箇所はバージョン管理されたスキーマファイルかスキーマのスナップショットのどちらかの形式で管理されます。スキーマシェルを使ったスキーマファイルのバージョン管理はとても簡単です。 +もし既に作成済みのスキーマファイルがあるのであれば、次のコマンドを実行してください。 :: + + $ Console/cake schema generate + +実行すると、次の選択肢が表示されるはずです。 :: + + Generating Schema... + Schema file exists. + [O]verwrite + [S]napshot + [Q]uit + Would you like to do? (o/s/q) + +[s] (snapshot) を選択すると、変更分を反映した schema.php が生成されるでしょう。 +もし schema.php があれば、schema\_2.php あるいは同様のファイルが生成されるはずです。 +いつでも以下のコマンドでスキーマファイルへの保存ができます。 :: + + $ cake schema update -s 2 + +ここで 2 は更新元のスナップショット番号を示します。 +スキーマシェルは、現状のデータベースと更新元スキーマファイルの差分を表した ``ALTER`` 文を実行してもよいかどうか確認を促してくるでしょう。 + +``--dry`` コマンドを付けることで、実際にファイルを更新することなく実行結果だけを確認することもできます(dry-run)。 + +ワークフローの例 +================= + +スキーマの生成とコミット +------------------------ + +バージョン管理を適用しているプロジェクトでは、Cakeスキーマを以下のように使うことになるでしょう。 + +1. データベース内のテーブルを生成あるいは変更 +2. Cakeスキーマを実行し、データベースの内容を全てエクスポート +3. 生成または更新された schema.php のコミット :: + + $ # 一度データベースを更新した後で + $ Console/cake schema generate + $ git commit -a + +.. note:: + + プロジェクトでバージョン管理システムを使用していない場合は、スキーマの管理はスナップショットを使用して行うことになるはずです。 + (スナップショットの作成は前のセクションを参照してください) + +最新の変更を取り入れるには +-------------------------- + +(テーブルが見つからないというエラーメッセージが表示された場合など)リポジトリの最新の変更を取り入れ、データベース構造の変更点を見つけるには以下のようにします。 + +1. Cakeスキーマを実行し、データベースを更新してください :: + + $ git pull + $ Console/cake schema create + $ Console/cake schema update + +いずれの操作でも dry-run が使用できます。 + +ロールバック +------------ + +現在のところ、Cakeスキーマはデータベースの更新の取り消しや復元が必要な操作をサポートしていません。 + +より具体的には、一度生成したテーブルを自動的に削除することができないようになっています。  + +対照的に ``update`` を使用した場合は、スキーマファイルとの差分からフィールドが削除されます。 :: + + $ git revert HEAD + $ Console/cake schema update + +上のコマンドを実行すると、以下の選択肢が表示されるはずです。 :: + + The following statements will run. + ALTER TABLE `roles` + DROP `position`; + Are you sure you want to alter the tables? (y/n) + [n] > + +.. meta:: + :title lang=en: Schema management and migrations -- GitLab From c678ecf71c61ea4a0a5f6d51255471c4e1c686f6 Mon Sep 17 00:00:00 2001 From: Mike Scarborough Date: Tue, 25 Jun 2013 14:45:02 -0600 Subject: [PATCH 003/458] add description of simpler database session configuration --- en/development/sessions.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/en/development/sessions.rst b/en/development/sessions.rst index a1fc492b9..7f9cf35e0 100644 --- a/en/development/sessions.rst +++ b/en/development/sessions.rst @@ -172,6 +172,25 @@ The above will tell CakeSession to use the built in 'database' defaults, and specify that a model called ``CustomSession`` will be the delegate for saving session information to the database. +If you do not need a fully custom session handler, but still require +database-backed session storage, you can simplify the above code to:: + + + Configure::write('Session', array( + 'defaults' => 'database' + )); + +This configuration will require a database table to be added with +at least these fields:: + + + CREATE TABLE `cake_sessions` ( + `id` varchar(255) NOT NULL DEFAULT '', + `data` text, + `expires` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) + ); + Cache Sessions -------------- -- GitLab From 73c99d7a057708a3822b3787f08dd2208ed27894 Mon Sep 17 00:00:00 2001 From: Geoff Douglas Date: Wed, 11 Sep 2013 14:12:26 -0700 Subject: [PATCH 004/458] Add a note about requirements for SQL Server connection. --- en/models/datasources.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/en/models/datasources.rst b/en/models/datasources.rst index 56c1570ad..40f0c5860 100644 --- a/en/models/datasources.rst +++ b/en/models/datasources.rst @@ -293,3 +293,8 @@ and refer to it using the plugin notation:: .. meta:: :title lang=en: DataSources :keywords lang=en: array values,model fields,connection configuration,implementation details,relational databases,best bet,mysql postgresql,sqlite,external sources,ldap server,database connection,rdbms,sqlserver,postgres,relational database,mssql,aggregates,apis,repository,signatures + +Connecting to SQL Server +================== + +If the SQL Server version is SQL Express the Sqlserver Datasource may error out. The SQL Server PHP Extensions and SQL Server Native Client are required in order to connect. Both are free downloads from Microsoft. \ No newline at end of file -- GitLab From b4ca07e19c1728985c30ca83981d67a04843e1d5 Mon Sep 17 00:00:00 2001 From: Geoff Douglas Date: Wed, 11 Sep 2013 14:31:50 -0700 Subject: [PATCH 005/458] Add error to the Datasource Doc for Sqlserver --- en/models/datasources.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/en/models/datasources.rst b/en/models/datasources.rst index 40f0c5860..ddf572ce2 100644 --- a/en/models/datasources.rst +++ b/en/models/datasources.rst @@ -297,4 +297,9 @@ and refer to it using the plugin notation:: Connecting to SQL Server ================== -If the SQL Server version is SQL Express the Sqlserver Datasource may error out. The SQL Server PHP Extensions and SQL Server Native Client are required in order to connect. Both are free downloads from Microsoft. \ No newline at end of file +If the Sqlserver Datasource errors out. + + Error: Database connection "Sqlserver" is missing, or could not be created. + +The SQL Server PHP Extensions and SQL Server Native Client are required in order to connect. +Both are free downloads from Microsoft. \ No newline at end of file -- GitLab From 5185353d88dac9455232341b207519c35095174f Mon Sep 17 00:00:00 2001 From: Geoff Douglas Date: Wed, 11 Sep 2013 14:42:05 -0700 Subject: [PATCH 006/458] Update Datasource Doc with more detailed error information --- en/models/datasources.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/en/models/datasources.rst b/en/models/datasources.rst index ddf572ce2..73c61f739 100644 --- a/en/models/datasources.rst +++ b/en/models/datasources.rst @@ -297,9 +297,12 @@ and refer to it using the plugin notation:: Connecting to SQL Server ================== -If the Sqlserver Datasource errors out. +If the Sqlserver Datasource errors out: Error: Database connection "Sqlserver" is missing, or could not be created. -The SQL Server PHP Extensions and SQL Server Native Client are required in order to connect. +A potential cause may be the SQL Server PHP extensions or the SQL Server Native Client are not installed. + +The SQL Server PHP Extensions must be installed for the connection methods to be available. +The SQL Server Native Client must be installed for the ODBC connector dependancies. Both are free downloads from Microsoft. \ No newline at end of file -- GitLab From 4e3b406bb2619762d8532906d05b3db9d8c8acc4 Mon Sep 17 00:00:00 2001 From: jmg086 Date: Mon, 30 Sep 2013 01:09:48 -0500 Subject: [PATCH 007/458] Update simple-acl-controlled-application.rst What I did http://book.cakephp.org/view/1547/Acts-As-a-Requester Followed the books docs on creating user and group models setup my user model to use the bindNode function defined, so that user aros are not created What happened i add groups and they insert their correct aros but when i add users, aros are still created What I expected to happen Only group aros to be created, not user ones. --- .../simple-acl-controlled-application.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst b/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst index 5e9b4ef34..7668d3806 100644 --- a/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst +++ b/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst @@ -327,7 +327,12 @@ implement ``bindNode()`` in ``User`` model:: This method will tell ACL to skip checking ``User`` Aro's and to check only ``Group`` Aro's. -Every user has to have assigned ``group_id`` for this to work. +Every user has to have assigned ``group_id`` for this to work. Besides, you have +to change in ``User`` model:: + + var $actsAs = array('Acl' => array('type' => 'requester', 'enabled' => false)); + +this avoids the afterSave to be called. In this case our ``aros`` table will look like this:: -- GitLab From cb7e8d33a435e2d0f80246d2803ee76c6ef734ca Mon Sep 17 00:00:00 2001 From: Stefan--- Date: Fri, 4 Oct 2013 11:03:01 +0200 Subject: [PATCH 008/458] Add URL rewriting for lighttpd Works with 2.4.x build. Credits: http://www.guyrutenberg.com/2009/01/24/configuring-lighttpd-for-cakephp/comment-page-1/#comment-243532 --- en/installation/url-rewriting.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/en/installation/url-rewriting.rst b/en/installation/url-rewriting.rst index d97cd2656..63edef667 100644 --- a/en/installation/url-rewriting.rst +++ b/en/installation/url-rewriting.rst @@ -235,6 +235,18 @@ Once the web.config file is created with the correct IIS-friendly rewrite rules, CakePHP's links, css, js, and rerouting should work correctly. +URL-Rewriting on lighttpd +==================== + +Lighttpd does not support .htaccess functions, therefore you can remove all .htaccess files. In the lighttpd configuration make sure you've activiated "mod_rewrite". Add a line: + +:: + +url.rewrite-if-not-file =( + "^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3" + ) + + I don't / can't use URL rewriting ================================= -- GitLab From b334107a7699723b8935bee57e1355a58f72e75b Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Thu, 24 Oct 2013 23:20:32 -0400 Subject: [PATCH 009/458] Add lock option, add missing direction option --- en/core-libraries/helpers/paginator.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/en/core-libraries/helpers/paginator.rst b/en/core-libraries/helpers/paginator.rst index 0de26b641..f4a4d6cac 100644 --- a/en/core-libraries/helpers/paginator.rst +++ b/en/core-libraries/helpers/paginator.rst @@ -31,6 +31,10 @@ Accepted keys for ``$options``: * ``escape`` Whether you want the contents html entity encoded, defaults to true. * ``model`` The model to use, defaults to :php:meth:`PaginatorHelper::defaultModel()`. +* ``direction`` The default direction to use when this link isn't active. +* ``lock`` Lock direction. Will only use the default direction then, defaults to false. + + .. versionadded:: 2.5 Assuming you are paginating some posts, and are on page one:: @@ -73,6 +77,10 @@ Output: User Id +The lock option can be used to lock sorting into the specified direction:: + + echo $this->Paginator->sort('user_id', null, array('direction' => 'asc', 'lock' => true)); + .. php:method:: sortDir(string $model = null, mixed $options = array()) Gets the current direction the recordset is sorted. -- GitLab From 17537f4321e58e97ba118816da0987689ce8b100 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Thu, 24 Oct 2013 23:46:59 -0400 Subject: [PATCH 010/458] Capitalize AJAX in paginator component docs --- en/core-libraries/components/pagination.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/core-libraries/components/pagination.rst b/en/core-libraries/components/pagination.rst index 3ad20e176..f16d2dcb6 100644 --- a/en/core-libraries/components/pagination.rst +++ b/en/core-libraries/components/pagination.rst @@ -326,7 +326,7 @@ AJAX Pagination It's very easy to incorporate AJAX functionality into pagination. Using the :php:class:`JsHelper` and :php:class:`RequestHandlerComponent` you can -easily add Ajax pagination to your application. See :ref:`ajax-pagination` for +easily add AJAX pagination to your application. See :ref:`ajax-pagination` for more information. Pagination in the view -- GitLab From 8260801c6e41b82380777e378c1a83d1c7a72a46 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Fri, 25 Oct 2013 00:06:58 -0400 Subject: [PATCH 011/458] Add note about lock to version add --- en/core-libraries/helpers/paginator.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/en/core-libraries/helpers/paginator.rst b/en/core-libraries/helpers/paginator.rst index f4a4d6cac..eda15fee6 100644 --- a/en/core-libraries/helpers/paginator.rst +++ b/en/core-libraries/helpers/paginator.rst @@ -35,6 +35,8 @@ Accepted keys for ``$options``: * ``lock`` Lock direction. Will only use the default direction then, defaults to false. .. versionadded:: 2.5 + You can now set the lock option to true in order to lock the sorting direction into the + specified direction. Assuming you are paginating some posts, and are on page one:: -- GitLab From 65ae4421fa618eb4e303fa050bd5d9e68a539e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=BCrth?= Date: Sat, 26 Oct 2013 06:31:36 +0200 Subject: [PATCH 012/458] Fixed typo --- en/controllers/request-response.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/controllers/request-response.rst b/en/controllers/request-response.rst index 87e7fa940..118939752 100644 --- a/en/controllers/request-response.rst +++ b/en/controllers/request-response.rst @@ -457,7 +457,7 @@ to send a file as response:: public function sendFile($id) { $file = $this->Attachment->getFile($id); $this->response->file($file['path']); - //Return reponse object to prevent controller from trying to render a view + //Return response object to prevent controller from trying to render a view return $this->response; } -- GitLab From a8528875ee0f321ada2e41136ea634f8c87a3f5a Mon Sep 17 00:00:00 2001 From: Phally Date: Sat, 26 Oct 2013 15:33:17 +0200 Subject: [PATCH 013/458] Adds docs for File::replaceText(). Refs cakephp/cakephp#1665. --- en/core-utility-libraries/file-folder.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/en/core-utility-libraries/file-folder.rst b/en/core-utility-libraries/file-folder.rst index 9d0af27a0..583151c81 100644 --- a/en/core-utility-libraries/file-folder.rst +++ b/en/core-utility-libraries/file-folder.rst @@ -609,6 +609,14 @@ File API Get the file's mimetype, returns false on failure. +.. versionadded:: 2.5 ``File::replaceText()`` + +.. php:method:: replaceText( $search, $replace ) + + :rtype: boolean + + Replaces text in a file. Returns false on failure and true on success. + .. todo:: -- GitLab From 2ada80d31c185899c2097e7cb43febc5954b4d23 Mon Sep 17 00:00:00 2001 From: hakito Date: Sun, 27 Oct 2013 11:08:09 +0100 Subject: [PATCH 014/458] Indicate correct formatting for format() The doc states to use formatting like in date() function. This is simply wrong as it uses formatting as in strftime(). For example: date('j') != strftime('%j') --- en/core-utility-libraries/time.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/core-utility-libraries/time.rst b/en/core-utility-libraries/time.rst index 2a8aa2abd..1ba8fec13 100644 --- a/en/core-utility-libraries/time.rst +++ b/en/core-utility-libraries/time.rst @@ -101,7 +101,7 @@ Formatting :rtype: string Will return a string formatted to the given format using the - `PHP date() formatting options `_:: + `PHP strftime() formatting options `_:: // called via TimeHelper echo $this->Time->format('%F %jS, %Y %h:%i %A', '2011-08-22 11:53:00'); -- GitLab From e3218e0b5979611394d11b603159f6bacacb6032 Mon Sep 17 00:00:00 2001 From: cake17 Date: Sun, 27 Oct 2013 16:03:32 +0100 Subject: [PATCH 015/458] [fr] Follow #850 Make general edits to paginator component docs --- fr/core-libraries/components/pagination.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fr/core-libraries/components/pagination.rst b/fr/core-libraries/components/pagination.rst index 39a619949..2b679ac1a 100644 --- a/fr/core-libraries/components/pagination.rst +++ b/fr/core-libraries/components/pagination.rst @@ -103,7 +103,7 @@ supplémentaire est définie dans ``$this->request->params['paging']``, et est utilisée par :php:class:`PaginatorHelper` pour la création des liens. :php:meth:`PaginatorComponent::paginate()` ajoute aussi :php:class:`PaginatorHelper` à la liste des helpers dans votre controller, si -il n'a pas déjà été ajouté.:: +il n'a pas déjà été ajouté:: public function list_recipes() { $this->Paginator->settings = $this->paginate; @@ -114,12 +114,12 @@ il n'a pas déjà été ajouté.:: } Vous pouvez filtrer les enregistrements en passant des conditions -en second paramètre à la fonction ``paginate()``.:: +en second paramètre à la fonction ``paginate()``:: $data = $this->Paginator->paginate('Recipe', array('Recipe.title LIKE' => 'a%')); Ou vous pouvez aussi définir des ``conditions`` et d'autres tableaux de -configuration de pagination à l'intérieur de votre action.:: +configuration de pagination à l'intérieur de votre action:: public function list_recipes() { $this->Paginator->settings = array( @@ -236,8 +236,8 @@ Par défaut le classement peut être effectué pour n'importe quelle colonne dan un model. C'est parfois indésirable comme permettre aux utilisateurs de trier des colonnes non indexées, ou des champs virtuels ce qui peut être coûteux en temps de calculs. Vous pouvez utiliser le 3ème paramètre de -``PaginatorComponent::paginate()`` pour restreindre les tris de colonnes qui -pourront être effectués:: +``PaginatorComponent::paginate()`` pour restreindre les colonnes à trier +en faisant ceci:: $this->Paginator->paginate('Post', array(), array('title', 'slug')); @@ -299,8 +299,8 @@ arguments GET. $this->paginate['limit'] = 10; Retournera l'erreur "Notice: Indirect modification of overloaded property - $paginate has no effect" ("Notice: Une modification indirect d'une surcharge de - la propriété $paginate n'a aucun effet"). En assignant une valeur initiale à la + $paginate has no effect." ("Notice: Une modification indirect d'une surcharge de + la propriété $paginate n'a aucun effet."). En assignant une valeur initiale à la propriété, cela résout le problème:: $this->paginate = array(); -- GitLab From da863342861f71e08ab64aaa2d68e898f51fef95 Mon Sep 17 00:00:00 2001 From: cake17 Date: Sun, 27 Oct 2013 16:05:29 +0100 Subject: [PATCH 016/458] [fr] Follow #853 Indicate correct formatting for format() --- fr/core-utility-libraries/time.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/core-utility-libraries/time.rst b/fr/core-utility-libraries/time.rst index 0a9e95110..117b36043 100644 --- a/fr/core-utility-libraries/time.rst +++ b/fr/core-utility-libraries/time.rst @@ -104,7 +104,7 @@ Formatage :rtype: string Va retourner une chaîne formatée avec le format donné en utilisant les - `options de formatage de la fonction PHP date() `_:: + `options de formatage de la fonction PHP strftime() `_:: // appel via TimeHelper echo $this->Time->format('%F %jS, %Y %h:%i %A', '2011-08-22 11:53:00'); -- GitLab From 626dee66b14bf7cf0f41d96952d555d000a4afa6 Mon Sep 17 00:00:00 2001 From: lucfranken Date: Tue, 29 Oct 2013 20:47:47 +0100 Subject: [PATCH 017/458] AfterSave declaration was not compatible with Model class in code example Copy paste of the example gave an error, this changes prevents the error. Error: Declaration of Category::afterSave() should be compatible with Model::afterSave($created, $options = Array) --- en/core-libraries/caching.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/en/core-libraries/caching.rst b/en/core-libraries/caching.rst index a6fd7d710..1e7392154 100644 --- a/en/core-libraries/caching.rst +++ b/en/core-libraries/caching.rst @@ -263,7 +263,7 @@ remove all entries associated to the ``post`` group:: // Model/Post.php - public function afterSave($created) { + public function afterSave($created, $options = array()) { if ($created) { Cache::clearGroup('post', 'site_home'); } @@ -280,7 +280,7 @@ group and configurations, i.e.: having the same group:: * A variation of previous example that clears all Cache configurations * having the same group */ - public function afterSave($created) { + public function afterSave($created, $options = array()) { if ($created) { $configs = Cache::groupConfigs('post'); foreach ($configs['post'] as $config) { -- GitLab From 39d42cf76bff2ec1862613f011289b39b1f54c77 Mon Sep 17 00:00:00 2001 From: euromark Date: Wed, 30 Oct 2013 12:28:30 +0100 Subject: [PATCH 018/458] correct backticks --- en/appendices/2-4-migration-guide.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/en/appendices/2-4-migration-guide.rst b/en/appendices/2-4-migration-guide.rst index 304a0c6de..6f771ee40 100644 --- a/en/appendices/2-4-migration-guide.rst +++ b/en/appendices/2-4-migration-guide.rst @@ -43,7 +43,7 @@ Constants replaced with config variables ``App.imageBaseUrl``, ``App.jsBaseUrl``, ``App.cssBaseUrl`` respectively. -- Constants `IMAGES`, `JS`, `CSS` have been deprecated. +- Constants ``IMAGES``, ``JS``, ``CSS`` have been deprecated. Object ------ @@ -56,11 +56,11 @@ Components AuthComponent ------------- -- AuthComponent now supports proper stateless mode when using `Basic` or `Digest` +- AuthComponent now supports proper stateless mode when using 'Basic' or 'Digest' authenticators. Starting of session can be prevented by setting :php:attr:`AuthComponent::$sessionKey` - to false. Also now when using only `Basic` or `Digest` you are no longer + to false. Also now when using only 'Basic' or 'Digest' you are no longer redirected to login page. For more info check the :php:class:`AuthComponent` page. -- Property :php:attr:`AuthComponent::$authError` can be set to boolean `false` to suppress flash message from being displayed. +- Property :php:attr:`AuthComponent::$authError` can be set to boolean ``false`` to suppress flash message from being displayed. PasswordHasher -------------- @@ -135,8 +135,8 @@ PaginatorHelper FormHelper ---------- -- The ``round`` option was added to :php:meth:`FormHelper::dateTime()`. Can be set to `up` or `down` - to force rounding in either direction. Defaults to null which rounds half up according to `interval`. +- The ``round`` option was added to :php:meth:`FormHelper::dateTime()`. Can be set to ``up`` or ``down`` + to force rounding in either direction. Defaults to null which rounds half up according to ``interval``. Network ======= -- GitLab From 586c51b3da70b89c4cff897929997f84b2fa9bb4 Mon Sep 17 00:00:00 2001 From: euromark Date: Wed, 30 Oct 2013 12:44:32 +0100 Subject: [PATCH 019/458] add missing brackets --- en/appendices/2-4-migration-guide.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/en/appendices/2-4-migration-guide.rst b/en/appendices/2-4-migration-guide.rst index 6f771ee40..73094f212 100644 --- a/en/appendices/2-4-migration-guide.rst +++ b/en/appendices/2-4-migration-guide.rst @@ -184,7 +184,7 @@ L10n The locale folders have to be adjusted accordingly (from `/Locale/per/` to `/Locale/fas/`). - ``sme`` is now the default locale for Sami as specified by ISO 639-3 and ``smi`` its alias. The locale folders have to be adjusted accordingly (from `/Locale/smi/` to `/Locale/sme/`). -- ``mkd`` replaces ```mk`` as default locale for Macedonian as specified by ISO 639-3. +- ``mkd`` replaces ``mk`` as default locale for Macedonian as specified by ISO 639-3. The corresponding locale folders have to be adjusted, as well. - Catalog code ``in`` has been dropped in favor of ``id`` (Indonesian), ``e`` has been dropped in favor of ``el`` (Greek), @@ -201,7 +201,7 @@ Logging - Log engines do not need the suffix ``Log`` anymore in their setup configuration. So for the FileLog engine it suffices to define ``'engine' => 'File'`` now. This unifies the way engines are named in configuration (see Cache engines for example). - Note: If you have a Log engine like ```DatabaseLogger`` that does not follow the convention to + Note: If you have a Log engine like ``DatabaseLogger`` that does not follow the convention to use a suffix ``Log`` for your class name you have to adjust your class name to ``DatabaseLog``. You should also avoid class names like ``SomeLogLog`` which include the suffix twice at the end. @@ -230,7 +230,7 @@ Utility General ------- -- :php:func:`pr` no longer outputs HTML when running in cli mode. +- :php:func:`pr()` no longer outputs HTML when running in cli mode. Sanitize -------- -- GitLab From 9c4b366df347e6abac72856bddfc9663a7174bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=BCrth?= Date: Wed, 30 Oct 2013 22:59:48 +0100 Subject: [PATCH 020/458] Added strict parameter to inList data validation rule http://api.cakephp.org/2.4/class-Validation.html#_inList --- en/models/data-validation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/models/data-validation.rst b/en/models/data-validation.rst index 31faa96df..50fb0640e 100644 --- a/en/models/data-validation.rst +++ b/en/models/data-validation.rst @@ -899,7 +899,7 @@ with usage examples. .. versionadded:: 2.3 This method was added in 2.3 -.. php:staticmethod:: inList(string $check, array $list) +.. php:staticmethod:: inList(string $check, array $list, $strict = true) This rule will ensure that the value is in a given set. It needs an array of values. The field is valid if the field's value matches -- GitLab From 00e855cedacaf4ebcae5c107e018e732e0a539c9 Mon Sep 17 00:00:00 2001 From: cake17 Date: Wed, 30 Oct 2013 23:33:48 +0100 Subject: [PATCH 021/458] [fr] Follow #855 AfterSave declaration was not compatible with Model class in code exampl.. --- fr/core-libraries/caching.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fr/core-libraries/caching.rst b/fr/core-libraries/caching.rst index b5eb64571..9d5956cc6 100644 --- a/fr/core-libraries/caching.rst +++ b/fr/core-libraries/caching.rst @@ -282,7 +282,7 @@ Cache de retirer toutes les entrées associées au groupe ``post``:: // Model/Post.php - public function afterSave($created) { + public function afterSave($created, $options = array()) { if ($created) { Cache::clearGroup('post', 'site_home'); } @@ -300,7 +300,7 @@ même groupe:: * Une variation de l\'exemple précédent qui nettoie toutes les * configurations de Cache ayant le même groupe */ - public function afterSave($created) { + public function afterSave($created, $options = array()) { if ($created) { $configs = Cache::groupConfigs('post'); foreach ($configs['post'] as $config) { -- GitLab From 7318dbaad67a209a32bb1ceff07e728ab7eb1d1a Mon Sep 17 00:00:00 2001 From: cake17 Date: Wed, 30 Oct 2013 23:36:23 +0100 Subject: [PATCH 022/458] [fr] Follow 39d42cf76bff2ec1862613f011289b39b1f54c77 correct backticks --- fr/appendices/2-4-migration-guide.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fr/appendices/2-4-migration-guide.rst b/fr/appendices/2-4-migration-guide.rst index 195f712c9..cd3078be0 100644 --- a/fr/appendices/2-4-migration-guide.rst +++ b/fr/appendices/2-4-migration-guide.rst @@ -49,7 +49,7 @@ Constantes remplacées par les variables de config respectivement ``App.imageBaseUrl``, ``App.jsBaseUrl``, ``App.cssBaseUrl``. -- Les Constantes `IMAGES`, `JS`, `CSS` ont été dépréciées. +- Les Constantes ``IMAGES``, ``JS``, ``CSS`` ont été dépréciées. Object ------ @@ -64,13 +64,13 @@ AuthComponent ------------- - AuthComponent supporte maintenant le mode proper stateless lors de - l'utilisation des authentifieurs `Basic` ou `Digest`. Partir de session + l'utilisation des authentifieurs 'Basic' ou 'Digest'. Partir de session peut être empêché en configurant :php:attr:`AuthComponent::$sessionKey` - à false. Aussi maintenant lors de l'utilisation uniquement de `Basic` ou - `Digest`, vous n'êtes plus redirigé vers la page de login. Pour plus d'infos, + à false. Aussi maintenant lors de l'utilisation uniquement de 'Basic' ou + 'Digest', vous n'êtes plus redirigé vers la page de login. Pour plus d'infos, vérifiez la page :php:class:`AuthComponent`. - La propriété :php:attr:`AuthComponent::$authError` peut être définie au - boléen `false` pour supprimer l'affichage du message flash. + boléen ``false`` pour supprimer l'affichage du message flash. PasswordHasher -------------- @@ -154,9 +154,9 @@ FormHelper ---------- - L'option ``round`` a été ajoutée à :php:meth:`FormHelper::dateTime()`. Peut - être définie à `up` ou `down` pour forcer l'arrondi quelque soit la + être définie à ``up`` ou ``down`` pour forcer l'arrondi quelque soit la direction. Par défaut à null qui arrondit à la moitié supérieure selon - `interval`. + ``interval``. Network ======= -- GitLab From 480cbc470c8f6bc583e46a67fdeac3c56af758d0 Mon Sep 17 00:00:00 2001 From: cake17 Date: Wed, 30 Oct 2013 23:38:02 +0100 Subject: [PATCH 023/458] [fr] Follow 586c51b3da70b89c4cff897929997f84b2fa9bb4 add missing brackets --- fr/appendices/2-4-migration-guide.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fr/appendices/2-4-migration-guide.rst b/fr/appendices/2-4-migration-guide.rst index cd3078be0..90cc2ab1d 100644 --- a/fr/appendices/2-4-migration-guide.rst +++ b/fr/appendices/2-4-migration-guide.rst @@ -214,7 +214,7 @@ L10n - ``sme`` est maintenant la locale par défaut pour le Sami comme spécifié par ISO 639-3 et ``smi`` son alias. Les dossiers de locale ont été ajustés en conséquence (de `/Locale/smi/` en `/Locale/sme/`). -- ``mkd`` remplace ```mk`` comme locale par défaut pour le Macedonien comme +- ``mkd`` remplace ``mk`` comme locale par défaut pour le Macedonien comme spécifié par ISO 639-3. Les dossiers de locale ont aussi été ajustés. - Le code de Catalog ``in`` a été supprimé et remplacé par ``id`` (Indonesian), ``e`` a été supprimé et remplacé par ``el`` (Greek), @@ -234,7 +234,7 @@ Logging configuration. Donc pour le moteur de FileLog; il suffit maintenant de définir ``'engine' => 'File'``. Cela unifie la façon dont les moteurs sont nommés dans la configuration (regardez les moteurs de Cache par exemple). - Note: Si vous avez un moteur de Log de type ```DatabaseLogger`` qui ne + Note: Si vous avez un moteur de Log de type ``DatabaseLogger`` qui ne suit pas les conventions, utilisez un suffix ``Log`` pour votre nom de classe, vous devez ajuster votre nom de classe en ``DatabaseLog``. Vous devez aussi éviter les noms de classe comme ``SomeLogLog`` ce qui inclut @@ -269,7 +269,7 @@ Utility General ------- -- :php:func:`pr` ne sort plus le HTML lors du lancement en mode cli. +- :php:func:`pr()` ne sort plus le HTML lors du lancement en mode cli. Sanitize -------- -- GitLab From dcfeb30fd1abe8202f4c0d50d9f277509b32f26c Mon Sep 17 00:00:00 2001 From: cake17 Date: Wed, 30 Oct 2013 23:39:00 +0100 Subject: [PATCH 024/458] [fr] Follow 9c4b366df347e6abac72856bddfc9663a7174bc1 Added strict parameter to inList data validation rule --- fr/models/data-validation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/models/data-validation.rst b/fr/models/data-validation.rst index 94b31b8f8..2cab56b0c 100644 --- a/fr/models/data-validation.rst +++ b/fr/models/data-validation.rst @@ -910,7 +910,7 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. .. versionadded:: 2.3 Cette méthode a été ajoutée dans 2.3 -.. php:staticmethod:: inList(string $check, array $list) +.. php:staticmethod:: inList(string $check, array $list, $strict = true) Cette règle s'assurera que la valeur est dans un ensemble donné. Elle nécessite un tableau des valeurs. Le champ est valide si sa valeur -- GitLab From c49e80600fcf583735d08762327b5fe6d8bf8aac Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Wed, 30 Oct 2013 22:07:19 -0400 Subject: [PATCH 025/458] Edit grammar in Welcome docs --- en/index.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/en/index.rst b/en/index.rst index e5191fcb7..e1b400856 100644 --- a/en/index.rst +++ b/en/index.rst @@ -6,7 +6,7 @@ Welcome ####### -The CakePHP cookbook, is an openly developed community editable documentation +The CakePHP cookbook is an openly developed and community editable documentation project. We hope to maintain a high level of quality, validity and accuracy for the documentation. @@ -21,10 +21,10 @@ the documentation. - `EPUB <../_downloads/en/CakePHPCookbook.epub>`_ - `Original Source `_ -Getting started +Getting Started =============== -Build a blog +Build a Blog ------------ Get started with the :doc:`blog tutorial`. @@ -41,26 +41,26 @@ Controllers ----------- Controllers handle requests, and help co-ordinate and prepare -the response for the client. Read more about :doc:`/controllers` +the response for the client. Read more about :doc:`/controllers`. Views ----- Views are the presentation layer in CakePHP. They convert the data fetched from Models, into the output format the client -requested. Read more about :doc:`/views` +requested. Read more about :doc:`/views`. Models ------ Models are the heart of your application, they handle the validation, -storage and retrieval of your data. Read more about :doc:`/models` +storage and retrieval of your data. Read more about :doc:`/models`. Getting Help ============ If you're stuck, there are a number of places :doc:`you can get help -` +`. -- GitLab From 6feac6846298b6304b6bcab57c08c903bdca6c94 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Wed, 30 Oct 2013 23:39:54 -0400 Subject: [PATCH 026/458] Change indented to underscored in Tree behavior docs --- en/core-libraries/behaviors/tree.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index c92d21108..1b69ebd35 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -398,7 +398,7 @@ are a few more tree-orientated permutations at your disposal. :param $recursive: The number of levels deep to fetch associated records This method will return data similar to - :ref:`model-find-list`, with an indented prefix + :ref:`model-find-list`, with an underscored prefix to show the structure of your data. Below is an example of what you can expect this method to return:: -- GitLab From ebd9f04c1346f8f5c691727b2a8d8247f7eeace9 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Thu, 31 Oct 2013 00:00:02 -0400 Subject: [PATCH 027/458] Change spacer wording to be ambiguous --- en/core-libraries/behaviors/tree.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index 1b69ebd35..d322a7833 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -398,9 +398,9 @@ are a few more tree-orientated permutations at your disposal. :param $recursive: The number of levels deep to fetch associated records This method will return data similar to - :ref:`model-find-list`, with an underscored prefix - to show the structure of your data. Below is an example of what you - can expect this method to return:: + :ref:`model-find-list`, but with a nested prefix that is specified + in the``spacer`` option to show the structure of your data. Below is + an example of what you can expect this method to return:: $treelist = $this->Category->generateTreeList(); -- GitLab From 9d6a4678c90c99cdd2678183655b8f03e551ca2e Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Thu, 31 Oct 2013 00:03:20 -0400 Subject: [PATCH 028/458] Remove comma because the pause is not appropriate --- en/core-libraries/behaviors/tree.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index d322a7833..d44a10f17 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -398,7 +398,7 @@ are a few more tree-orientated permutations at your disposal. :param $recursive: The number of levels deep to fetch associated records This method will return data similar to - :ref:`model-find-list`, but with a nested prefix that is specified + :ref:`model-find-list` but with a nested prefix that is specified in the``spacer`` option to show the structure of your data. Below is an example of what you can expect this method to return:: -- GitLab From 0e1eb90125a0c5b2d8533f04c7064057ca79ee21 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Thu, 31 Oct 2013 11:08:42 -0400 Subject: [PATCH 029/458] Add missing space --- en/core-libraries/behaviors/tree.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index d44a10f17..a76766416 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -399,7 +399,7 @@ are a few more tree-orientated permutations at your disposal. This method will return data similar to :ref:`model-find-list` but with a nested prefix that is specified - in the``spacer`` option to show the structure of your data. Below is + in the ``spacer`` option to show the structure of your data. Below is an example of what you can expect this method to return:: $treelist = $this->Category->generateTreeList(); -- GitLab From d7e81a042d33510fabdb0d45cd651e44399ea8bb Mon Sep 17 00:00:00 2001 From: Rachman Chavik Date: Fri, 1 Nov 2013 07:37:27 +0700 Subject: [PATCH 030/458] Add note for selecting `database` with RedisEngine See: cakephp/cakephp#2254 --- en/appendices/2-5-migration-guide.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/en/appendices/2-5-migration-guide.rst b/en/appendices/2-5-migration-guide.rst index aa1220c7c..3dd38838d 100644 --- a/en/appendices/2-5-migration-guide.rst +++ b/en/appendices/2-5-migration-guide.rst @@ -12,6 +12,8 @@ Cache shared persistent connections. - The ``Memcache`` adapter is now deprecated in favor of ``Memcached``. - :php:meth:`Cache::remember()` was added. +- :php:meth:`Cache::config()` now accepts ``database`` key when used with + :php:class:`RedisEngine` in order to use non-default database number. Console ======= -- GitLab From e7c68afb27b3105eb5afcad6c9bbd882a41d86de Mon Sep 17 00:00:00 2001 From: Rachman Chavik Date: Fri, 1 Nov 2013 07:39:44 +0700 Subject: [PATCH 031/458] Fix sphinx warning and remove trailing space --- en/getting-started/cakephp-conventions.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/en/getting-started/cakephp-conventions.rst b/en/getting-started/cakephp-conventions.rst index 921845745..a14818db2 100644 --- a/en/getting-started/cakephp-conventions.rst +++ b/en/getting-started/cakephp-conventions.rst @@ -38,22 +38,22 @@ will not be accessible directly from the web but is available for internal use. For example:: class NewsController extends AppController { - + public function latest() { $this->_findNewArticles(); } - + protected function _findNewArticles() { // Logic to find latest news articles } } - + While the page http://www.example.com/news/latest/ would be accessible to the user as usual, someone trying to get to the page http://www.example.com/news/\_findNewArticles/ would get an error, because the method is preceded with an underscore. You can also use -PHP's visibility keywords to indicate whether or not a method can be +PHP's visibility keywords to indicate whether or not a method can be accessed from a URL. Non-public methods cannot be accessed. URL Considerations for Controller Names @@ -84,7 +84,7 @@ For more information on CakePHP URLs and parameter handling, see .. _file-and-classname-conventions: File and Class Name Conventions -============================== +=============================== In general, filenames match the class names, which are CamelCased. So if you have a class **MyNiftyClass**, then in CakePHP, @@ -94,7 +94,7 @@ classes you would typically use in a CakePHP application: - The Controller class **KissesAndHugsController** would be found - in a file named **KissesAndHugsController.php** + in a file named **KissesAndHugsController.php** - The Component class **MyHandyComponent** would be found in a file named **MyHandyComponent.php** - The Model class **OptionValue** would be found in a file named @@ -155,7 +155,7 @@ as a normal model. E.g.:: id INT(10) NOT NULL AUTO_INCREMENT, post_id INT(10) NOT NULL, tag_id INT(10) NOT NULL, - PRIMARY KEY(id)); + PRIMARY KEY(id)); Rather than using an auto-increment key as the primary key, you may also use char(36). CakePHP will then use a unique 36 character UUID -- GitLab From 8c62e9da9bb5e78ebe76bbc1635ee603094f32ad Mon Sep 17 00:00:00 2001 From: Leandro de Santana Diniz Date: Fri, 1 Nov 2013 08:47:56 -0200 Subject: [PATCH 032/458] Fixes in Portuguese Fixes in Portuguese --- pt/getting-started.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pt/getting-started.rst b/pt/getting-started.rst index 624371bc3..0ad38f669 100644 --- a/pt/getting-started.rst +++ b/pt/getting-started.rst @@ -1,14 +1,14 @@ Primeiros Passos ################ -O framework CakePHP fornece uma base robusta e solida para suas aplicações. +O framework CakePHP fornece uma base robusta e sólida para suas aplicações. Podendo tratar todos os aspectos, da requisição inicial do usuário até a renderização de uma página web. Visto que o framework segue o princípio MVC, ele lhe permite customizar e estender facilmente muitos dos aspectos de sua aplicação. O framework também fornece uma organização estrutural básica de nome de arquivos -à nomes de tabelas do banco de dados, mantendo toda sua aplicação consistente e +a nomes de tabelas do banco de dados, mantendo toda sua aplicação consistente e lógica. Este conceito é simples mas poderoso. Siga as convenções e você sempre saberá exatamente onde as coisas estão e como estão organizadas. -- GitLab From 647a5a0455a234ff9bedb91013ec2d6dcf54c336 Mon Sep 17 00:00:00 2001 From: Leandro de Santana Diniz Date: Sat, 2 Nov 2013 10:24:36 -0200 Subject: [PATCH 033/458] Update auth.rst fixes and improvements in portuguese --- .../blog-auth-example/auth.rst | 85 +++++++++---------- 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/pt/tutorials-and-examples/blog-auth-example/auth.rst b/pt/tutorials-and-examples/blog-auth-example/auth.rst index d4b9864f7..b7f867cee 100644 --- a/pt/tutorials-and-examples/blog-auth-example/auth.rst +++ b/pt/tutorials-and-examples/blog-auth-example/auth.rst @@ -1,16 +1,15 @@ Autenticação simples e Autorização da Aplicação ############################################### -Seguindo com nosso :doc:`/tutorials-and-examples/blog/blog` exemplo, imagine que -queremos fornececer acesso seguro as nossas urls, baseada em autenticação de usuário. -Nós também temos outro requisito, permitir que muitos autores possam -criar seus próprios posts, editar e deletar os post deles sem que afete o que os outros -autores fizeram em seus posts. +Seguindo com nosso exemplo do :doc:`/tutorials-and-examples/blog/blog`, imagine que +queremos fornececer acesso seguro às nossas urls, baseada em autenticação de usuário. +Nós também temos outro requisito, permitir que muitos autores possam criar seus próprios +posts, editar e deletar os post deles sem que afete o que os outros autores fizeram em seus posts. Criando a tabela de usuários ============================ -Primeiro, vamos criar uma nova tabela na nossa base de dados blog para armazenar os dados de usuários:: +Primeiro, vamos criar uma nova tabela na nossa base de dados do blog para armazenar os dados de usuários:: CREATE TABLE users ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, @@ -23,8 +22,8 @@ Primeiro, vamos criar uma nova tabela na nossa base de dados blog para armazenar Nós respeitamos as convenções do CakePHP para nomear tabelas, mas também aproveitamos outra convenção: usando as colunas username e password em nossa -tabela users,o CakePHP será capaz de auto configurar as coisas quando implementarmos -o mecanismos de login de nossos usuários. +tabela users, o CakePHP será capaz de auto configurar as coisas quando implementarmos +os mecanismos de login de nossos usuários. A próxima etapa é criar o nosso model User, responsável pelas pesquisas, gravações e validações de dados dos usuários:: @@ -55,8 +54,8 @@ validações de dados dos usuários:: ); } -Vamos criar também nosso UsersController, o conteúdo a seguir corresponde a classe UsersController -básica `cozida` usando o ferramenta de geração de códigos presente no CakePHP:: +Vamos criar também nosso UsersController, o conteúdo a seguir corresponde à classe UsersController +básica `cozida` usando a ferramenta de geração de códigos presente no CakePHP:: // app/Controller/UsersController.php class UsersController extends AppController { @@ -152,7 +151,7 @@ Autorização (login e logout) Nós agora estamos prontos para adicionar a camada de autorização. No CakePHP isso é feito pela :php:class:`AuthComponent`, uma classe responsável por solicitar login para certas ações, -manipulando sign-in e sign-out, e também autorizando usuários logados acessarem actions as quais +manipulando sign-in e sign-out, e também autorizando usuários logados a acessarem actions as quais possuem permissão. Para adicionar esse componente em sua aplicação abra seu arquivo ``app/Controller/AppController.php`` @@ -182,18 +181,18 @@ em nosso caso são ``/posts/`` e ``/`` respectivamente. O que fizemos na função ``beforeFilter`` foi dizer ao AuthComponent para não solicitar um login para todas as actions ``index`` e ``view``, em todos os controller. Nós queremos -queremos que nossos visitantes possam ler qualquer post sem precisar se registrar no site. +que nossos visitantes possam ler qualquer post sem precisar se registrar no site. Agora, nós precisamos autorizar que novos usuários possam se registrar, salvando o nome de usuário e a senha deles, e o mais importante encriptar a senha pra que ela não seja armazenada como texto plano em nosso banco de dados. -Vamos dizer ao AuthComponet para permitir usuários deslogados acessarem a função +Vamos dizer ao AuthComponet para permitir que usuários deslogados acessem a função add e implementar a ação de login e logout:: // app/Controller/UsersController.php public function beforeFilter() { parent::beforeFilter(); - $this->Auth->allow('add'); // Letting users register themselves + $this->Auth->allow('add'); // Permitindo que os usuários se registrem } public function login() { @@ -226,7 +225,7 @@ e adicione o seguinte:: // ... -Então, agora toda vez que um usuário for salvo, a senha será encriptada usando o hashing padrão disponibilizado pela +Então, agora toda vez que um usuário for salvo, a senha será encriptada usando o hashing padrão disponibilizado pela classe AuthComponent. Está faltando somente um arquivo view para a função de login, Aqui está ele: .. code-block:: php @@ -246,19 +245,19 @@ classe AuthComponent. Está faltando somente um arquivo view para a função de Você pode registrar um novo usuário acessando a url ``/users/add`` e autenticar com as credenciais do usuário recém criado indo para a url ``/users/login``. Tente também acessar qualquer outra url sem que a permisão tenha sido explicitada, como em ``/posts/add``, -você verá que a aplicação irá redireciona-lo automáticamente para pagina de login. +você verá que a aplicação irá redirecioná-lo automaticamente para a página de login. E é isso! Parece simples demais para ser verdade. Vamos voltar um pouco para explicar o que aconteceu. A função ``beforeFilter`` está falando para o AuthComponent não solicitar um -login para a ação ``add`` em adição as açẽos ``index`` e ``view``que foram +login para a ação ``add`` em adição as ações ``index`` e ``view`` que foram prontamente autorizadas na função ``beforeFilter`` do AppController. A ação de ``login`` chama a função ``$this->Auth->login()`` do AuthComponent, -e ele funciona sem qualquer configuração adicional por que seguimos das convenções +e ele funciona sem qualquer configuração adicional porque seguimos as convenções mencionadas anteriormente. Isso é, temos um model User com uma coluna username e uma password, -e usa um form para postar os dados dos usuário para o controller. Essa função +e usamos um form para postar os dados do usuário para o controller. Essa função retorna se o login foi bem sucedido ou não, e caso ela retorne sucesso, então nós redirecionamos -o usuário para a url que configuramos quando adicionamos o AuthComponent em nossa aplicação. +o usuário para a url que configuramos quando adicionamos o AuthComponent em nossa aplicação. O logout funciona exatamente quando acessamos a url ``/users/logout`` e irá redirecionar o usuário para a url configurada em logoutUrl anteriormente descrita. Essa url é acionada quando @@ -269,7 +268,7 @@ Autorização (quem tem permissão de acessar o que) Como afirmado anteriormente, nós estamos convertendo esse blog em uma ferramenta multi usuário de autoria, e para fazer isso, nós precisamos modificar um pouco a tabela posts para adicionar -a referencia ao model User:: +a referência ao model User:: ALTER TABLE posts ADD COLUMN user_id INT(11); @@ -279,7 +278,7 @@ post criado:: // app/Controller/PostsController.php public function add() { if ($this->request->is('post')) { - $this->request->data['Post']['user_id'] = $this->Auth->user('id'); //Added this line + $this->request->data['Post']['user_id'] = $this->Auth->user('id'); // Adicionada essa linha if ($this->Post->save($this->request->data)) { $this->Session->setFlash('Your post has been saved.'); $this->redirect(array('action' => 'index')); @@ -292,8 +291,8 @@ momento. Nós usamos esse metódo para adicionar a informação dentro de reques ela seja salva. Vamos garantir que nossa app evite que alguns autores editem ou apaguem posts de outros. -Uma regra basica para nossa aplicação é que usuários admin podem acessar qualquer url, enquanto usuários normais -(o papel author) pode somente acessar as actions permitidas. +Uma regra básica para nossa aplicação é que usuários admin possam acessar qualquer url, enquanto usuários normais +(o papel author) podem somente acessar as actions permitidas. Abra novamente a classe AppController e adicione um pouco mais de opções para as configurações do Auth:: // app/Controller/AppController.php @@ -309,21 +308,21 @@ Abra novamente a classe AppController e adicione um pouco mais de opções para public function isAuthorized($user) { if (isset($user['role']) && $user['role'] === 'admin') { - return true; //Admin pode acessar todas actions + return true; // Admin pode acessar todas actions } - return false; // O resto não pode + return false; // Os outros usuários não podem } Nós acabamos de criar um mecanismo de autorização muito simples. Nesse caso os usuários -com papel ``admin`` irão poder acessar qualquer url no site quando estiverem logados, +com papel ``admin`` poderão acessar qualquer url no site quando estiverem logados, mas o restante dos usuários (i.e o papel ``author``) não podem acessar qualquer coisa diferente -dos usuários não logado. +dos usuários não logados. Isso não é exatamente o que nós queremos, por isso precisamos corrigir nosso metódo ``isAuthorized()`` para fornecer mais regras. Mas ao invés de fazer isso no AppController, vamos -delegar a cada controller suprir essas regras extras. As regras que adicionaremos para o -add de PostsController deve permitir ao autores criaresmo post mas evitar a -edição de posts se não corresponde. Abra o arquivo ``PostsController.php`` +delegar a cada controller para suprir essas regras extras. As regras que adicionaremos para o +add de PostsController deve permitir ao autores criarem os posts mas evitar a +edição de posts que não sejam deles. Abra o arquivo ``PostsController.php`` e adicione o seguinte conteúdo:: // app/Controller/PostsController.php @@ -331,7 +330,7 @@ e adicione o seguinte conteúdo:: public function isAuthorized($user) { if (!parent::isAuthorized($user)) { if ($this->action === 'add') { - // All registered users can add posts + // Todos os usuários registrados podem criar posts return true; } if (in_array($this->action, array('edit', 'delete'))) { @@ -342,13 +341,13 @@ e adicione o seguinte conteúdo:: return false; } -Nós estamos sobreescrevendo a chamada do ``isAuthorized()`` do AppController e internamente -verificando se na classe pai já é usuário autoriado. Se ele não for, -então só lhe permite acesso a ação add, e condicionamente acesso as ações -edit e delete. A última coisa que falta implementar, é dizer se usuário é -autorizado a editar ou post ou não, nós estamos chamando a função ``isOwnedBy()`` -no model Post. Isso normamlmente é uma boa prática para mover tanta lógica quanto possivél -para dentro dos models. Vamos então implementar essa função:: +Nós estamos sobreescrevendo a chamada do ``isAuthorized()`` do AppController e internamente +verificando na classe pai se o usuário está autorizado. Caso ele não esteja, +permitiremos acesso à ação add, e condicionamente acesso às ações +edit e delete. A última coisa que falta implementar, é dizer se usuário é +autorizado a editar o post ou não, nós estamos chamando a função ``isOwnedBy()`` +no model Post. Mover lógica para dentro dos models normalmente é uma boa prática. Vamos +então implementar essa função:: // app/Model/Post.php @@ -359,11 +358,11 @@ para dentro dos models. Vamos então implementar essa função:: Isso conclui então nossa autorização simples e nosso tutorial de autorização. Para garantir o UsersController você pode seguir as mesmas técnicas que usamos para PostsController, -você também pode ser mais criativo e codificar algumas coisa mais geral no AppController -para suas próprias regras baseadas em papeis. +você também pode ser mais criativo e codificar algumas coisas mais gerais no AppController +para suas próprias regras baseadas em papéis. -Se precisar de mais controle, nós sugerimos você ler o guia completo do Auth -:doc:`/core-libraries/components/authentication` secão onde você encontrará mais +Se precisar de mais controle, nós sugerimos que leia o guia completo do Auth +:doc:`/core-libraries/components/authentication` seção onde você encontrará mais sobre a configuração do componente, criação de classes de Autorização customizadas, e muito mais. Sugerimos as seguintes leituras -- GitLab From 510e8bb8c3e7c82ab6146cd8170f0f79dfede5b6 Mon Sep 17 00:00:00 2001 From: tekapo Date: Sun, 3 Nov 2013 14:11:34 +0900 Subject: [PATCH 034/458] Fix typo --- ja/tutorials-and-examples/blog/part-two.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/tutorials-and-examples/blog/part-two.rst b/ja/tutorials-and-examples/blog/part-two.rst index e5c259ba9..93e706c40 100644 --- a/ja/tutorials-and-examples/blog/part-two.rst +++ b/ja/tutorials-and-examples/blog/part-two.rst @@ -163,7 +163,7 @@ CakePHPには一連のビューヘルパーがあり、リンクの作成、フ Cake内でURLを指定する場合、配列フォーマットの使用が推奨されます。 これはルーティングの章で詳しく説明されます。 URLに配列フォーマットを用いることによって、CakePHPのリバースルーティング機能を活用することができます。 -また、/コントロ>ーラ/アクション/パラメータ1/パラメータ2という形のアプリケーションの基本パスに対する相対パスを単に書くこともできます。 +また、/コントローラ/アクション/パラメータ1/パラメータ2という形のアプリケーションの基本パスに対する相対パスを単に書くこともできます。 この時点で、ブラウザから http://www.example.com/posts/index -- GitLab From b9c4e4392159f01156aacbb201bf09c5dd8b3223 Mon Sep 17 00:00:00 2001 From: okonomi Date: Tue, 5 Nov 2013 03:03:04 +0900 Subject: [PATCH 035/458] Fixed warning "Title underline too short" --- en/getting-started/cakephp-conventions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/getting-started/cakephp-conventions.rst b/en/getting-started/cakephp-conventions.rst index 921845745..00a79d7a8 100644 --- a/en/getting-started/cakephp-conventions.rst +++ b/en/getting-started/cakephp-conventions.rst @@ -84,7 +84,7 @@ For more information on CakePHP URLs and parameter handling, see .. _file-and-classname-conventions: File and Class Name Conventions -============================== +=============================== In general, filenames match the class names, which are CamelCased. So if you have a class **MyNiftyClass**, then in CakePHP, -- GitLab From 246adfc299e60a81426c68eea09b827b62209fde Mon Sep 17 00:00:00 2001 From: okonomi Date: Tue, 5 Nov 2013 03:09:20 +0900 Subject: [PATCH 036/458] [ja] Follow #774 --- ja/tutorials-and-examples/blog/part-two.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ja/tutorials-and-examples/blog/part-two.rst b/ja/tutorials-and-examples/blog/part-two.rst index 93e706c40..aad13d21a 100644 --- a/ja/tutorials-and-examples/blog/part-two.rst +++ b/ja/tutorials-and-examples/blog/part-two.rst @@ -419,11 +419,11 @@ editビューは以下のようになるでしょう:

Edit Post

Form->create('Post'); - echo $this->Form->input('title'); - echo $this->Form->input('body', array('rows' => '3')); - echo $this->Form->input('id', array('type' => 'hidden')); - echo $this->Form->end('Save Post'); + echo $this->Form->create('Post'); + echo $this->Form->input('title'); + echo $this->Form->input('body', array('rows' => '3')); + echo $this->Form->input('id', array('type' => 'hidden')); + echo $this->Form->end('Save Post'); ?> (値が入力されている場合、)このビューは、編集フォームを出力します。 @@ -444,7 +444,7 @@ editビューは以下のようになるでしょう: Id Title - Action + Action Created -- GitLab From 3b955f91033eb92bf4ee665c1439e6a09d03329e Mon Sep 17 00:00:00 2001 From: okonomi Date: Tue, 5 Nov 2013 03:15:25 +0900 Subject: [PATCH 037/458] [ja] Follow #820 --- ja/tutorials-and-examples/blog/part-two.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ja/tutorials-and-examples/blog/part-two.rst b/ja/tutorials-and-examples/blog/part-two.rst index aad13d21a..d333dc1d3 100644 --- a/ja/tutorials-and-examples/blog/part-two.rst +++ b/ja/tutorials-and-examples/blog/part-two.rst @@ -388,7 +388,7 @@ PostsControllerの ``edit()`` アクションはこんな形になります:: throw new NotFoundException(__('Invalid post')); } - if ($this->request->is('post') || $this->request->is('put')) { + if ($this->request->is(array('post', 'put'))) { $this->Post->id = $id; if ($this->Post->save($this->request->data)) { $this->Session->setFlash(__('Your post has been updated.')); @@ -406,8 +406,8 @@ PostsControllerの ``edit()`` アクションはこんな形になります:: もし ``$id`` パラメータが渡されてないか、ポストが存在しない場合、 ``NotFoundException`` を送出してCakePHPのErrorHandlerに処理を委ねます。 -次に、リクエストがPOSTであるかをチェックします。 -もしリクエストがPOSTなら、POSTデータでレコードを更新したり、バリデーションエラーを表示したりします。 +次に、リクエストがPOSTかPUTであるかをチェックします。 +もしリクエストがPOSTかPUTなら、POSTデータでレコードを更新したり、バリデーションエラーを表示したりします。 もし ``$this->request->data`` が空っぽだったら、取得していたポストレコードをそのままセットしておきます。 -- GitLab From fca704e54a15de0e65d9ad5c2218f06cad7ba927 Mon Sep 17 00:00:00 2001 From: okonomi Date: Tue, 5 Nov 2013 03:17:51 +0900 Subject: [PATCH 038/458] [ja] Follow #823 --- ja/tutorials-and-examples/blog-auth-example/auth.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ja/tutorials-and-examples/blog-auth-example/auth.rst b/ja/tutorials-and-examples/blog-auth-example/auth.rst index 0577c4048..07a90d424 100644 --- a/ja/tutorials-and-examples/blog-auth-example/auth.rst +++ b/ja/tutorials-and-examples/blog-auth-example/auth.rst @@ -103,9 +103,8 @@ UsersControllerもまた作成しましょう。 } public function delete($id = null) { - if (!$this->request->is('post')) { - throw new MethodNotAllowedException(); - } + $this->request->onlyAllow('post'); + $this->User->id = $id; if (!$this->User->exists()) { throw new NotFoundException(__('Invalid user')); -- GitLab From 6822a8d225e4b9aa455f3c447dcc91dcfdbbb91e Mon Sep 17 00:00:00 2001 From: okonomi Date: Tue, 5 Nov 2013 03:31:09 +0900 Subject: [PATCH 039/458] [ja] Fixed typo --- ja/contributing/code.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/contributing/code.rst b/ja/contributing/code.rst index 0c8d22a45..7351ae592 100644 --- a/ja/contributing/code.rst +++ b/ja/contributing/code.rst @@ -24,7 +24,7 @@ CakePHPのパッチの作業に入る前に、環境を整えることをお勧 もしGitの初心者なら、優秀かつ無料である `ProGit `_ のbook(訳注: `日本語版のbook `_)を読むことを強くお勧めします。 -githuからCakePHPのソースコードのクローンを取得してください: +githubからCakePHPのソースコードのクローンを取得してください: * `github `_ のアカウントを持っていないなら、作成しましょう。 * `CakePHP repository `_ を、 **Fork** ボタンをクリックして、Forkしてください。 -- GitLab From dcab5af232c8f9919f6413c782d771bba732b827 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Tue, 5 Nov 2013 21:44:56 -0500 Subject: [PATCH 040/458] Correct grammar in advanced installation docs --- en/installation/advanced-installation.rst | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/en/installation/advanced-installation.rst b/en/installation/advanced-installation.rst index 9b090cce5..e6b2436b9 100644 --- a/en/installation/advanced-installation.rst +++ b/en/installation/advanced-installation.rst @@ -1,11 +1,11 @@ Advanced Installation ##################### -Installing CakePHP with PEAR installer +Installing CakePHP with PEAR Installer ====================================== -CakePHP publishes a PEAR package that you can install using the pear installer. -Installing with the pear installer can simplify sharing CakePHP libraries +CakePHP publishes a PEAR package that you can install using the PEAR installer. +Installing with the PEAR installer can simplify sharing CakePHP libraries across multiple applications. To install CakePHP with pear you'll need to do the following:: @@ -14,22 +14,22 @@ following:: .. note:: - On some systems installing libraries with pear will require ``sudo``. + On some systems installing libraries with PEAR will require ``sudo``. -After installing CakePHP with pear, if pear is configured correctly you should +After installing CakePHP with PEAR, if PEAR is configured correctly you should be able to use the ``cake`` command to create a new application. Since CakePHP will be located on PHP's ``include_path`` you won't need to make any other changes. -Installing CakePHP with composer +Installing CakePHP with Composer ================================ Composer is a dependency management tool for PHP 5.3+. It solves many of the problems the PEAR installer has, and simplifies managing multiple versions of libraries. Since CakePHP publishes a PEAR package you can install CakePHP using `composer `_. Before installing CakePHP you'll need to -setup a ``composer.json`` file. A composer.json file for a CakePHP applications +setup a ``composer.json`` file. A composer.json file for a CakePHP application would look like the following:: { @@ -50,12 +50,12 @@ would look like the following:: Save this JSON into ``composer.json`` in the root directory of your project. Next download the composer.phar file into your project. After you've downloaded -composer, install CakePHP. In the same directory as your ``composer.json`` run +Composer, install CakePHP. In the same directory as your ``composer.json`` run the following:: $ php composer.phar install -Once composer has finished running you should have a directory structure that looks like:: +Once Composer has finished running you should have a directory structure that looks like:: example-app/ composer.phar @@ -79,24 +79,24 @@ changing ``CAKE_CORE_INCLUDE_PATH`` to be a relative path:: ROOT . DS . APP_DIR . '/Vendor/pear-pear.cakephp.org/CakePHP' ); -If you're installing any other libraries with composer, you'll need to setup -the autoloader, and work around an issue in composer's autoloader. In your +If you're installing any other libraries with Composer, you'll need to setup +the autoloader, and work around an issue in Composer's autoloader. In your ``Config/bootstrap.php`` file add the following:: - // Load composer autoload. + // Load Composer autoload. require APP . '/Vendor/autoload.php'; - // Remove and re-prepend CakePHP's autoloader as composer thinks it is the most important. + // Remove and re-prepend CakePHP's autoloader as Composer thinks it is the most important. // See https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b spl_autoload_unregister(array('App', 'load')); spl_autoload_register(array('App', 'load'), true, true); -You should now have a functioning CakePHP application with CakePHP installed via -composer. Be sure to keep the composer.json and composer.lock file with the +You should now have a functioning CakePHP application installed via +Composer. Be sure to keep the composer.json and composer.lock file with the rest of your source code. -Sharing CakePHP libraries with multiple applications +Sharing CakePHP Libraries with multiple Applications ==================================================== There may be some situations where you wish to place CakePHP's -- GitLab From 847aa00cc046e29449c7ccad47c5488439711f6a Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Tue, 5 Nov 2013 22:16:43 -0500 Subject: [PATCH 041/458] Correct grammar in installation docs --- en/installation.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/en/installation.rst b/en/installation.rst index 7ae8eecc2..6327375b6 100755 --- a/en/installation.rst +++ b/en/installation.rst @@ -34,7 +34,7 @@ License CakePHP is licensed under the MIT license. This means that you are free to modify, distribute and republish the source code on the condition that the copyright notices are left intact. You are also free to incorporate CakePHP -into any Commercial or closed source application. +into any commercial or closed source application. Downloading CakePHP =================== @@ -48,15 +48,15 @@ website `http://cakephp.org `_ and follow the "Download Now" link. All current releases of CakePHP are hosted on -`Github `_. Github houses both CakePHP +`GitHub `_. GitHub houses both CakePHP itself as well as many other plugins for CakePHP. The CakePHP releases are available at -`Github tags `_. +`GitHub tags `_. Alternatively you can get fresh off the press code, with all the bug-fixes and up to the minute enhancements. These can be accessed from github by cloning the -`Github`_ repository:: +`GitHub`_ repository:: git clone git://github.com/cakephp/cakephp.git @@ -116,7 +116,7 @@ If your web server is configured correctly, you should now find your CakePHP application accessible at http://www.example.com/cake\_2\_0/. -Using one CakePHP checkout for multiple applications +Using one CakePHP Checkout for multiple Applications ---------------------------------------------------- If you are developing a number of applications, it often makes sense to have -- GitLab From 2f86e2403adb2e4c91f25ce7c4524a2d18bd289e Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Tue, 5 Nov 2013 22:19:02 -0500 Subject: [PATCH 042/458] Fix proper name for GitHub --- en/installation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/installation.rst b/en/installation.rst index 6327375b6..f3876f422 100755 --- a/en/installation.rst +++ b/en/installation.rst @@ -55,7 +55,7 @@ releases are available at Alternatively you can get fresh off the press code, with all the bug-fixes and up to the minute enhancements. -These can be accessed from github by cloning the +These can be accessed from GitHub by cloning the `GitHub`_ repository:: git clone git://github.com/cakephp/cakephp.git -- GitLab From c1d0a138472eb182b335d0dfddd7cdd10b8239f9 Mon Sep 17 00:00:00 2001 From: Harreh Date: Wed, 6 Nov 2013 15:26:53 +0000 Subject: [PATCH 043/458] Update minor grammar issue in data-validation.rst --- en/models/data-validation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/models/data-validation.rst b/en/models/data-validation.rst index 50fb0640e..1f1b00145 100644 --- a/en/models/data-validation.rst +++ b/en/models/data-validation.rst @@ -329,7 +329,7 @@ fails:: ) ); -When specifying validation rules in this array form its possible to avoid +When specifying validation rules in this array form it's possible to avoid providing the ``message`` key. Consider this example:: public $validate = array( -- GitLab From 724a02a7e52702a5a57c2e5b7fe8230cc005c4dc Mon Sep 17 00:00:00 2001 From: ber clausen Date: Wed, 6 Nov 2013 21:12:18 -0200 Subject: [PATCH 044/458] Double rainbow word --- en/development/exceptions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/development/exceptions.rst b/en/development/exceptions.rst index d18b00089..9e956c5ed 100644 --- a/en/development/exceptions.rst +++ b/en/development/exceptions.rst @@ -241,7 +241,7 @@ in `SPL exceptions `_, ``Exception` itself, or :php:exc:`CakeException`. Application exceptions that extend Exception or the SPL exceptions will be treated as 500 error in production mode. :php:exc:`CakeException` is special in that all :php:exc:`CakeException` objects -are coerced into into either 500 or 404 errors depending on the code they use. +are coerced into either 500 or 404 errors depending on the code they use. When in development mode :php:exc:`CakeException` objects simply need a new template that matches the class name in order to provide useful information. If your application contained the following exception:: -- GitLab From aec896bf43f572fffd3e55f9d170961e6e223832 Mon Sep 17 00:00:00 2001 From: okonomi Date: Thu, 7 Nov 2013 13:17:00 +0900 Subject: [PATCH 045/458] [ja] Follow #778 --- ja/models/associations-linking-models-together.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/models/associations-linking-models-together.rst b/ja/models/associations-linking-models-together.rst index efe848f90..52289fa41 100644 --- a/ja/models/associations-linking-models-together.rst +++ b/ja/models/associations-linking-models-together.rst @@ -1024,7 +1024,7 @@ books\_tagsテーブルを使うように定義してみます。 :: 'alias' => 'BooksTag', 'type' => 'inner', 'conditions' => array( - 'Books.id = BooksTag.books_id' + 'Books.id = BooksTag.book_id' ) ), array('table' => 'tags', -- GitLab From d83cdec6165b838a8bccd999ba58a6befaf6063d Mon Sep 17 00:00:00 2001 From: okonomi Date: Thu, 7 Nov 2013 13:23:26 +0900 Subject: [PATCH 046/458] [ja] Follow #825 --- ja/controllers/components.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/controllers/components.rst b/ja/controllers/components.rst index dd37d4842..1cbabb6fa 100644 --- a/ja/controllers/components.rst +++ b/ja/controllers/components.rst @@ -24,8 +24,8 @@ ==================== コアコンポーネントの多くは設定を必要としています。コンポーネントが設定を必要としている例は、 -:doc:`/core-libraries/components/authentication`, :doc:`/core-libraries/components/cookie` や -:doc:`/core-libraries/components/email` などにあります。これらのコンポーネントと普通のコンポーネントの設定は大抵の場合、 +:doc:`/core-libraries/components/authentication` や :doc:`/core-libraries/components/cookie` などにあります。 +これらのコンポーネントと普通のコンポーネントの設定は大抵の場合、 ``$components`` 配列かコントローラの ``beforeFilter()`` メソッドで行われます。:: class PostsController extends AppController { -- GitLab From c4d45093bdc22df2d898570185756e8724c96def Mon Sep 17 00:00:00 2001 From: Harreh Date: Thu, 7 Nov 2013 13:21:56 +0000 Subject: [PATCH 047/458] Fixed bug in ArticleController.php example. --- en/development/testing.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/en/development/testing.rst b/en/development/testing.rst index 07002337c..2084f5f30 100644 --- a/en/development/testing.rst +++ b/en/development/testing.rst @@ -668,9 +668,9 @@ model. The controller code looks like:: $this->Article->save($this->request->data); } if (!empty($short)) { - $result = $this->Article->findAll(null, array('id', 'title')); + $result = $this->Article->find('all', array('id', 'title')); } else { - $result = $this->Article->findAll(); + $result = $this->Article->find('all'); } if (isset($this->params['requested'])) { -- GitLab From b18b5f4da071201de93719bb003e6ffa16306b86 Mon Sep 17 00:00:00 2001 From: okonomi Date: Fri, 8 Nov 2013 09:21:41 +0900 Subject: [PATCH 048/458] [ja] Follow #847 --- ja/models/associations-linking-models-together.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/models/associations-linking-models-together.rst b/ja/models/associations-linking-models-together.rst index 52289fa41..e4a6cee48 100644 --- a/ja/models/associations-linking-models-together.rst +++ b/ja/models/associations-linking-models-together.rst @@ -523,7 +523,7 @@ Imageモデルのサンプルでは、次のようになるでしょう。 :: public $belongsTo = array( 'Image' => array( 'counterCache' => true, - 'counterScope' => array('Image.active' => 1) // "Image" が active なデータのみカウントします + 'counterScope' => array('ImageComment.active' => 1) // "ImageComment" が active なデータのみカウントします ) ); } -- GitLab From b34e6114339fd290af5716d05e8706092e2d4d0d Mon Sep 17 00:00:00 2001 From: okonomi Date: Fri, 8 Nov 2013 09:24:17 +0900 Subject: [PATCH 049/458] [ja] Follow #845 --- ja/core-utility-libraries/app.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/core-utility-libraries/app.rst b/ja/core-utility-libraries/app.rst index 4e17b39bd..3bcd7e211 100644 --- a/ja/core-utility-libraries/app.rst +++ b/ja/core-utility-libraries/app.rst @@ -445,7 +445,7 @@ CakePHP のクラスをオーバーライドする フレームワークのほぼすべてのクラスはオーバーライドすることができます。 例外は :php:class:`App` と :php:class:`Configure` クラスです。 -そのようにオーバーライドを実行したいならばどんな場合であれ、フレームワークの内部構造を真似て app/Lib フォルダにクラスを追加する、ただそれだけです。 +そのようにオーバーライドを実行したいならばどんな場合であれ、フレームワークの内部構造を真似て ``app/Lib`` フォルダにクラスを追加する、ただそれだけです。 いくつかの例を挙げます .. -- GitLab From 82b0202332460d5c595b34c8f187e363f97e46b8 Mon Sep 17 00:00:00 2001 From: okonomi Date: Fri, 8 Nov 2013 09:28:20 +0900 Subject: [PATCH 050/458] [fr] Follow #844 --- ja/core-utility-libraries/app.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/core-utility-libraries/app.rst b/ja/core-utility-libraries/app.rst index 3bcd7e211..2a3f86d76 100644 --- a/ja/core-utility-libraries/app.rst +++ b/ja/core-utility-libraries/app.rst @@ -446,7 +446,7 @@ CakePHP のクラスをオーバーライドする フレームワークのほぼすべてのクラスはオーバーライドすることができます。 例外は :php:class:`App` と :php:class:`Configure` クラスです。 そのようにオーバーライドを実行したいならばどんな場合であれ、フレームワークの内部構造を真似て ``app/Lib`` フォルダにクラスを追加する、ただそれだけです。 -いくつかの例を挙げます +いくつかの例を挙げます: .. * To override the :php:class:`Dispatcher` class, create ``app/Lib/Routing/Dispatcher.php`` @@ -461,7 +461,7 @@ CakePHP のクラスをオーバーライドする When you load the replaced files, the app/Lib files will be loaded instead of the built-in core classes. -置き換えたファイルをロードすると、 app/Lib のファイルが組み込みのコアクラスの代わりにロードされます。 +置き換えたファイルをロードすると、 ``app/Lib`` のファイルが組み込みのコアクラスの代わりにロードされます。 .. Loading Vendor Files -- GitLab From 347b00e03c18963e6c279e124b228c9df7b6fd7b Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Thu, 7 Nov 2013 22:02:46 -0500 Subject: [PATCH 051/458] Fix additional GitHub references --- en/contributing/code.rst | 10 +++++----- en/contributing/documentation.rst | 2 +- en/contributing/tickets.rst | 2 +- en/development/debugging.rst | 2 +- en/models/datasources.rst | 2 +- .../simple-acl-controlled-application/part-two.rst | 4 ++-- en/views/helpers.rst | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/en/contributing/code.rst b/en/contributing/code.rst index 5d1f0fc93..0cecbb199 100644 --- a/en/contributing/code.rst +++ b/en/contributing/code.rst @@ -2,7 +2,7 @@ Code #### Patches and pull requests are a great way to contribute code back to CakePHP. -Pull requests can be created in github, and are prefered over patch files in +Pull requests can be created in GitHub, and are prefered over patch files in ticket comments. Initial setup @@ -25,9 +25,9 @@ Set up your user information with your name/handle and working email address:: If you are new to Git, we highly recommend you to read the excellent and free `ProGit `_ book. -Get a clone of the CakePHP source code from github: +Get a clone of the CakePHP source code from GitHub: -* If you don't have a `github `_ account, create one. +* If you don't have a `GitHub `_ account, create one. * Fork the `CakePHP repository `_ by clicking the **Fork** button. @@ -102,9 +102,9 @@ fork:: git push origin -Once your branch is on github, you can discuss it on the +Once your branch is on GitHub, you can discuss it on the `cakephp-core `_ mailing list or -submit a pull request on github. +submit a pull request on GitHub. Choosing where your changes will be merged into ----------------------------------------------- diff --git a/en/contributing/documentation.rst b/en/contributing/documentation.rst index 417fef75b..e89bd7cb9 100644 --- a/en/contributing/documentation.rst +++ b/en/contributing/documentation.rst @@ -4,7 +4,7 @@ Documentation Contributing to the documentation is simple. The files are hosted on https://github.com/cakephp/docs. Feel free to fork the repo, add your changes/improvements/translations and give back by issuing a pull request. -You can even edit the docs online with github, without ever downloading the +You can even edit the docs online with GitHub, without ever downloading the files. Translations diff --git a/en/contributing/tickets.rst b/en/contributing/tickets.rst index d671c65c7..140b648da 100644 --- a/en/contributing/tickets.rst +++ b/en/contributing/tickets.rst @@ -3,7 +3,7 @@ Tickets Getting feedback and help from the community in the form of tickets is an extremely important part of the CakePHP development process. All of CakePHP's -tickets are hosted on `Github `_. +tickets are hosted on `GitHub `_. Reporting bugs ============== diff --git a/en/development/debugging.rst b/en/development/debugging.rst index 1decdb4eb..8868d5cc3 100644 --- a/en/development/debugging.rst +++ b/en/development/debugging.rst @@ -197,7 +197,7 @@ Debug Kit DebugKit is a plugin that provides a number of good debugging tools. It primarily provides a toolbar in the rendered HTML, that provides a plethora of information about your application and the current request. You can download -`DebugKit `_ from github. +`DebugKit `_ from GitHub. .. meta:: diff --git a/en/models/datasources.rst b/en/models/datasources.rst index 56c1570ad..7395dfcc4 100644 --- a/en/models/datasources.rst +++ b/en/models/datasources.rst @@ -17,7 +17,7 @@ of which is listed here for your convenience: .. note:: You can find additional community contributed datasources in the - `CakePHP DataSources repository at github `_. + `CakePHP DataSources repository on GitHub `_. When specifying a database connection configuration in ``app/Config/database.php``, CakePHP transparently uses the corresponding diff --git a/en/tutorials-and-examples/simple-acl-controlled-application/part-two.rst b/en/tutorials-and-examples/simple-acl-controlled-application/part-two.rst index 93f79191d..1a2092587 100644 --- a/en/tutorials-and-examples/simple-acl-controlled-application/part-two.rst +++ b/en/tutorials-and-examples/simple-acl-controlled-application/part-two.rst @@ -9,9 +9,9 @@ controllers and actions into the Acl. However, we all hate doing repetitive things like typing in what could be hundreds of actions in a large application. -For this purpose exists a very handy plugin available at github, called +For this purpose exists a very handy plugin available on GitHub, called `AclExtras `_ which can -be downloaded in `The Github Downloads page `_. +be downloaded in `The GitHub Downloads page `_. We're going to briefly describe how to use it to generate all our ACO's First grab a copy of the plugin and unzipped or clone it using git into diff --git a/en/views/helpers.rst b/en/views/helpers.rst index 17827ceba..78b9c7bd4 100644 --- a/en/views/helpers.rst +++ b/en/views/helpers.rst @@ -149,7 +149,7 @@ view rendering process. See the :ref:`helper-api` and the Creating Helpers ================ -If a core helper (or one showcased on github or the Bakery) +If a core helper (or one showcased on GitHub or the Bakery) doesn't fit your needs, helpers are easy to create. Let's say we wanted to create a helper that could be used to output -- GitLab From 64ecfb135c3fe3b55b9f040130e87313b674764d Mon Sep 17 00:00:00 2001 From: cake17 Date: Mon, 11 Nov 2013 10:13:15 +0100 Subject: [PATCH 052/458] [fr] Follow #867 Fixed bug in ArticleController.php example. --- fr/development/testing.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fr/development/testing.rst b/fr/development/testing.rst index 5f590d1eb..13e1b353b 100644 --- a/fr/development/testing.rst +++ b/fr/development/testing.rst @@ -714,9 +714,9 @@ correspondant. Le code du controller ressemble à ceci:: $this->Article->save($this->request->data); } if (!empty($short)) { - $result = $this->Article->findAll(null, array('id', 'title')); + $result = $this->Article->find('all', array('id', 'title')); } else { - $result = $this->Article->findAll(); + $result = $this->Article->find('all'); } if (isset($this->params['requested'])) { -- GitLab From 09b6dd398b9e02c538ea38354472e5b7ac92e8a6 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Mon, 11 Nov 2013 12:16:25 -0500 Subject: [PATCH 053/458] Update docs for event manager changes. --- en/appendices/2-5-migration-guide.rst | 14 ++++++++++++++ en/core-libraries/events.rst | 14 +++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/en/appendices/2-5-migration-guide.rst b/en/appendices/2-5-migration-guide.rst index 3dd38838d..750661b9a 100644 --- a/en/appendices/2-5-migration-guide.rst +++ b/en/appendices/2-5-migration-guide.rst @@ -42,6 +42,20 @@ CookieComponent :php:class:`Security`. You can enable this by calling :php:meth:`CookieComponent::type()` with 'aes'. +Event +===== + +EventManager +------------ + +Events bound to the global manager are now fired in priority order with events +bound to a local manager. This can cause listeners to be fired in a different +order than they were in previous releases. Instead of all global listeners being triggered, +and then instance listeners being fired afterwards, the two sets of listeners +are combined into one list of listeners based on their priorities and then fired +as one set. Global listeners of a given priority are still fired before instance +listeners. + Network ======= diff --git a/en/core-libraries/events.rst b/en/core-libraries/events.rst index 989311304..02596d634 100644 --- a/en/core-libraries/events.rst +++ b/en/core-libraries/events.rst @@ -92,11 +92,9 @@ In addition to instance level event managers, CakePHP provides a global event manager that allows you to listen to any event fired in an application. This is useful when attaching listeners to a specific instance might be cumbersome or difficult. The global manager is a singleton instance of -:php:class:`CakeEventManager` that receives every event **before** the instance -managers do. In addition to receiving events first, the global manager also -maintains a separate priority stack for listeners. Once an event has been -dispatched to the global manager, it will be dispatched to the instance level -manager. You can access the global manager using a static method:: +:php:class:`CakeEventManager`. When an event is +dispatched, it will be dispatched to the both the global and instance level +listeners in priority order. You can access the global manager using a static method:: // In any configuration file or piece of code that executes before the event App::uses('CakeEventManager', 'Event'); @@ -112,6 +110,12 @@ order to prevent some bugs. Remember that with the flexibility of using the global manager, some additional complexity is incurred. +.. versionchanged:: 2.5 + + Prior to 2.5, listeners on the global manager were kept in a separate list + and fired **before** instance listeners are. + + Dispatching events ================== -- GitLab From e46c696cd685d39ec7e5074b4bf85e7a3bdf0ab2 Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Tue, 12 Nov 2013 08:29:15 +0900 Subject: [PATCH 054/458] [ja] Follow #867 --- ja/development/testing.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/development/testing.rst b/ja/development/testing.rst index 5e18834da..0346c4e5d 100644 --- a/ja/development/testing.rst +++ b/ja/development/testing.rst @@ -619,9 +619,9 @@ CakePHP のデータベース接続においてテーブル名のプレフィッ $this->Article->save($this->request->data); } if (!empty($short)) { - $result = $this->Article->findAll(null, array('id', 'title')); + $result = $this->Article->find('all', array('id', 'title')); } else { - $result = $this->Article->findAll(); + $result = $this->Article->find('all'); } if (isset($this->params['requested'])) { -- GitLab From fdce1df06845679d4fcd72a49d797708bf6c6390 Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Tue, 12 Nov 2013 08:58:51 +0900 Subject: [PATCH 055/458] [ja] Follow 347b00e03c18963e6c279e124b228c9df7b6fd7b --- ja/contributing/code.rst | 12 ++++++------ ja/contributing/documentation.rst | 2 +- ja/contributing/tickets.rst | 2 +- ja/development/debugging.rst | 4 ++-- ja/installation.rst | 8 ++++---- ja/tutorials-and-examples/blog/blog.rst | 2 +- .../simple-acl-controlled-application/part-two.rst | 2 +- .../simple-acl-controlled-application.rst | 2 +- ja/views/helpers.rst | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ja/contributing/code.rst b/ja/contributing/code.rst index 7351ae592..cf572a3fa 100644 --- a/ja/contributing/code.rst +++ b/ja/contributing/code.rst @@ -2,8 +2,8 @@ ###### パッチとプルリクエストはCakePHPにコードを寄贈する最善の方法です。 -パッチは `github `_ でチケットに添付できます。 -プルリクエストはgithubで作ることができ、コードに貢献するための一般的により良い方法です。 +パッチは `GitHub `_ でチケットに添付できます。 +プルリクエストはGitHubで作ることができ、コードに貢献するための一般的により良い方法です。 初期設定 ======== @@ -24,9 +24,9 @@ CakePHPのパッチの作業に入る前に、環境を整えることをお勧 もしGitの初心者なら、優秀かつ無料である `ProGit `_ のbook(訳注: `日本語版のbook `_)を読むことを強くお勧めします。 -githubからCakePHPのソースコードのクローンを取得してください: +GitHubからCakePHPのソースコードのクローンを取得してください: -* `github `_ のアカウントを持っていないなら、作成しましょう。 +* `GitHub `_ のアカウントを持っていないなら、作成しましょう。 * `CakePHP repository `_ を、 **Fork** ボタンをクリックして、Forkしてください。 forkがされた後に、ローカルマシーンにforkをクローンしてください:: @@ -98,9 +98,9 @@ CakePHPのセットアップを済ませたなら、 ``$test`` git push origin -一旦githubにブランチが配置されたら、 +一旦GitHubにブランチが配置されたら、 `cakephp-core `_ -メーリングリストで議論、またはgithubでプルリクエストを送ることができます。 +メーリングリストで議論、またはGitHubでプルリクエストを送ることができます。 変更のマージ先を選択する -------------------------------- diff --git a/ja/contributing/documentation.rst b/ja/contributing/documentation.rst index c8fb00470..4226551db 100644 --- a/ja/contributing/documentation.rst +++ b/ja/contributing/documentation.rst @@ -4,7 +4,7 @@ ドキュメントへの貢献の方法はシンプルです。 ファイルは https://github.com/cakephp/docs にホストされています。 自由にレポジトリをフォークして、変更・改善・翻訳を追加し、プルリクエストを発行してください。 -またファイルをダウンロードせず、githubを使ってオンラインでドキュメントを編集することもできます。 +またファイルをダウンロードせず、GitHubを使ってオンラインでドキュメントを編集することもできます。 翻訳 ==== diff --git a/ja/contributing/tickets.rst b/ja/contributing/tickets.rst index d4eaaf054..1689025c0 100644 --- a/ja/contributing/tickets.rst +++ b/ja/contributing/tickets.rst @@ -2,7 +2,7 @@ ######## チケットの形式でコミュニティからのフィードバックと助けを得ることは、CakePHPの開発プロセスの極めて重要な部分です。 -CakePHPのチケットの全ては `Github `_ にホストされています。 +CakePHPのチケットの全ては `GitHub `_ にホストされています。 バグの報告 ========== diff --git a/ja/development/debugging.rst b/ja/development/debugging.rst index 2e3dbffe8..7ec0cb52d 100644 --- a/ja/development/debugging.rst +++ b/ja/development/debugging.rst @@ -290,13 +290,13 @@ Debug Kit DebugKit は便利なデバッグツールをたくさん提供してくれるプラグインです。 まずは、レンダリングされた HTML 内にツールバーを表示して、あなたのアプリケーションや現在のリクエストについての情報を大量に提供してくれます。 -github の `DebugKit `_ からダウンロードが可能です。 +GitHub の `DebugKit `_ からダウンロードが可能です。 .. DebugKit is a plugin that provides a number of good debugging tools. It primarily provides a toolbar in the rendered HTML, that provides a plethora of information about your application and the current request. You can download - `DebugKit `_ from github. + `DebugKit `_ from GitHub. .. meta:: diff --git a/ja/installation.rst b/ja/installation.rst index 7f9746fe2..1d7acfb9b 100644 --- a/ja/installation.rst +++ b/ja/installation.rst @@ -40,12 +40,12 @@ CakePHP の最新版を手に入れるには、主に二つの方法がありま 最新のアーカイブをダウンロードするには、 `http://cakephp.org `_ のウェブサイトに行き、"Download Now!" という大きなリンクに従って進みます。 -CakePHP の最新のリリースは `Github `_ でホスティングされています。 -GithubにはCakePHP自身、また多くのCakePHPプラグインが含まれています。 -CakePHPのリリースは `Github tags `_ で入手できます。 +CakePHP の最新のリリースは `GitHub `_ でホスティングされています。 +GitHubにはCakePHP自身、また多くのCakePHPプラグインが含まれています。 +CakePHPのリリースは `GitHub tags `_ で入手できます。 他の手段を用いて、バグ修正や日ごとに行われる細かな機能追加が含まれた、できたてホヤホヤのコードを手に入れることができます。 -これらは `Github`_ からレポジトリを複製することでアクセスすることができます:: +これらは `GitHub`_ からレポジトリを複製することでアクセスすることができます:: git clone git://github.com/cakephp/cakephp.git diff --git a/ja/tutorials-and-examples/blog/blog.rst b/ja/tutorials-and-examples/blog/blog.rst index 6fb4a2ab8..446a33956 100644 --- a/ja/tutorials-and-examples/blog/blog.rst +++ b/ja/tutorials-and-examples/blog/blog.rst @@ -33,7 +33,7 @@ Cakeのダウンロード まずは、最新のCakeのコードをダウンロードしてきましょう。 -最新のCakeをダウンロードするには、githubにあるCakePHPプロジェクトを見てみましょう: +最新のCakeをダウンロードするには、GitHubにあるCakePHPプロジェクトを見てみましょう: `https://github.com/cakephp/cakephp/tags `_ そして、2.0の最新リリースをダウンロードします。 diff --git a/ja/tutorials-and-examples/simple-acl-controlled-application/part-two.rst b/ja/tutorials-and-examples/simple-acl-controlled-application/part-two.rst index cee5f15fb..14fc35322 100644 --- a/ja/tutorials-and-examples/simple-acl-controlled-application/part-two.rst +++ b/ja/tutorials-and-examples/simple-acl-controlled-application/part-two.rst @@ -9,7 +9,7 @@ ACOの作成を自動化するツール この目的のために、 `AclExtras `_ という名のとても便利なプラグインが存在し、 -`Githubのダウンロードページ `_ からダウンロードすることで、githubで入手することができます。 +`GitHubのダウンロードページ `_ からダウンロードすることで、入手することができます。 全てのACOを生成するための使用方法を簡単に説明しましょう。 まず、プラグインのコピーを入手し、 `app/Plugin/AclExtras` diff --git a/ja/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst b/ja/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst index ae436c4ec..7f74a73f6 100644 --- a/ja/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst +++ b/ja/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst @@ -33,7 +33,7 @@ CakePHPのある程度の経験と、MVCの概念についての理解、 まず、最新のCakePHPのコピーを取得しましょう。 -最新版をダウンロードするにはGithubのCakePHPプロジェクト(https://github.com/cakephp/cakephp/tags)にアクセスし、安定版のリリースをダウンロードしてください。 +最新版をダウンロードするにはGitHubのCakePHPプロジェクト(https://github.com/cakephp/cakephp/tags)にアクセスし、安定版のリリースをダウンロードしてください。 このチュートリアルで必要なバージョンは最新の2.0リリースです。 `git `_ を使ってレポジトリを複製(*clone*)することもできます。 diff --git a/ja/views/helpers.rst b/ja/views/helpers.rst index e98ea0bb2..051232574 100644 --- a/ja/views/helpers.rst +++ b/ja/views/helpers.rst @@ -128,7 +128,7 @@ HelperCollectionは :doc:`コレクション ` で ヘルパーを作る ============== -もし、コアヘルパー(またはgithubやBakeryにあるヘルパー) でやりたいことができなかったとしても、 +もし、コアヘルパー(またはGitHubやBakeryにあるヘルパー) でやりたいことができなかったとしても、 ヘルパーを作るのは簡単なので大丈夫です。 ここで、アプリケーション内の様々な場所で必要とされるCSSスタイルのリンクを出力するヘルパーを作りたかったとしましょう。 -- GitLab From d82e9d4a6c2ed601536ca1df4ec25dc7a5b14227 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Tue, 12 Nov 2013 13:43:01 -0500 Subject: [PATCH 056/458] Remove outdated information. --- README.mdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.mdown b/README.mdown index f83c0df65..12353c59b 100644 --- a/README.mdown +++ b/README.mdown @@ -1,7 +1,7 @@ CakePHP Documentation ===================== -This documentation is planned to replace the existing cookbook. Hopefully enabling community contributions and enabling multiple format documentation generation. +This is the official documentation for the CakePHP project. It is available online in HTML, PDF and EPUB formats at http://book.cakephp.org. Requirements ------------ @@ -90,4 +90,3 @@ Making search work locally * Populate the search index using `make populate-index`. * You should now be able to search the docs using elasticsearch. - -- GitLab From d7726a52fa2f4377f3ff7bd23e6c98302be8db1d Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Tue, 12 Nov 2013 22:32:15 -0500 Subject: [PATCH 057/458] Correct grammar in Request/Response docs --- en/controllers/request-response.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/en/controllers/request-response.rst b/en/controllers/request-response.rst index 118939752..f871d4b5a 100644 --- a/en/controllers/request-response.rst +++ b/en/controllers/request-response.rst @@ -59,7 +59,7 @@ on the request object as well:: $this->request['named']; $this->request->params['named']; -Will all provide you access to the passed arguments and named parameters. There +All of these will provide you access to the passed arguments and named parameters. There are several important/useful parameters that CakePHP uses internally, these are also all found in the request parameters: @@ -670,9 +670,9 @@ To actually get advantage of using this header you have to either call manually The Vary header --------------- -In some cases you might want to serve different contents using the same URL. +In some cases you might want to serve different content using the same URL. This is often the case if you have a multilingual page or respond with different -HTMLs depending on the browser. Under such circumstances you can use the ``Vary`` header:: +HTML depending on the browser. Under such circumstances you can use the ``Vary`` header:: $this->response->vary('User-Agent'); $this->response->vary('Accept-Encoding', 'User-Agent'); -- GitLab From 18d756afe4ec932c48a706ef37b75ada486270c3 Mon Sep 17 00:00:00 2001 From: cake17 Date: Wed, 13 Nov 2013 10:27:56 +0100 Subject: [PATCH 058/458] [fr] Follow #875 Correct grammar in Request/Response doc --- fr/controllers/request-response.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fr/controllers/request-response.rst b/fr/controllers/request-response.rst index c23feb60b..f946c7317 100644 --- a/fr/controllers/request-response.rst +++ b/fr/controllers/request-response.rst @@ -64,9 +64,9 @@ l'objet request:: $this->request->named; $this->request->params['named']; -Il vous fournira un accès aux arguments passés et aux paramètres nommés. -Il y a de nombreux paramètres importants et utiles que CakePHP utilise en -interne, il sont aussi trouvables dans les paramètres de la requête: +Tous ceux-ci vous fourniront un accès aux arguments passés et aux paramètres +nommés. Il y a de nombreux paramètres importants et utiles que CakePHP utilise +en interne, il sont aussi trouvables dans les paramètres de la requête: * ``plugin`` Le plugin gérant la requête, va être nul pour les non-plugins. * ``controller`` Le controller gère la requête courante. -- GitLab From 85e43a9a92ce9c8256416d59db83fa2ea5db5655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=BCrth?= Date: Wed, 13 Nov 2013 14:07:35 +0100 Subject: [PATCH 059/458] Fixed statement in french blog tutorial Closes cakephp/cakephp#2315 --- fr/tutorials-and-examples/blog/part-two.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst index 669830be8..9dff8f4ff 100644 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -231,7 +231,7 @@ tarder dans le Controller Posts:: } L'appel de ``set()`` devrait vous être familier. Notez que nous utilisons -``read()`` plutôt que ``find('all')`` parce que nous voulons seulement +``findById()`` plutôt que ``find('all')`` parce que nous voulons seulement récupérer les informations d'un seul post. Notez que notre action "view" prend un paramètre : l'ID du post que nous -- GitLab From 6375e7c07154316e226d1439c3ca0beb736db340 Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Wed, 13 Nov 2013 15:44:24 +0100 Subject: [PATCH 060/458] connection => connexion --- fr/appendices/2-0-migration-guide.rst | 886 +++++++++--------- fr/appendices/2-3-migration-guide.rst | 12 +- fr/appendices/2-4-migration-guide.rst | 4 +- fr/appendices/new-features-in-cakephp-2-0.rst | 166 ++-- .../code-generation-with-bake.rst | 4 +- fr/core-libraries/logging.rst | 4 +- fr/core-utility-libraries/httpsocket.rst | 8 +- fr/development/configuration.rst | 20 +- fr/development/exceptions.rst | 2 +- fr/development/testing.rst | 60 +- .../cakephp-folder-structure.rst | 8 +- fr/installation.rst | 4 +- fr/models/model-attributes.rst | 12 +- fr/plugins.rst | 16 +- 14 files changed, 603 insertions(+), 603 deletions(-) mode change 100644 => 100755 fr/appendices/2-0-migration-guide.rst mode change 100644 => 100755 fr/appendices/2-3-migration-guide.rst mode change 100644 => 100755 fr/appendices/2-4-migration-guide.rst mode change 100644 => 100755 fr/appendices/new-features-in-cakephp-2-0.rst mode change 100644 => 100755 fr/console-and-shells/code-generation-with-bake.rst mode change 100644 => 100755 fr/core-libraries/logging.rst mode change 100644 => 100755 fr/core-utility-libraries/httpsocket.rst mode change 100644 => 100755 fr/development/configuration.rst mode change 100644 => 100755 fr/development/exceptions.rst mode change 100644 => 100755 fr/development/testing.rst mode change 100644 => 100755 fr/getting-started/cakephp-folder-structure.rst mode change 100644 => 100755 fr/installation.rst mode change 100644 => 100755 fr/models/model-attributes.rst mode change 100644 => 100755 fr/plugins.rst diff --git a/fr/appendices/2-0-migration-guide.rst b/fr/appendices/2-0-migration-guide.rst old mode 100644 new mode 100755 index 156b8d8e4..71cfc1507 --- a/fr/appendices/2-0-migration-guide.rst +++ b/fr/appendices/2-0-migration-guide.rst @@ -1,84 +1,84 @@ Guide de Migration 2.0 ###################### -Cette page résume les changements par rapport à CakePHP 1.3 qui aidera pour les -projets de migration vers la version 2.0, ainsi qu'une référence pour se mettre +Cette page résume les changements par rapport à CakePHP 1.3 qui aidera pour les +projets de migration vers la version 2.0, ainsi qu'une référence pour se mettre à jour sur les changements faits dans le coeur depuis la branche CakePHP 1.3. -Assurez vous de lire les autres pages de ce guide pour toutes les nouvelles +Assurez vous de lire les autres pages de ce guide pour toutes les nouvelles fonctionnalités et les changements de l'API. .. tip:: - Faites bien un checkout :ref:`upgrade-shell` inclu dans le coeur de la 2.0 + Faites bien un checkout :ref:`upgrade-shell` inclu dans le coeur de la 2.0 pour vous aider à migrer du code de la 1.3 à la 2.0. Support des Versions de PHP =========================== -CakePHP 2.x supporte la Version de PHP 5.2.8 et supérieur. Le support de PHP4 a -été supprimé. Pour les développeurs qui travaillent avec un environnement de -production PHP4, les versions de CakePHP 1.x continuent le support de PHP4 pour +CakePHP 2.x supporte la Version de PHP 5.2.8 et supérieur. Le support de PHP4 a +été supprimé. Pour les développeurs qui travaillent avec un environnement de +production PHP4, les versions de CakePHP 1.x continuent le support de PHP4 pour la durée de vie de leur développement. -Le passage à PHP5 siginifie que toutes les méthodes et propriétés ont été mises -à jour avec les mots-clés correspondants. Si votre code tente d'accéder à des -méthodes privées ou protégées avec une étendue public, vous rencontrerez des +Le passage à PHP5 siginifie que toutes les méthodes et propriétés ont été mises +à jour avec les mots-clés correspondants. Si votre code tente d'accéder à des +méthodes privées ou protégées avec une étendue public, vous rencontrerez des erreurs. -Bien que cela ne constitue pas un changement énormer du framework, cela -signifie qu'un accès aux méthodes et variables à la visibilité serrée +Bien que cela ne constitue pas un changement énormer du framework, cela +signifie qu'un accès aux méthodes et variables à la visibilité serrée n'est maintenant plus possible. Le nommage des Fichiers et Dossiers =================================== -Dans CakePHP 2.0, nous avons repensé la façon de structurer nos fichiers -et dossiers. Etant donné que PHP 5.3 supporte les espaces de nom (namespaces), -nous avons décidé de préparer notre base de code pour l'adoption dans un futur -proche de cette version de PHP, donc nous avons adopté +Dans CakePHP 2.0, nous avons repensé la façon de structurer nos fichiers +et dossiers. Etant donné que PHP 5.3 supporte les espaces de nom (namespaces), +nous avons décidé de préparer notre base de code pour l'adoption dans un futur +proche de cette version de PHP, donc nous avons adopté https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md. -Tout d'abord, nous avons regardé la structure interne de CakePHP 1.3 et avons -réalisé qu'après toutes ces années, il n'y avait ni organisation claire des -fichiers, ni une structure de dossiers vraiment logique où chaque fichier se -trouve où il devrait. Avec ce changement, nous serions autorisés à -expérimenter un peu le chargement (presque) automatique des classes pour +Tout d'abord, nous avons regardé la structure interne de CakePHP 1.3 et avons +réalisé qu'après toutes ces années, il n'y avait ni organisation claire des +fichiers, ni une structure de dossiers vraiment logique où chaque fichier se +trouve où il devrait. Avec ce changement, nous serions autorisés à +expérimenter un peu le chargement (presque) automatique des classes pour augmenter les performances globales du framework. -Le plus grand obstacle pour réussir cela, était de maintenir une sorte de -compatiblité rétro-active avec la façon dont les classes sont chargées en ce -moment, et nous ne voulions définitivement pas devenir un framework avec des -énormes préfixes de classe, des noms de classe du type -``Mon_Enorme_Classe_Dans_Le_Progiciel``. Nous avons décidé d'adopter une -stratégie de garder des noms de classe simples, tout en offrant une façon très -intuitive de déclaration des emplacements de classe et des chemins de migration -clairs pour la future version PHP 5.3 de CakePHP. Tout d'abord, mettons en -évidence les principaux changements dans la standardisation du nommage des +Le plus grand obstacle pour réussir cela, était de maintenir une sorte de +compatiblité rétro-active avec la façon dont les classes sont chargées en ce +moment, et nous ne voulions définitivement pas devenir un framework avec des +énormes préfixes de classe, des noms de classe du type +``Mon_Enorme_Classe_Dans_Le_Progiciel``. Nous avons décidé d'adopter une +stratégie de garder des noms de classe simples, tout en offrant une façon très +intuitive de déclaration des emplacements de classe et des chemins de migration +clairs pour la future version PHP 5.3 de CakePHP. Tout d'abord, mettons en +évidence les principaux changements dans la standardisation du nommage des fichiers que nous avons adoptée: Noms des Fichiers ----------------- -Tous les fichiers contenant les classes doivent être nommés selon la classe -qu'il contiennent. Aucun fichier ne doit contenir plus d'une classe. Donc, -plus de minuscules ou de soulignements dans les noms de fichier. Voici quelques +Tous les fichiers contenant les classes doivent être nommés selon la classe +qu'il contiennent. Aucun fichier ne doit contenir plus d'une classe. Donc, +plus de minuscules ou de soulignements dans les noms de fichier. Voici quelques exemples: * ``mes_trucs_controller.php`` devient ``MesTrucsController.php`` * ``form.php`` (un Helper) devient ``FormHelper.php`` * ``session.php`` (un Component) devient ``SessionComponent.php`` -Cela rend le nommage des fichiers beaucoup plus clair et cohérent à travers -les applications, et aussi évite quelques cas où le chargement des fichiers -aurait pu été géné dans le passé et aurait pu entrainé un chargement non +Cela rend le nommage des fichiers beaucoup plus clair et cohérent à travers +les applications, et aussi évite quelques cas où le chargement des fichiers +aurait pu été géné dans le passé et aurait pu entrainé un chargement non souhaité de fichiers. Les Noms des Dossiers --------------------- -La plupart des dossiers devront être en CamelCase, spécialement ceux contenant -des classes. En songeant aux espaces de noms, chaque dossier représente un -niveau dans la hiérachie des espaces de noms, les dossiers qui ne contiennent -pas de classes, ou ne constituent pas un espace de noms sur eux-mêmes, +La plupart des dossiers devront être en CamelCase, spécialement ceux contenant +des classes. En songeant aux espaces de noms, chaque dossier représente un +niveau dans la hiérachie des espaces de noms, les dossiers qui ne contiennent +pas de classes, ou ne constituent pas un espace de noms sur eux-mêmes, devraient être en LowerCase. Dossiers en CamelCase: @@ -104,32 +104,32 @@ Dossiers en LowerCase: htaccess (URL Rewriting) ======================== -Dans votre fichier ``app/webroot/.htaccess`` remplacez le -``RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]`` avec +Dans votre fichier ``app/webroot/.htaccess`` remplacez le +``RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]`` avec ``RewriteRule ^(.*)$ index.php?/$1 [QSA,L]`` AppController / AppModel / AppHelper / AppShell =============================================== -Les fichiers ``app/app_controller.php``, ``app/app_model.php``, -``app/app_helper.php`` sont situés et nommés respectivement comme ceci -``app/Controller/AppController.php``, ``app/Model/AppModel.php`` et +Les fichiers ``app/app_controller.php``, ``app/app_model.php``, +``app/app_helper.php`` sont situés et nommés respectivement comme ceci +``app/Controller/AppController.php``, ``app/Model/AppModel.php`` et ``app/View/Helper/AppHelper.php``. -Aussi, les shell/task sont étendus (extend) Appshell. Vous pouvez avoir votre +Aussi, les shell/task sont étendus (extend) Appshell. Vous pouvez avoir votre propre AppShell.php dans ``app/Console/Command/AppShell.php``. Internationalization / Localization =================================== -:php:func:`__()` (La fonction raccourci de Double underscore) retourne toujours +:php:func:`__()` (La fonction raccourci de Double underscore) retourne toujours la traduction (plus de echo). Si vous voulez changer les résultats de la traduction, utilisez:: echo __('Mon Message'); - + Cela remplace toutes les méthodes de traduction raccourcies:: __() @@ -140,8 +140,8 @@ Cela remplace toutes les méthodes de traduction raccourcies:: __dcn() __c() -A côté de cela, si vous passez des paramètres supplémentaires, la traduction -appelera `sprintf `_ avec +A côté de cela, si vous passez des paramètres supplémentaires, la traduction +appelera `sprintf `_ avec ces paramètres retournés précédemment avant de retourner. Par exemple:: // Retournera quelque chose comme "Appelé: MaClasse:maMethode" @@ -149,7 +149,7 @@ ces paramètres retournés précédemment avant de retourner. Par exemple:: Elle est valide pour toutes les méthodes raccourcies de traduction. -Plus d'informations sur les spécificités de la fonction: +Plus d'informations sur les spécificités de la fonction: `sprintf `_. @@ -157,14 +157,14 @@ Emplacement de la Classe et constantes changées =============================================== Les constantes ``APP`` et ``CORE_PATH`` -ont des valeur cohérentes entre le web et les environnement de la console. -Dans les précedentes versions de CakePHP, ces valeurs changeaient selon +ont des valeur cohérentes entre le web et les environnement de la console. +Dans les précedentes versions de CakePHP, ces valeurs changeaient selon l'environnement. Basics.php ========== -- ``getMicrotime()`` a été retirée. Utilisez la fonction native +- ``getMicrotime()`` a été retirée. Utilisez la fonction native ``microtime(true)`` à la place. - ``e()`` a été retirée. Utilisez ``echo``. - ``r()`` a été retirée. Utilisez ``str_replace``. @@ -177,13 +177,13 @@ Basics.php - ``uses()`` a été retirée. Utilisez ``App::import()`` à la place. - La compatibilité des fonctions de PHP4 a été retirée. - La constante PHP5 a été retirée. -- La variable Globale appelée ``$TIME_START`` a été retirée. Utilisez la +- La variable Globale appelée ``$TIME_START`` a été retirée. Utilisez la constante ``TIME_START`` ou ``$_SERVER['REQUEST_TIME']`` à la place. Constantes Retirées ------------------- -Un nombre de constantes ont été retirées, puisqu'elles n'ataient plus exactes +Un nombre de constantes ont été retirées, puisqu'elles n'ataient plus exactes ou bien étaient dupliquées. * APP_PATH @@ -207,29 +207,29 @@ ou bien étaient dupliquées. CakeRequest =========== -Cette nouvelle classe encapsule les paramètres et fonctions liées aux requêtes +Cette nouvelle classe encapsule les paramètres et fonctions liées aux requêtes entrantes. Elle remplace plusieurs fonctionnalités de ``Dispatcher``, -``RequestHandlerComponent`` et Controller. Elle remplace aussi le tableau +``RequestHandlerComponent`` et Controller. Elle remplace aussi le tableau ``$this->params`` à tout endroit. ``CakeRequest`` implémente -``ArrayAccess`` donc la plupart des interactions avec les anciens tableaux -params n'ont pas besoin de changement. Voir les nouvelles fonctionnalités de +``ArrayAccess`` donc la plupart des interactions avec les anciens tableaux +params n'ont pas besoin de changement. Voir les nouvelles fonctionnalités de CakeRequest pour plus d'informations. Gestion des Requêtes, $_GET['url'] et fichiers .htaccess ======================================================== -CakePHP n'utilise plus ``$_GET['url']`` pour la gestion des chemins des -requêtes de l'application. A la place il utilise ``$_SERVER['PATH_INFO']``. -Cela fournit une façon plus uniforme de gestion des requêtes entre les serveurs -avec URL rewriting et ceux sans. Du fait de ces changements, vous aurez besoin -de mettre à jour vos fichiers .htaccess et ``app/webroot/index.php``, puisque -ces fichiers ont été changés pour accueillir les changements. De plus, -``$this->params['url']['url']`` n'existe plus. A la place, vous devrez utiliser +CakePHP n'utilise plus ``$_GET['url']`` pour la gestion des chemins des +requêtes de l'application. A la place il utilise ``$_SERVER['PATH_INFO']``. +Cela fournit une façon plus uniforme de gestion des requêtes entre les serveurs +avec URL rewriting et ceux sans. Du fait de ces changements, vous aurez besoin +de mettre à jour vos fichiers .htaccess et ``app/webroot/index.php``, puisque +ces fichiers ont été changés pour accueillir les changements. De plus, +``$this->params['url']['url']`` n'existe plus. A la place, vous devrez utiliser $this->request->url pour accéder à la même valeur. Cet attribut contient maintenant l'url sans slash ``/`` au début. -Note: Pour la page d'accueil elle-même (``http://domain/``) $this->request->url -retourne maintenant le boléen ``false`` au lieu de ``/``. Assurez-vous de +Note: Pour la page d'accueil elle-même (``http://domain/``) $this->request->url +retourne maintenant le boléen ``false`` au lieu de ``/``. Assurez-vous de vérifier cela de cette façon:: if (!$this->request->url) {} // au lieu de $this->request->url === '/' @@ -237,8 +237,8 @@ vérifier cela de cette façon:: Components (Composants) ======================= -Component est maintenant la classe de base requise pour tous les components -(components). Vous devrez mettre à jour vos components et leurs constructeurs, +Component est maintenant la classe de base requise pour tous les components +(components). Vous devrez mettre à jour vos components et leurs constructeurs, puisque tous deux ont changé:: class PrgComponent extends Component { @@ -247,29 +247,29 @@ puisque tous deux ont changé:: } } -Tout comme les helpers il est important d'appeler ``parent::__construct()`` -dans les components avec les constructeurs surchargés. Les paramètres pour un -component sont aussi maintenant passés à travers le constructeur, et non plus -via le callback ``initialize()``. Cela aide à avoir de bons objets construits, +Tout comme les helpers il est important d'appeler ``parent::__construct()`` +dans les components avec les constructeurs surchargés. Les paramètres pour un +component sont aussi maintenant passés à travers le constructeur, et non plus +via le callback ``initialize()``. Cela aide à avoir de bons objets construits, et autorise la classe de base à gérer les propriétés supérieures. -Depuis que les paramètres ont été déplacés au constructeur du component, le -callback ``initialize()`` ne reçoit plus ``$settings`` en 2ème paramètre. Vous -devrez mettre à jour vos components pour utiliser la signature méthode +Depuis que les paramètres ont été déplacés au constructeur du component, le +callback ``initialize()`` ne reçoit plus ``$settings`` en 2ème paramètre. Vous +devrez mettre à jour vos components pour utiliser la signature méthode suivante:: public function initialize($controller) { } -De plus, la méthode initialize() est seulement appelée sur les components qui -sont permis. Cela signifie en général que les components qui sont directement +De plus, la méthode initialize() est seulement appelée sur les components qui +sont permis. Cela signifie en général que les components qui sont directement attachés à l'objet controller. Callbacks dépréciés supprimés ----------------------------- -Tous les callbacks dépréciés dans Component ont été transférés à -ComponentCollection. A la place, vous devriez utiliser la méthode `trigger()` -pour intéragir avec les callbacks. Si vous avez besoin de déclencher un +Tous les callbacks dépréciés dans Component ont été transférés à +ComponentCollection. A la place, vous devriez utiliser la méthode `trigger()` +pour intéragir avec les callbacks. Si vous avez besoin de déclencher un callback, vous pouvez le faire en appelant:: $this->Components->trigger('someCallback', array(&$this)); @@ -277,29 +277,29 @@ callback, vous pouvez le faire en appelant:: Changement dans la désactivation des components ----------------------------------------------- -Dans le passé, vous étiez capable de désactiver les components via -`$this->Auth->enabled = false;` par exemple. Dans CakePHP 2.0 vous devriez -utiliser la méthode de désactivation des ComponentCollection's, -`$this->Components->disable('Auth');`. Utiliser les propriétés actives ne va +Dans le passé, vous étiez capable de désactiver les components via +`$this->Auth->enabled = false;` par exemple. Dans CakePHP 2.0 vous devriez +utiliser la méthode de désactivation des ComponentCollection's, +`$this->Components->disable('Auth');`. Utiliser les propriétés actives ne va pas fonctionner. AclComponent ------------ -- Les implémentations ``AclComponent`` sont maintenant requises pour +- Les implémentations ``AclComponent`` sont maintenant requises pour implémenter ``AclInterface``. -- ``AclComponent::adapter()`` a été ajouté pour permettre l'éxecution de la +- ``AclComponent::adapter()`` a été ajouté pour permettre l'éxecution de la modification de l'utilisation de l'implémentation du component ``ACL``. -- ``AclComponent::grant()`` a été déprécié, il sera supprimé dans une version +- ``AclComponent::grant()`` a été déprécié, il sera supprimé dans une version future. Utilisez ``AclComponent::allow()`` à la place. -- ``AclComponent::revoke()`` a été déprécié, il sera supprimé dans une version +- ``AclComponent::revoke()`` a été déprécié, il sera supprimé dans une version future. Utilisez AclComponent::deny() à la place. RequestHandlerComponent ----------------------- -Beaucoup de méthodes de RequestHandlerComponent sont justes des proxies pour -les méthodes de ``CakeRequest``. Le méthodes suivantes ont été dépréciées et +Beaucoup de méthodes de RequestHandlerComponent sont justes des proxies pour +les méthodes de ``CakeRequest``. Le méthodes suivantes ont été dépréciées et seront retirées dans les versions futures: - ``isSsl()`` @@ -310,18 +310,18 @@ seront retirées dans les versions futures: - ``isDelete()`` - ``getReferer()`` - ``getClientIp()`` -- ``accepts()``, ``prefers()``, ``requestedWith()`` Tous sont maintenant gérés - dans les types de contenu. Ils ne fonctionnent plus avec les mime-types. - Vous pouvez utiliser ``RequestHandler::setContent()`` pour créer des +- ``accepts()``, ``prefers()``, ``requestedWith()`` Tous sont maintenant gérés + dans les types de contenu. Ils ne fonctionnent plus avec les mime-types. + Vous pouvez utiliser ``RequestHandler::setContent()`` pour créer des nouveaux types de contenu. -- ``RequestHandler::setContent()`` n'accepte plus de tableau en tant +- ``RequestHandler::setContent()`` n'accepte plus de tableau en tant qu'argument unique, vous devez fournir les deux arguments. SecurityComponent ----------------- -SecurityComponent ne gère plus l'Authentification Basic et Sommaire (Digest). -Elles sont toutes deux gérées par le nouveau AuthComponent. Les méthodes +SecurityComponent ne gère plus l'Authentification Basic et Sommaire (Digest). +Elles sont toutes deux gérées par le nouveau AuthComponent. Les méthodes suivantes ont été retirées de SecurityComponent: - requireLogin() @@ -335,23 +335,23 @@ De plus les propriétés suivantes ont été retirées: - $loginUsers - $requireLogin -Le déplacement des fonctionalités verss Authcomponent a été faite pour fournir -un endroit unique pour tous les types d'authentification et pour rationaliser +Le déplacement des fonctionalités verss Authcomponent a été faite pour fournir +un endroit unique pour tous les types d'authentification et pour rationaliser les rôles de chaque component. AuthComponent ------------- -AuthComponent a été entièrement refait dans 2.0, ça a été fait pour réduire -les confusions et frustrations des développeurs. De plus, AuthComponent a -été construit plus flexible et extensible. Vous pouvez trouver plus +AuthComponent a été entièrement refait dans 2.0, ça a été fait pour réduire +les confusions et frustrations des développeurs. De plus, AuthComponent a +été construit plus flexible et extensible. Vous pouvez trouver plus d'informations dans le guide :doc:`/core-libraries/components/authentication`. EmailComponent -------------- -EmailComponent a été déprecié et a été crée une nouvelle classe de librairie -pour envoyer les emails. Voir les changements pour Email +EmailComponent a été déprecié et a été crée une nouvelle classe de librairie +pour envoyer les emails. Voir les changements pour Email :doc:`/core-utility-libraries/email` pour plus de détails. SessionComponent @@ -366,17 +366,17 @@ SessionComponent a perdu les méthodes suivantes. Retrait de cakeError ==================== -La méthode ``cakeError()`` a été retirée. Il est recommandé que vous changiez -toutes les utilisations de ``cakeError`` pour utiliser les exceptions. -``cakeError`` a été retirée car elle simulait les exceptions. Plutôt que la +La méthode ``cakeError()`` a été retirée. Il est recommandé que vous changiez +toutes les utilisations de ``cakeError`` pour utiliser les exceptions. +``cakeError`` a été retirée car elle simulait les exceptions. Plutôt que la simulation, de réelles exceptions sont utilisées dans CakePHP 2.0. Gestion des Erreurs =================== -L'implémentation de la gestion des erreurs a changé de façon spectaculaire dans -2.0. Les exceptions ont été introduites partout dans le framework, et la -gestion des erreurs a été mise à jour pour offrir plus de contrôle et de +L'implémentation de la gestion des erreurs a changé de façon spectaculaire dans +2.0. Les exceptions ont été introduites partout dans le framework, et la +gestion des erreurs a été mise à jour pour offrir plus de contrôle et de flexibilité. Vous pouvez en lire plus dans les sections :doc:`/development/exceptions` et :doc:`/development/errors`. @@ -386,21 +386,21 @@ Classes Lib App --- -L'API pour ``App::build()`` a changé pour ``App::build($paths, $mode)``. Elle -vous autorise maintenant à soit ajouter, soit faire précéder ou bien -réinitialiser / remplacer les chemins existants. Le paramètre $mode peut -prendre n'importe lesquelles des 3 valeurs suivantes: App::APPEND, -App::PREPEND, ``App::RESET``. Le behavior par défaut de la fonction reste le +L'API pour ``App::build()`` a changé pour ``App::build($paths, $mode)``. Elle +vous autorise maintenant à soit ajouter, soit faire précéder ou bien +réinitialiser / remplacer les chemins existants. Le paramètre $mode peut +prendre n'importe lesquelles des 3 valeurs suivantes: App::APPEND, +App::PREPEND, ``App::RESET``. Le behavior par défaut de la fonction reste le même (ex. Faire précéder des nouveaux chemins par une liste existante). App::path() ~~~~~~~~~~~ -* Supporte maintenant les plugins, App::path('Controller', 'Users') va - retourner la localisation du dossier des controllers dans le plugin des +* Supporte maintenant les plugins, App::path('Controller', 'Users') va + retourner la localisation du dossier des controllers dans le plugin des users. -* Ne fusionnera plus les chemins du coeur, il retournera seulement les chemins - définies dans App::build() et ceux par défaut dans app (ou correspondant au +* Ne fusionnera plus les chemins du coeur, il retournera seulement les chemins + définies dans App::build() et ceux par défaut dans app (ou correspondant au plugin). App::build() @@ -411,14 +411,14 @@ App::build() App::objects() ~~~~~~~~~~~~~~ -* Supporte maintenant les plugins, App::objects('Users.Model') va +* Supporte maintenant les plugins, App::objects('Users.Model') va retourner les models dans le plugin Users. -* Retourne array() au lieu de false pour les résultats vides ou les types +* Retourne array() au lieu de false pour les résultats vides ou les types invalides. * Ne retourne plus les objets du coeur, App::objects('core') retournera array(). * Retourne le nom complet de la classe. -La classe App perd les propriétés suivantes, utilisez la méthode App::path() +La classe App perd les propriétés suivantes, utilisez la méthode App::path() pour accéder à leur valeur * App::$models @@ -437,19 +437,19 @@ pour accéder à leur valeur App::import() ~~~~~~~~~~~~~ -* Ne recherche plus les classes de façon récursive, il utilise strictement les +* Ne recherche plus les classes de façon récursive, il utilise strictement les valeurs pour les chemins définis dans App::build(). -* Ne sera plus capable de charger App::import('Component', 'Component'), +* Ne sera plus capable de charger App::import('Component', 'Component'), utilisez App::uses('Component', 'Controller'); -* Utiliser App::import('Lib', 'CoreClass') pour charger les classes du coeur +* Utiliser App::import('Lib', 'CoreClass') pour charger les classes du coeur n'est plus possible. -* Importer un fichier non-existant, fournir un mauvais type ou un mauvais nom - de package, ou des valeurs nulles pour les paramètres $name et $file va +* Importer un fichier non-existant, fournir un mauvais type ou un mauvais nom + de package, ou des valeurs nulles pour les paramètres $name et $file va donner une fausse valeur de retour. * App::import('Core', 'CoreClass') n'est plus supporté, utilisez App::uses() à la place et laisser la classe autoloading faire le reste. -* Charger des fichiers Vendor ne recherchera pas de façon récursive dans les - dossiers Vendors, cela ne convertira plus le fichier en underscore comme cela +* Charger des fichiers Vendor ne recherchera pas de façon récursive dans les + dossiers Vendors, cela ne convertira plus le fichier en underscore comme cela se faisant dans le passé. App::core() @@ -462,23 +462,23 @@ App::core() Chargement des Classes avec App::uses() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Bien qu'il y ait eu une re-construction énorme dans la façon de charger les -classes, pour quelques occasions, vous aurez besoin de changer le code de votre -application pour respecter la façon que vous aviez l'habitude de faire. Le plus +Bien qu'il y ait eu une re-construction énorme dans la façon de charger les +classes, pour quelques occasions, vous aurez besoin de changer le code de votre +application pour respecter la façon que vous aviez l'habitude de faire. Le plus grand changement est l'introduction d'une nouvelle méthode:: App::uses('AuthComponent', 'Controller/Component'); -Nous avons décidé que le nom de la fonction devait imiter le mot-clé ``use`` -de PHP 5.3, juste pour la façon de déclarer où un nom de classe devait se -trouver. Le premier paramètre de :php:meth:`App::uses()` est le nom complet de -la classe que vous avez l'intention de charger, et le second paramètre, le nom -du package (ou espace de noms) auquel il appartient. La principale différence -avec le :php:meth:`App::import()` de CakePHP 1.3 est que l'actuelle n'importera -pas la classe, elle configurera juste le système pour qu'à la première +Nous avons décidé que le nom de la fonction devait imiter le mot-clé ``use`` +de PHP 5.3, juste pour la façon de déclarer où un nom de classe devait se +trouver. Le premier paramètre de :php:meth:`App::uses()` est le nom complet de +la classe que vous avez l'intention de charger, et le second paramètre, le nom +du package (ou espace de noms) auquel il appartient. La principale différence +avec le :php:meth:`App::import()` de CakePHP 1.3 est que l'actuelle n'importera +pas la classe, elle configurera juste le système pour qu'à la première utilisation de la classe, elle soit localisée. -Quelques exemples de l'utilisation de :php:meth:`App::uses()` quand on migre de +Quelques exemples de l'utilisation de :php:meth:`App::uses()` quand on migre de :php:meth:`App::import()`:: App::import('Controller', 'Pages'); @@ -501,9 +501,9 @@ Quelques exemples de l'utilisation de :php:meth:`App::uses()` quand on migre de // devient App::uses('MongoDbSource', 'MongoDb.Model/Datasource') -Toutes les classes qui ont été chargées dans le passé utilisant -``App::import('Core', $class);`` auront besoin d'être chargées en utlisant -``App::uses()`` en référence au bon package. Voir l'API pour localiser les +Toutes les classes qui ont été chargées dans le passé utilisant +``App::import('Core', $class);`` auront besoin d'être chargées en utlisant +``App::uses()`` en référence au bon package. Voir l'API pour localiser les classes dans leurs nouveaux dossiers. Quelques exemples:: App::import('Core', 'CakeRoute'); @@ -518,50 +518,50 @@ classes dans leurs nouveaux dossiers. Quelques exemples:: // devient App::uses('HttpSocket', 'Network/Http'); -Au contraire de la façon dont fonctionnait :php:meth:`App::import()`, la -nouvelle classe de chargement ne va pas localiser les classes de façon -récursive. Cela entraîne un gain de performance impressionnant même en mode -développement, au prix de certaines fonctionnalités rarement utilisées qui ont -toujours provoquées des effets secondaires. Pour être encore plus clair, la -classe de chargement va seulement attraper la classe dans le package exact dans +Au contraire de la façon dont fonctionnait :php:meth:`App::import()`, la +nouvelle classe de chargement ne va pas localiser les classes de façon +récursive. Cela entraîne un gain de performance impressionnant même en mode +développement, au prix de certaines fonctionnalités rarement utilisées qui ont +toujours provoquées des effets secondaires. Pour être encore plus clair, la +classe de chargement va seulement attraper la classe dans le package exact dans lequel vous lui avez dit de la trouver. App::build() et les chemins du coeur ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -:php:meth:`App::build()` ne va plus fusionner les chemins de app avec les +:php:meth:`App::build()` ne va plus fusionner les chemins de app avec les chemins du coeur. Exemples:: - App::build(array('controllers' => array('/chemin/complet/vers/controllers'))) + App::build(array('controllers' => array('/chemin/complet/vers/controllers'))) //devient App::build(array('Controller' => array('/chemin/complet/vers/controllers'))) - App::build(array('helpers' => array('/chemin/complet/vers/controllers'))) + App::build(array('helpers' => array('/chemin/complet/vers/controllers'))) //devient App::build(array('View/Helper' => array('/chemin/complet/vers/Vues/Helpers'))) CakeLog ------- -- La connexion aux flux a maintenant besoin de mettre en œuvre: - php: class: `CakeLogInterface`. Des exceptions seront soulevées si un - enregistreur n'est pas configuré. +- La connexion aux flux a maintenant besoin de mettre en œuvre: + php: class: `CakeLogInterface`. Des exceptions seront soulevées si un + enregistreur n'est pas configuré. Cache ----- -- :php:class:`Cache` est maintenant une classe statique, elle n'a plus de +- :php:class:`Cache` est maintenant une classe statique, elle n'a plus de méthode getInstance(). -- CacheEngine est maintenant une classe abstraite. Vous ne pouvez plus +- CacheEngine est maintenant une classe abstraite. Vous ne pouvez plus directement créer d'instances de celle-ci. -- Les implémentations de CacheEngine doivent étendre CacheEngine, des +- Les implémentations de CacheEngine doivent étendre CacheEngine, des exceptions seront soulevées si une classe de configuration ne l'est pas. -- FileCache nécessite maintenant l'ajout de barres obliques au chemin de +- FileCache nécessite maintenant l'ajout de barres obliques au chemin de configuration lorsque vous modifiez une configuration du cache. -- Cache ne retient plus le nom du dernier moteur de cache configuré. Cela - signifie que les opérations que vous souhaitez produire sur un moteur +- Cache ne retient plus le nom du dernier moteur de cache configuré. Cela + signifie que les opérations que vous souhaitez produire sur un moteur spécifique doivent avoir le paramètre $config égale au nom de config que vous souhaitez. @@ -569,59 +569,59 @@ Cache Cache::config('quelquechose'); Cache::write('key', $valeur); - + // deviendrait Cache::write('key', $valeur, 'quelquechose'); Router ------ -- Vous ne pouvez plus modifier les paramètres de configuration avec - ``Router::setRequestInfo()``. Vous devriez utiliser - ``Router::connectNamed()`` pour configurer la façon dont les paramètres +- Vous ne pouvez plus modifier les paramètres de configuration avec + ``Router::setRequestInfo()``. Vous devriez utiliser + ``Router::connectNamed()`` pour configurer la façon dont les paramètres nommés sont gérés. -- Le Router n'a plus de méthode ``getInstance()``. C'est une classe statique, +- Le Router n'a plus de méthode ``getInstance()``. C'est une classe statique, appelle ses méthodes et propriétés de façon statique. -- ``Router::getNamedExpressions()`` est deprécié. Utilisez les nouvelles - constantes du routeur. ``Router::ACTION``, ``Router::YEAR``, - ``Router::MONTH``, ``Router::DAY``, ``Router::ID``, et ``Router::UUID`` à la +- ``Router::getNamedExpressions()`` est deprécié. Utilisez les nouvelles + constantes du routeur. ``Router::ACTION``, ``Router::YEAR``, + ``Router::MONTH``, ``Router::DAY``, ``Router::ID``, et ``Router::UUID`` à la place. -- ``Router::defaults()`` a été retiré. Supprimer l'inclusion de fichier des - routes du coeur de votre fichier routes.php de vos applications pour - désactiver le routing par défaut. Inversement, si vous voulez le routing par - défaut, vous devrez ajouter une inclusion dans votre fichier de routes +- ``Router::defaults()`` a été retiré. Supprimer l'inclusion de fichier des + routes du coeur de votre fichier routes.php de vos applications pour + désactiver le routing par défaut. Inversement, si vous voulez le routing par + défaut, vous devrez ajouter une inclusion dans votre fichier de routes ``Cake/Config/routes.php``. -- Quand vous utilisez Router::parseExtensions() le paramètre d'extension n'est - plus sous ``$this->params['url']['ext']``. A la place, il est disponible avec +- Quand vous utilisez Router::parseExtensions() le paramètre d'extension n'est + plus sous ``$this->params['url']['ext']``. A la place, il est disponible avec ``$this->request->params['ext']``. -- Les routes des plugins par défaut ont changé. Les routes courtes de Plugin - ne sont plus construites que dans les actions index. Précédemment `/users`` - et ``/users/add`` mappaient le UsersController dans le plugin - Users. Dans 2.0, seule l'action ``index`` est donné par une route - courte. Si vous souhaitez continuer à utiliser les routes courtes, vous +- Les routes des plugins par défaut ont changé. Les routes courtes de Plugin + ne sont plus construites que dans les actions index. Précédemment `/users`` + et ``/users/add`` mappaient le UsersController dans le plugin + Users. Dans 2.0, seule l'action ``index`` est donné par une route + courte. Si vous souhaitez continuer à utiliser les routes courtes, vous pouvez ajouter une route comme:: Router::connect('/users/:action', array('controller' => 'users', 'plugin' => 'users')); - - Pour votre fichier de routes pour chaque plugin, vous avez besoin de routes + + Pour votre fichier de routes pour chaque plugin, vous avez besoin de routes courtes actives. -Votre fichier app/Config/routes.php doit être mis à jour en ajoutant cette +Votre fichier app/Config/routes.php doit être mis à jour en ajoutant cette ligne en bas du fichier:: require CAKE . 'Config' . DS . 'routes.php'; -Cela est nécessaire afin de générer les routes par défaut pour votre -application. Si vous ne souhaitez pas avoir de telles routes, ou si vous voulez -implémenter votre propre standard, vous pouvez inclure votre propre fichier +Cela est nécessaire afin de générer les routes par défaut pour votre +application. Si vous ne souhaitez pas avoir de telles routes, ou si vous voulez +implémenter votre propre standard, vous pouvez inclure votre propre fichier avec vos propres règles de routeur. Dispatcher ---------- -- Le Dispatcher a été déplacé dans cake/libs, vous devrez mettre à jour votre +- Le Dispatcher a été déplacé dans cake/libs, vous devrez mettre à jour votre fichier ``app/webroot/index.php``. -- Le ``Dispatcher::dispatch()`` prend maintenant deux paramètres. Les objets +- Le ``Dispatcher::dispatch()`` prend maintenant deux paramètres. Les objets request et response. Ceux-ci devraient être des instances de ``CakeRequest`` & ``CakeResponse`` ou une sous-classe de ceux-ci. - ``Dispatcher::parseParams()`` n'accepte que l'objet ``CakeRequest``. @@ -633,19 +633,19 @@ Dispatcher Configure --------- -- ``Configure::read()`` avec aucun paramètre ne retourne plus la valeur de - 'debug', à la place elle retourne toutes les valeurs dans Configure. +- ``Configure::read()`` avec aucun paramètre ne retourne plus la valeur de + 'debug', à la place elle retourne toutes les valeurs dans Configure. Utilisez ``Configure::read('debug');`` si vous voulez la valeur de debug. -- ``Configure::load()`` requiert maintenant un ConfigReader pour être +- ``Configure::load()`` requiert maintenant un ConfigReader pour être configuré. Lisez :ref:`loading-configuration-files` pour plus d'informations. -- ``Configure::store()`` écrit maintenant les valeurs à une configuration du - Cache donnée. Lisez :ref:`loading-configuration-files` pour plus +- ``Configure::store()`` écrit maintenant les valeurs à une configuration du + Cache donnée. Lisez :ref:`loading-configuration-files` pour plus d'informations. Scaffold -------- -- Les vues Scaffold 'edit' devront être renommées par 'form'. Cela a été fait +- Les vues Scaffold 'edit' devront être renommées par 'form'. Cela a été fait pour rendre les templates scaffold et bake cohérents. - ``views/scaffolds/edit.ctp`` -> ``View/Scaffolds/form.ctp`` @@ -654,20 +654,20 @@ Scaffold Xml --- -- La classe Xml a été complètement reconstruite. Maintenant cette classe ne - manipule plus de données, et elle est un enrouleur (wrapper) pour les +- La classe Xml a été complètement reconstruite. Maintenant cette classe ne + manipule plus de données, et elle est un enrouleur (wrapper) pour les SimpleXMLElement. Vous pouvez utiliser les méthodes suivantes: - - ``Xml::build()``: Méthode statique dans laquelle vous pouvez passer une - chaîne de caractère xml, un tableau, un chemin vers un fichier ou une - url. Le résultat va être une instance SimpleXMLElement ou une exception + - ``Xml::build()``: Méthode statique dans laquelle vous pouvez passer une + chaîne de caractère xml, un tableau, un chemin vers un fichier ou une + url. Le résultat va être une instance SimpleXMLElement ou une exception va être envoyée en cas d'erreurs. - - ``Xml::fromArray():`` Méthode statique qui retourne un SimpleXMLElement + - ``Xml::fromArray():`` Méthode statique qui retourne un SimpleXMLElement à partir d'un tableau. - - ``Xml::toArray()``: Méthode statique qui retourne un tableau à partir de + - ``Xml::toArray()``: Méthode statique qui retourne un tableau à partir de SimpleXMLElement. -Vous devez utiliser la documentation :php:class:`Xml` pour plus d'informations +Vous devez utiliser la documentation :php:class:`Xml` pour plus d'informations sur les changements faits sur la classe Xml. Inflector @@ -680,9 +680,9 @@ Inflector CakeSession ----------- -CakeSession est maintenant une classe complètement statique, les deux -``SessionHelper`` et ``SessionComponent`` sont des wrappers et du sucre pour -celui-ci. Il peut facilement être utilisé dans les models ou dans d'autres +CakeSession est maintenant une classe complètement statique, les deux +``SessionHelper`` et ``SessionComponent`` sont des wrappers et du sucre pour +celui-ci. Il peut facilement être utilisé dans les models ou dans d'autres contextes. Toutes ses méthodes sont appelées de façon statique. La configuration de Session a aussi changé @@ -691,16 +691,16 @@ La configuration de Session a aussi changé HttpSocket ---------- -- HttpSocket ne change pas les clés d'en-tête. Suivant les autres endroits dans - le coeur, le HttpSocket ne change pas les headers. :rfc:`2616` dit que les - en-têtes sont insensibles à la casse, et HttpSocket préserve les valeurs +- HttpSocket ne change pas les clés d'en-tête. Suivant les autres endroits dans + le coeur, le HttpSocket ne change pas les headers. :rfc:`2616` dit que les + en-têtes sont insensibles à la casse, et HttpSocket préserve les valeurs envois de l'hôte distant. -- HttpSocket retourne maintenant les réponses en objets. Au lieu des tableaux, - HttpSocket retourne les instances de HttpResponse. Voir la documentation de +- HttpSocket retourne maintenant les réponses en objets. Au lieu des tableaux, + HttpSocket retourne les instances de HttpResponse. Voir la documentation de :php:class:`HttpSocket` pour plus d'informations. -- Les cookies sont stockés en interne par l'hôte, pas par instance. Cela - signifie que, si vous faîtes deux requêtes à différents serveurs, les cookies - du domaine1 ne seront pas envoyés au domaine2. Cela a été fait pour éviter +- Les cookies sont stockés en interne par l'hôte, pas par instance. Cela + signifie que, si vous faîtes deux requêtes à différents serveurs, les cookies + du domaine1 ne seront pas envoyés au domaine2. Cela a été fait pour éviter d'éventuels problèmes de sécurité. @@ -710,95 +710,95 @@ Helpers Changement du constructeur -------------------------- -Afin de prendre en considération le fait que View a été retiré de la -ClassRegistry, la signature du Helper::__construct() a été changée. Vous devez +Afin de prendre en considération le fait que View a été retiré de la +ClassRegistry, la signature du Helper::__construct() a été changée. Vous devez mettre à jour toutes les sous-classes pour utiliser ce qui suit:: public function __construct(View $View, $settings = array()) -Quand vous écrasez le constructeur, vous devez toujours aussi appeler -`parent::__construct`. `Helper::__construct` stocke l'instance de vue dans -`$this->_View` pour une référence future. Les configurations ne sont pas gérées +Quand vous écrasez le constructeur, vous devez toujours aussi appeler +`parent::__construct`. `Helper::__construct` stocke l'instance de vue dans +`$this->_View` pour une référence future. Les configurations ne sont pas gérées par le constructeur parent. HelperCollection ajouté ----------------------- -Après un examen des responsabilités de chaque classe impliquée dans la couche -Vue, il nous est clairement apparu que la Vue gérait bien plus qu'une unique -tâche. La responsabilité de créer les helpers n'est pas centrale dans ce que la -Vue fait, et a été déplacée dans le HelperCollection. HelperCollection est -responsable du chargement et de la construction des helpers, ainsi que de -déclencher les callbacks sur les helpers. Par défaut, la Vue crée un -HelperCollection dans son constructeur, et l'utilise pour des opérations -ultérieures. L'HelperCollection pour une vue peut être trouvé dans +Après un examen des responsabilités de chaque classe impliquée dans la couche +Vue, il nous est clairement apparu que la Vue gérait bien plus qu'une unique +tâche. La responsabilité de créer les helpers n'est pas centrale dans ce que la +Vue fait, et a été déplacée dans le HelperCollection. HelperCollection est +responsable du chargement et de la construction des helpers, ainsi que de +déclencher les callbacks sur les helpers. Par défaut, la Vue crée un +HelperCollection dans son constructeur, et l'utilise pour des opérations +ultérieures. L'HelperCollection pour une vue peut être trouvé dans `$this->Helpers`. -Les motivations pour la reconstruction de cette fonctionnalité vient de +Les motivations pour la reconstruction de cette fonctionnalité vient de quelques soucis. -* La Vue qui était enregistrée dans ClassRegistry pouvait causer des problèmes - empoisonnés d'enregistrement quand requestAction ou l'EmailComponent étaient +* La Vue qui était enregistrée dans ClassRegistry pouvait causer des problèmes + empoisonnés d'enregistrement quand requestAction ou l'EmailComponent étaient utilisés. * La Vue accessible comme un symbole global entraînait des abus. -* Les Helpers n'étaient pas contenus eux-mêmes. Après avoir construit un - helper, vous deviez construire manuellement plusieurs autres objets afin +* Les Helpers n'étaient pas contenus eux-mêmes. Après avoir construit un + helper, vous deviez construire manuellement plusieurs autres objets afin d'obtenir un objet fonctionnant. -Vous pouvez en lire plus sur HelperCollection dans la documentation +Vous pouvez en lire plus sur HelperCollection dans la documentation :doc:`/core-libraries/collections`. Propriétés dépréciées --------------------- -Les propriétés suivantes sur les helpers sont depréciées, vous devez utiliser -les propriétés de l'objet request ou les méthodes de l'Helper plutôt que -accéder directement à ces propriétés puisqu'elles seront supprimées dans une +Les propriétés suivantes sur les helpers sont depréciées, vous devez utiliser +les propriétés de l'objet request ou les méthodes de l'Helper plutôt que +accéder directement à ces propriétés puisqu'elles seront supprimées dans une version future. -- ``Helper::$webroot`` est depréciée, utilisez la propriété webroot de l'objet +- ``Helper::$webroot`` est depréciée, utilisez la propriété webroot de l'objet request. -- ``Helper::$base`` est depréciée, utilisez la propriété base de l'objet +- ``Helper::$base`` est depréciée, utilisez la propriété base de l'objet request. -- ``Helper::$here`` est depréciée, utilisez la propriété here de l'objet +- ``Helper::$here`` est depréciée, utilisez la propriété here de l'objet request. -- ``Helper::$data`` est depréciée, utilisez la propriété data de l'objet +- ``Helper::$data`` est depréciée, utilisez la propriété data de l'objet request. - ``Helper::$params`` est depréciée, utilisez ``$this->request`` à la place. XmlHelper, AjaxHelper et JavascriptHelper retirés ------------------------------------------------- -Les Helpers AjaxHelper et JavascriptHelper ont été retirés puisqu'ils étaient -dépréciés dans la version 1.3. Le Helper XmlHelper a été retiré, puisqu'il -était obsolète et superflu avec les améliorations de :php:class:`Xml`. La -classe ``Xml`` doit être utilisée pour remplacer les utilisations anciennes de +Les Helpers AjaxHelper et JavascriptHelper ont été retirés puisqu'ils étaient +dépréciés dans la version 1.3. Le Helper XmlHelper a été retiré, puisqu'il +était obsolète et superflu avec les améliorations de :php:class:`Xml`. La +classe ``Xml`` doit être utilisée pour remplacer les utilisations anciennes de XmlHelper. -Les Helpers AjaxHelper et JavascriptHelper sont remplacés par les Helpers +Les Helpers AjaxHelper et JavascriptHelper sont remplacés par les Helpers JsHelper et HtmlHelper. JsHelper -------- -- ``JsBaseEngineHelper`` est maintenant abstrait, vous devrez implémenter +- ``JsBaseEngineHelper`` est maintenant abstrait, vous devrez implémenter toutes les méthodes qui généraient avant des erreurs. PaginatorHelper --------------- -- ``PaginatorHelper::sort()`` prend maintenant les arguments title et key dans - l'ordre inversé. $key sera maintenant toujours le premier. Cela a été fait - pour prévenir les besoins d'échange des arguments lors de l'ajout d'un +- ``PaginatorHelper::sort()`` prend maintenant les arguments title et key dans + l'ordre inversé. $key sera maintenant toujours le premier. Cela a été fait + pour prévenir les besoins d'échange des arguments lors de l'ajout d'un second argument. -- PaginatorHelper avait un nombre de changements pour les paramètres de +- PaginatorHelper avait un nombre de changements pour les paramètres de pagination utilisé en interne. Le key par défaut a été retiré. -- PaginatorHelper supporte maintenant la génération des liens avec les +- PaginatorHelper supporte maintenant la génération des liens avec les paramètres de pagination dans querystring. -Il y a eu quelques améliorations dans pagination en général. Pour plus -d'informations sur cela, vous devriez lire la page des nouvelles +Il y a eu quelques améliorations dans pagination en général. Pour plus +d'informations sur cela, vous devriez lire la page des nouvelles fonctionnalités de pagination. FormHelper @@ -807,11 +807,11 @@ FormHelper Le paramètre $selected retiré ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Le paramètre ``$selected`` a été retiré de plusieurs méthodes dans -``FormHelper``. Toutes les méthodes supportent maintenant une clé -``$attributes['value']`` qui doit être utilisée à la place de ``$selected``. -Ce changement simplifie les méthodes ``FormHelper``, réduit le nombre -d'arguments, et réduit les répétitions que ``$selected`` créait. Les méthodes +Le paramètre ``$selected`` a été retiré de plusieurs méthodes dans +``FormHelper``. Toutes les méthodes supportent maintenant une clé +``$attributes['value']`` qui doit être utilisée à la place de ``$selected``. +Ce changement simplifie les méthodes ``FormHelper``, réduit le nombre +d'arguments, et réduit les répétitions que ``$selected`` créait. Les méthodes effectives sont: - FormHelper::select() @@ -826,31 +826,31 @@ effectives sont: Les URLs par défaut dans les formulaires sont l'action courante ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -L'url par défaut pour tous les formulaires est maintenant l'url courante, -incluant les paramètres passés, nommés et querystring. Vous pouvez écraser ce -réglage par défaut en fournissant ``$options['url']`` dans le second paramètre +L'url par défaut pour tous les formulaires est maintenant l'url courante, +incluant les paramètres passés, nommés et querystring. Vous pouvez écraser ce +réglage par défaut en fournissant ``$options['url']`` dans le second paramètre de ``$this->Form->create()``. FormHelper::hidden() ~~~~~~~~~~~~~~~~~~~~ -Les champs cachés n'enlèvent plus la classe attribut. Cela signifie que si il -y a des erreurs de validation sur des champs cachés, le nom de classe +Les champs cachés n'enlèvent plus la classe attribut. Cela signifie que si il +y a des erreurs de validation sur des champs cachés, le nom de classe ``error-field`` sera appliqué. CacheHelper ----------- -Le CacheHelper a été complètement découplé de la Vue, et des utilisations des -callbacks du Helper pour générer des caches. Vous devez retenir de placer -CacheHelper après les autres helpers qui modifient le contenu dans les -callbacks ``afterRender`` et ``afterLayout``. Si vous ne le faîtes pas, +Le CacheHelper a été complètement découplé de la Vue, et des utilisations des +callbacks du Helper pour générer des caches. Vous devez retenir de placer +CacheHelper après les autres helpers qui modifient le contenu dans les +callbacks ``afterRender`` et ``afterLayout``. Si vous ne le faîtes pas, certains changements ne feront pas parti du contenu récupéré. -CacheHelper n'utilise également plus ```` pour indiquer les -régions non mises en cache. A la place, il utilise les commentaires spéciaux -HTML/XML. ```` et ````. Cela aide CacheHelper à -générer des balises valides et continue à effectuer les mêmes fonctions +CacheHelper n'utilise également plus ```` pour indiquer les +régions non mises en cache. A la place, il utilise les commentaires spéciaux +HTML/XML. ```` et ````. Cela aide CacheHelper à +générer des balises valides et continue à effectuer les mêmes fonctions qu'avant. Vous pouvez en lire plus sur CacheHelper et les changements de Vue. Les formats des attributs d'Helper plus flexibles @@ -862,19 +862,19 @@ La classe Helper a 3 attributs protégés: ``array('checked', 'selected', ...)``); * ``Helper::_attributeFormat``: comment les attributs vont être générés (ex: ``%s="%s"``); -* ``Helper::_minimizedAttributeFormat``: comment les attributs minimums vont +* ``Helper::_minimizedAttributeFormat``: comment les attributs minimums vont être générés: (ie ``%s="%s"``) -Par défaut, les valeurs utilisées dans CakePHP 1.3 n'ont pas été changées. Mais -vous pouvez maintenant utiliser les attributs boléens de HTML, comme -````. Pour cela, changez juste +Par défaut, les valeurs utilisées dans CakePHP 1.3 n'ont pas été changées. Mais +vous pouvez maintenant utiliser les attributs boléens de HTML, comme +````. Pour cela, changez juste ``$_minimizedAttributeFormat`` dans votre AppHelper en ``%s``. Pour utiliser avec les helpers Html/Form et les autres, vous pouvez écrire:: $this->Form->checkbox('field', array('checked' => true, 'value' => 'une_valeur')); -Une autre aptitude est que les attributs minimums peuvent être passés en item +Une autre aptitude est que les attributs minimums peuvent être passés en item et pas en clé. Par exemple:: $this->Form->checkbox('field', array('checked', 'value' => 'une_valeur')); @@ -884,47 +884,47 @@ Notez que ``checked`` a une clé numérique. Controller (Contrôleur) ======================= -- Le constructeur du Controller prend maintenant deux paramètres. Les objets - CakeRequest et CakeResponse. Ces objets sont utilisés pour remplir plusieurs - propriétés dépreciées et seront mis dans $request et $response à l'intérieur +- Le constructeur du Controller prend maintenant deux paramètres. Les objets + CakeRequest et CakeResponse. Ces objets sont utilisés pour remplir plusieurs + propriétés dépreciées et seront mis dans $request et $response à l'intérieur du controller. -- ``Controller::$webroot`` est depréciée, utilisez la propriété webroot de +- ``Controller::$webroot`` est depréciée, utilisez la propriété webroot de l'objet request. -- ``Controller::$base`` est depréciée, utilisez la propriété base de l'objet +- ``Controller::$base`` est depréciée, utilisez la propriété base de l'objet request. -- ``Controller::$here`` est depréciée, utilisez la propriété here de l'objet +- ``Controller::$here`` est depréciée, utilisez la propriété here de l'objet request. -- ``Controller::$data`` est depréciée, utilisez la propriété data de l'objet +- ``Controller::$data`` est depréciée, utilisez la propriété data de l'objet request. - ``Controller::$params`` est depréciée, utilisez ``$this->request`` à la place. -- ``Controller::$Component`` a été déplacée vers ``Controller::$Components``. - Voir la documentation :doc:`/core-libraries/collections` pour plus +- ``Controller::$Component`` a été déplacée vers ``Controller::$Components``. + Voir la documentation :doc:`/core-libraries/collections` pour plus d'informations. - ``Controller::$view`` a été renommée en ``Controller::$viewClass``. - ``Controller::$view`` est maintenant utilisée pour changer le fichier vue qui + ``Controller::$view`` est maintenant utilisée pour changer le fichier vue qui doit être rendu. - ``Controller::render()`` retourne maintenant un objet CakeResponse. -Les propriétés depréciées dans Controller seront accessibles à travers la -méthode ``__get()``. Cette méthode va être retirée dans les versions futures, +Les propriétés depréciées dans Controller seront accessibles à travers la +méthode ``__get()``. Cette méthode va être retirée dans les versions futures, donc il est recommandé que vous mettiez votre application à jour. -Le Controller définit maintenant une limite Max (maxLimit) pour la pagination. -Cette limite maximale est mise à 100, mais peut être écrasée dans les options +Le Controller définit maintenant une limite Max (maxLimit) pour la pagination. +Cette limite maximale est mise à 100, mais peut être écrasée dans les options de $paginate. Pagination ---------- -La Pagination était traditionnellement une unique méthode dans le Controller, -cela créait pourtant un nombre de problèmes. La Pagination était difficile à -étendre, remplacer et modifier. Dans 2.0, la pagination a été extraite dans un -component. :php:meth:`Controller::paginate()` existe toujours, et sert en tant -que méthode commode pour le chargement et en utilisant le +La Pagination était traditionnellement une unique méthode dans le Controller, +cela créait pourtant un nombre de problèmes. La Pagination était difficile à +étendre, remplacer et modifier. Dans 2.0, la pagination a été extraite dans un +component. :php:meth:`Controller::paginate()` existe toujours, et sert en tant +que méthode commode pour le chargement et en utilisant le :php:class:`PaginatorComponent`. -Pour plus d'informations sur les nouvelles fonctionnalités offertes par la -pagination dans 2.0, voir la documentation +Pour plus d'informations sur les nouvelles fonctionnalités offertes par la +pagination dans 2.0, voir la documentation :doc:`/core-libraries/components/pagination`. Vue @@ -933,25 +933,25 @@ Vue La Vue n'est plus enregistrée dans ClassRegistry ------------------------------------------------ -La vue enregistrée dans ClassRegistry entraînait des abus et créait -effectivement un symbole global. Dans 2.0 chaque Helper reçoit l'instance -`Vue` courante dans son constructeur. Cela autorise l'accès aux vues pour les -helpers de la même façon que dans le passé, sans créer de symboles globaux. -Vous pouvez accéder à l'instance de vue dans `$this->_View` dans n'importe quel +La vue enregistrée dans ClassRegistry entraînait des abus et créait +effectivement un symbole global. Dans 2.0 chaque Helper reçoit l'instance +`Vue` courante dans son constructeur. Cela autorise l'accès aux vues pour les +helpers de la même façon que dans le passé, sans créer de symboles globaux. +Vous pouvez accéder à l'instance de vue dans `$this->_View` dans n'importe quel helper. Propriétés dépréciées --------------------- -- ``View::$webroot`` est deprécié, utilisez la propriété webroot de l'objet +- ``View::$webroot`` est deprécié, utilisez la propriété webroot de l'objet request. - ``View::$base`` est deprécié, utilisez la propriété base de l'objet request. - ``View::$here`` est deprécié, utilisez la propriété here de l'objet request. - ``View::$data`` est deprécié, utilisez la propriété data de l'objet request. - ``View::$params`` est deprécié, utilisez ``$this->request`` à la place. -- ``View::$loaded`` a été retiré. Utilisez ``HelperCollection`` pour accéder +- ``View::$loaded`` a été retiré. Utilisez ``HelperCollection`` pour accéder aux helpers chargés. -- ``View::$model`` a été retiré. Ce behavior est maintenant dans +- ``View::$model`` a été retiré. Ce behavior est maintenant dans :php:class:`Helper` - ``View::$modelId`` a été retiré. Ce behavior est maintenant dans :php:class:`Helper` @@ -963,61 +963,61 @@ Propriétés dépréciées :php:class:`Helper` - ``View::_loadHelpers()`` a été retiré, utilisez ``View::loadHelpers()`` à la place. -- La façon dont ``View::element()`` utilise le cache a changé, voir en-dessous +- La façon dont ``View::element()`` utilise le cache a changé, voir en-dessous pour plus d'informations. -- Les callbacks de Vue ont été transférés, voir en-dessous pour plus +- Les callbacks de Vue ont été transférés, voir en-dessous pour plus d'informations. - L'API pour ``View::element()`` a changé. Lire ici pour plus d'informations. -Les propriétés depréciées de Vue seront accessibles à travers une méthode -``__get()``. Cette méthode va être retirée dans les versions futures, ainsi il +Les propriétés depréciées de Vue seront accessibles à travers une méthode +``__get()``. Cette méthode va être retirée dans les versions futures, ainsi il est recommandé que vous mettiez à jour votre application. Méthodes retirées ----------------- * ``View::_triggerHelpers()`` Utilisez ``$this->Helpers->trigger()`` à la place. -* ``View::_loadHelpers()`` Utilisez ``$this->loadHelpers()`` à la place. Les +* ``View::_loadHelpers()`` Utilisez ``$this->loadHelpers()`` à la place. Les Helpers chargent maintenant facilement leurs propres helpers. Méthodes ajoutées ----------------- * ``View::loadHelper($name, $settings = array());`` Charge un unique helper. -* ``View::loadHelpers()`` charge tous les helpers indiqués dans +* ``View::loadHelpers()`` charge tous les helpers indiqués dans ``View::$helpers``. View->Helpers ------------- -Par défaut, les objets Vue contiennent un :php:class:`HelperCollection` dans +Par défaut, les objets Vue contiennent un :php:class:`HelperCollection` dans ``$this->Helpers``. Thèmes ------ -Pour utiliser les thèmes dans vos Controllers, vous n'avez plus à mettre +Pour utiliser les thèmes dans vos Controllers, vous n'avez plus à mettre ``var $view = 'Theme';``. Utilisez ``public $viewClass = 'Theme';`` à la place. Changements de positionnement des callbacks ------------------------------------------- -beforeLayout utilisé pour se déclencher après scripts_for_layout et -content_for_layout a été préparé. Dans 2.0, beforeLayout est tiré avant +beforeLayout utilisé pour se déclencher après scripts_for_layout et +content_for_layout a été préparé. Dans 2.0, beforeLayout est tiré avant que toute variable spéciale soit préparée, vous autorisant à les manipuler avant qu'elles soient passées au layout. -La même chose a été faite pour beforeRender. Il est maintenant tiré bien avant +La même chose a été faite pour beforeRender. Il est maintenant tiré bien avant que toute variable soit manipulée. En plus de ces changements, les callbacks des helpers reçoivent toujours le nom du fichier qui est sur le point d'être -rendu. Ceci, combiné avec le fait que les helpers soient capables d'accéder à +rendu. Ceci, combiné avec le fait que les helpers soient capables d'accéder à la vue à travers ``$this->_View`` et la vue courante du contenu à travers ``$this->_View->output`` vous donne plus de puissance qu'avant. La signature du callback Helper change -------------------------------------- -Les callbacks de Helper récupèrent maintenant toujours un argument passé à -l'intérieur. Pour BeforeRender et afterRender, c'est le fichier vue qui est +Les callbacks de Helper récupèrent maintenant toujours un argument passé à +l'intérieur. Pour BeforeRender et afterRender, c'est le fichier vue qui est rendu. Pour beforeLayout et afterLayout, c'est le fichier layout qui est rendu. Vos signatures de fonction des helpers doivent ressembler à cela:: @@ -1038,91 +1038,91 @@ Vos signatures de fonction des helpers doivent ressembler à cela:: } -L'élement attrapé, et les callbacks de vue ont été changés dans 2.0 pour vous -aider à vous fournir plus de flexibilité et de cohérence. :doc:`Lire plus sur +L'élement attrapé, et les callbacks de vue ont été changés dans 2.0 pour vous +aider à vous fournir plus de flexibilité et de cohérence. :doc:`Lire plus sur les changements `. CacheHelper decouplé -------------------- -Dans les versions precédentes, il y avait un couplage étroit entre -:php:class:`CacheHelper` et :php:class:`View`. Dans 2.0 ce couplage a été -retiré et CacheHelper utilise juste les callbacks comme les autres helpers +Dans les versions precédentes, il y avait un couplage étroit entre +:php:class:`CacheHelper` et :php:class:`View`. Dans 2.0 ce couplage a été +retiré et CacheHelper utilise juste les callbacks comme les autres helpers pour générer la page complète mise en cache. CacheHelper ```` tags changés ------------------------------------------- -Dans les versions précédentes, CacheHelper utilise un tag spécial -```` comme marqueur pour la sortie qui ne devrait pas faire -partie de la page entièrement mise en cache. Ces tags ne faisaient parti -d'aucun schéma XML, et il n'était pas possible de valider dans les documents -HTML et XML. Dans 2.0, ces tags ont été remplacés avec des commentaires +Dans les versions précédentes, CacheHelper utilise un tag spécial +```` comme marqueur pour la sortie qui ne devrait pas faire +partie de la page entièrement mise en cache. Ces tags ne faisaient parti +d'aucun schéma XML, et il n'était pas possible de valider dans les documents +HTML et XML. Dans 2.0, ces tags ont été remplacés avec des commentaires HTML/XML:: devient devient -Le code interne pour la page vue complète mise en cache a aussi été changé, +Le code interne pour la page vue complète mise en cache a aussi été changé, alors assurez vous de nettoyer le cache de la vue quand vous mettez à jour. -Changements de MediaView +Changements de MediaView ------------------------ -:php:func:`MediaView::render()` force maintenant le téléchargement de types -de fichiers inconnus à la place de juste retourner false. Si vous le voulez, -vous pouvez fournir un fichier de téléchargement alternatif, vous spécifiez le -nom complet incluant l'extension en utilisant la clé 'name' dans le paramètre +:php:func:`MediaView::render()` force maintenant le téléchargement de types +de fichiers inconnus à la place de juste retourner false. Si vous le voulez, +vous pouvez fournir un fichier de téléchargement alternatif, vous spécifiez le +nom complet incluant l'extension en utilisant la clé 'name' dans le paramètre tableau passé à la fonction. PHPUnit plutôt que SimpleTest ============================= -Tous les cas de test du coeur et les infrastructures supportant ont été portés -pour utiliser PHPUnit 3.5. Bien sur, vous pouvez continuer à utiliser -SimpleTest dans votre application en remplaçant les fichiers liés. Pas plus de -support ne sera donné pour SimpleTest et il est recommandé que vous migriez -vers PHPUnit aussi. Pour plus d'informations sur la façon de migrer vos tests, +Tous les cas de test du coeur et les infrastructures supportant ont été portés +pour utiliser PHPUnit 3.5. Bien sur, vous pouvez continuer à utiliser +SimpleTest dans votre application en remplaçant les fichiers liés. Pas plus de +support ne sera donné pour SimpleTest et il est recommandé que vous migriez +vers PHPUnit aussi. Pour plus d'informations sur la façon de migrer vos tests, regardez les allusions sur la migration vers PHPUnit. Plus de tests groupés --------------------- -PHPUnit ne fait pas la différence entre les cas de tests groupés et les cas de -tests uniques. A cause de cela, les options des tests groupés, et le support -pour les tests groupés à l'ancienne ont été retirés. Il est recommandé que les -TestGroupés soient portés vers les sous-classes de -``PHPUnit_Framework_Testsuite``. Vous pouvez trouver plusieurs exemples de ceci -dans la suite de test de CakePHP. Les méthodes liées aux tests groupés dans +PHPUnit ne fait pas la différence entre les cas de tests groupés et les cas de +tests uniques. A cause de cela, les options des tests groupés, et le support +pour les tests groupés à l'ancienne ont été retirés. Il est recommandé que les +TestGroupés soient portés vers les sous-classes de +``PHPUnit_Framework_Testsuite``. Vous pouvez trouver plusieurs exemples de ceci +dans la suite de test de CakePHP. Les méthodes liées aux tests groupés dans ``TestManager`` ont aussi été retirées. Shell Testsuite --------------- -Le shell Testsuite a eu ses invocations simplifiées et étendues. Vous n'avez -plus besoin de faire la différenciation entre ``case`` et ``group``. On -suppose que tous les tests sont des cas. Dans le passé, vous vous auriez fait -``cake testsuite app case models/post``, vous pouvez maintenant faire +Le shell Testsuite a eu ses invocations simplifiées et étendues. Vous n'avez +plus besoin de faire la différenciation entre ``case`` et ``group``. On +suppose que tous les tests sont des cas. Dans le passé, vous vous auriez fait +``cake testsuite app case models/post``, vous pouvez maintenant faire ``cake testsuite app Model/Post``. -Le shell Testsuite a été reconstruit pour utiliser l'outils cli de PHPUnit. -Cela supporte maintenant toutes les options de ligne de commande supportées -par PHPUnit. ``cake testsuite help`` vous montrera une liste de toutes les +Le shell Testsuite a été reconstruit pour utiliser l'outils cli de PHPUnit. +Cela supporte maintenant toutes les options de ligne de commande supportées +par PHPUnit. ``cake testsuite help`` vous montrera une liste de toutes les modifications possibles. Models ====== -Les relations des Models sont maintenant facilement chargées. Vous pouvez être -dans une situation où l'assignation d'une valeur à une propriété non-existante +Les relations des Models sont maintenant facilement chargées. Vous pouvez être +dans une situation où l'assignation d'une valeur à une propriété non-existante d'un model vous enverra les erreurs:: $Post->inexistentProperty[] = 'value'; -enverra à traver l'erreur "Notice: Indirect modification of overloaded property -$inexistentProperty has no effect"(Notice: La modification indirecte d'une -propriété $propriétéInexistente n'a aucun effet). Assigner une valeur initiale +enverra à traver l'erreur "Notice: Indirect modification of overloaded property +$inexistentProperty has no effect"(Notice: La modification indirecte d'une +propriété $propriétéInexistente n'a aucun effet). Assigner une valeur initiale à la propriété résoud le problème:: $Post->nonexistentProperty = array(); @@ -1136,45 +1136,45 @@ Ou déclare juste la propriété dans la classe model:: Chacune des ses approches résoudra les erreurs de notice. -La notation de ``find()`` dans CakePHP 1.2 n'est plus supportée. Les Finds -devront utiliser la notation ``$model->find('type', array(PARAMS))`` comme dans +La notation de ``find()`` dans CakePHP 1.2 n'est plus supportée. Les Finds +devront utiliser la notation ``$model->find('type', array(PARAMS))`` comme dans CakePHP 1.3. -- ``Model::$_findMethods`` est maintenant ``Model::$findMethods``. Cette +- ``Model::$_findMethods`` est maintenant ``Model::$findMethods``. Cette propriété est maintenant publique et peut être modifiée par les behaviors. Objets Database (Base de Données) --------------------------------- -CakePHP 2.0 introduit quelques changements dans les objets Database qui ne -devraient pas affecter grandement la compatibilité rétro-active. Le plus -grand changement est l'adoption de PDO pour la gestion des connections aux -bases de données. Si vous utilisez une installation vanilla de PHP 5, vous -aurez déjà les extensions nécessaires installées, mais il se peut que vous -dussiez activer les extensions individuelles pour chaque driver que vous +CakePHP 2.0 introduit quelques changements dans les objets Database qui ne +devraient pas affecter grandement la compatibilité rétro-active. Le plus +grand changement est l'adoption de PDO pour la gestion des connexions aux +bases de données. Si vous utilisez une installation vanilla de PHP 5, vous +aurez déjà les extensions nécessaires installées, mais il se peut que vous +dussiez activer les extensions individuelles pour chaque driver que vous souhaitez utiliser. -Utiliser PDO à travers toutes les BDD nous permet d'homogénéiser le code -pour chacune et fournit un comportement plus fiable et prévisible pour tous -les drivers. Il nous a également permis d'écrire des tests plus précis et +Utiliser PDO à travers toutes les BDD nous permet d'homogénéiser le code +pour chacune et fournit un comportement plus fiable et prévisible pour tous +les drivers. Il nous a également permis d'écrire des tests plus précis et portables pour le code de la base de données liée. -La première chose qui va probablement manquer aux users, est les -statistiques "lignes affectées" et "total de lignes", comme elles ne sont -pas reportées à cause d'un design de PDO plus performant et paresseux, il -y a des façons de régler ce problème, mais qui sont très spécifiques à chaque -base de données. Ces statistiques ne sont pas parties cependant, mais -pourraient manquer ou même être inexactes pour certains drivers. +La première chose qui va probablement manquer aux users, est les +statistiques "lignes affectées" et "total de lignes", comme elles ne sont +pas reportées à cause d'un design de PDO plus performant et paresseux, il +y a des façons de régler ce problème, mais qui sont très spécifiques à chaque +base de données. Ces statistiques ne sont pas parties cependant, mais +pourraient manquer ou même être inexactes pour certains drivers. -Une fonctionnalité sympa ajoutée après l'adoption de PDO est la possibilité -d'utiliser des requêtes préparées avec des placeholders de requêtes utilisant +Une fonctionnalité sympa ajoutée après l'adoption de PDO est la possibilité +d'utiliser des requêtes préparées avec des placeholders de requêtes utilisant le driver natif si il est disponible. Liste des changements ~~~~~~~~~~~~~~~~~~~~~ * DboMysqli a été retirée, nous ferons seulement le support de DboMysql. -* API pour DboSource::execute a changé, elle prendra maintenant un tableau de +* API pour DboSource::execute a changé, elle prendra maintenant un tableau de valeurs requêtées en second paramètre:: public function execute($sql, $params = array(), $options = array()) @@ -1183,13 +1183,13 @@ Liste des changements public function execute($sql, $options = array(), $params = array()) - le troisième paramètre est supposé recevoir les options pour se connecter, + le troisième paramètre est supposé recevoir les options pour se connecter, en ce moment, il ne comprend que l'option "log". -* DboSource::value() perd son troisième paramètre, il n'était pas utilisé de +* DboSource::value() perd son troisième paramètre, il n'était pas utilisé de toute façon. -* DboSource::fetchAll() accepte maintenant un tableau en second paramètre, - pour passer les valeurs devant être liées à la requête, le troisième +* DboSource::fetchAll() accepte maintenant un tableau en second paramètre, + pour passer les valeurs devant être liées à la requête, le troisième paramètre a été abandonnée. Exemple:: $db->fetchAll('SELECT * from users where nom_utilisateur = ? AND mot_de_passe = ?', array('jhon', '12345')); @@ -1197,41 +1197,41 @@ Liste des changements Le driver PDO va automatiquement echapper ces valeurs pour vous. -* Les statistiques de Base de données sont collectées seulement si la propriété +* Les statistiques de Base de données sont collectées seulement si la propriété "fullDebug" de la BDD correspondante est mise à true. -* Nouvelle méthode DboSource::getConnection() va retourner l'objet PDO dans le +* Nouvelle méthode DboSource::getConnection() va retourner l'objet PDO dans le cas où vous auriez besoin de parler directement au driver. -* Le traitement des valeurs boléennes a changé un peu pour pouvoir faciliter le +* Le traitement des valeurs boléennes a changé un peu pour pouvoir faciliter le croisement de base de données, vous devrez peut-être changer vos cas de test. -* Le support de Postgresql a été immensément amélioré, il crée maintenant - correctement les schémas, vide les tables, et il est plus facile d'écrire des +* Le support de Postgresql a été immensément amélioré, il crée maintenant + correctement les schémas, vide les tables, et il est plus facile d'écrire des tests en l'utilisant. -* DboSource::insertMulti() n'acceptera plus les chaînes sql, passez juste un - tableau de champs et un tableau imbriqué de valeurs pour les insérer tous en +* DboSource::insertMulti() n'acceptera plus les chaînes sql, passez juste un + tableau de champs et un tableau imbriqué de valeurs pour les insérer tous en une fois. -* TranslateBehavior a été reconstruit pour utiliser les vituaFields des +* TranslateBehavior a été reconstruit pour utiliser les vituaFields des models, cela rend l'implémentation plus portable. -* Tous les cas de test avec les choses liées de Mysql ont été déplacés vers le - cas de test du driver correspondant. Cela a laissé le fichier DboSourceTest +* Tous les cas de test avec les choses liées de Mysql ont été déplacés vers le + cas de test du driver correspondant. Cela a laissé le fichier DboSourceTest un peu maigre. -* Support de l'imbrication des transactions. Maintenant il est possible de - démarrer une transaction plusieurs fois. Il ne peut être engagé si la méthode +* Support de l'imbrication des transactions. Maintenant il est possible de + démarrer une transaction plusieurs fois. Il ne peut être engagé si la méthode de validation est appelé le même nombre de fois. -* Le support Sqlite a été grandement amélioré. La différence majeure avec cake - 1.3 est qu'il ne supportera que Sqlite 3.x. C'est une bonne alternative pour +* Le support Sqlite a été grandement amélioré. La différence majeure avec cake + 1.3 est qu'il ne supportera que Sqlite 3.x. C'est une bonne alternative pour le développement des apps, et rapidement en lançant les cas de test. -* Les valeurs des colonnes boléennes vont être lancées automatiquement vers le - type boléeen natif de php, donc assurez vous de mettre à jour vos cas de test - et code si vous attendiez une valeur retournée de type chaîne de caractère ou - un entier: Si vous aviez une colonne "published" dans le passé en utilisant - mysql, toutes les valeurs retournées d'un find auraient été numériques dans +* Les valeurs des colonnes boléennes vont être lancées automatiquement vers le + type boléeen natif de php, donc assurez vous de mettre à jour vos cas de test + et code si vous attendiez une valeur retournée de type chaîne de caractère ou + un entier: Si vous aviez une colonne "published" dans le passé en utilisant + mysql, toutes les valeurs retournées d'un find auraient été numériques dans le passé, maintenant elles sont strictement des valeurs boléennes. BehaviorCollection ------------------ -- ``BehaviorCollection`` ne met plus en minuscule ``strtolower()`` les - mappedMethods. Les mappedMethods des Behaviors sont maintenant sensible à la +- ``BehaviorCollection`` ne met plus en minuscule ``strtolower()`` les + mappedMethods. Les mappedMethods des Behaviors sont maintenant sensible à la casse. AclBehavior et TreeBehavior @@ -1255,28 +1255,28 @@ AclBehavior et TreeBehavior Plugins ======= -Les plugins n'ajoutent plus de façon magique leur prefix plugin aux components, -helpers et models utilisés à travers eux. Vous devez être explicites avec les +Les plugins n'ajoutent plus de façon magique leur prefix plugin aux components, +helpers et models utilisés à travers eux. Vous devez être explicites avec les components, models et helpers que vous souhaitez utiliser. Dans le passé:: var $components = array('Session', 'Comments'); -Aurait regardé dans le plugin du controller avant de vérifier les components -app/core. Il va maintenant seulement regarder dans les components app/core. -Si vous souhaitez utiliser les objets à partir d'un plugin, vous devez mettre +Aurait regardé dans le plugin du controller avant de vérifier les components +app/core. Il va maintenant seulement regarder dans les components app/core. +Si vous souhaitez utiliser les objets à partir d'un plugin, vous devez mettre le nom du plugin:: public $components = array('Session', 'Comment.Commentaires'); -Cela a été fait pour réduire la difficulté des problèmes de debug causés par -les ratés de la magie. Cela améliore aussi la cohérence dans votre application, +Cela a été fait pour réduire la difficulté des problèmes de debug causés par +les ratés de la magie. Cela améliore aussi la cohérence dans votre application, puisque les objets ont une façon autoritaire de les référencer. Plugin App Controller et Plugin App Model ------------------------------------------ -Les plugins AppController et AppModel ne sont plus directement localisés dans -le dossier plugin. Ils sont maintenant placés dans les dossiers des plugins des +Les plugins AppController et AppModel ne sont plus directement localisés dans +le dossier plugin. Ils sont maintenant placés dans les dossiers des plugins des Controllers et des Models comme ceci:: /app @@ -1290,7 +1290,7 @@ Controllers et des Models comme ceci:: Console ======= -La plupart de la console du framework a été reconstruite pour 2.0 pour traiter +La plupart de la console du framework a été reconstruite pour 2.0 pour traiter un grand nombre de questions suivantes: - Etroitement couplé. @@ -1302,22 +1302,22 @@ un grand nombre de questions suivantes: Backwards incompatible Shell API changes ---------------------------------------- -- ``Shell`` n'a plus d'instance ``AppModel``. Cette instance ``AppModel`` +- ``Shell`` n'a plus d'instance ``AppModel``. Cette instance ``AppModel`` n'était pas correctement construite et était problématique. -- ``Shell::_loadDbConfig()`` a été retiré. Il n'était pas assez générique pour - rester dans le Shell. Vous pouvez utiliser ``DbConfigTask`` si vous avez +- ``Shell::_loadDbConfig()`` a été retiré. Il n'était pas assez générique pour + rester dans le Shell. Vous pouvez utiliser ``DbConfigTask`` si vous avez besoin de demander à l'utilisateur de créer une config db. -- Shells n'utilise plus ``$this->Dispatcher`` pour accéder à stdin, stdout, et - stderr. Ils ont maintenant les objets ``ConsoleOutput`` et ``ConsoleInput`` +- Shells n'utilise plus ``$this->Dispatcher`` pour accéder à stdin, stdout, et + stderr. Ils ont maintenant les objets ``ConsoleOutput`` et ``ConsoleInput`` pour gérer cela. -- Shells chargent les tâches facilement, et utilisent ``TaskCollection`` pour - fournir une interface similaire à celle utilisée pour les Helpers, +- Shells chargent les tâches facilement, et utilisent ``TaskCollection`` pour + fournir une interface similaire à celle utilisée pour les Helpers, Components, et Behaviors pour le chargement à la volée des tâches. - ``Shell::$shell`` a été retiré. - ``Shell::_checkArgs()`` a été retiré. Configurer un ``ConsoleOptionParser`` -- Shells n'ont plus d'accès direct à ``ShellDispatcher``. Vous devez utiliser - les objets ``ConsoleInput`` et ``ConsoleOutput`` à la place. Si vous avez - besoin de dispatcher d'autres shells, regardez la section sur 'invoquer +- Shells n'ont plus d'accès direct à ``ShellDispatcher``. Vous devez utiliser + les objets ``ConsoleInput`` et ``ConsoleOutput`` à la place. Si vous avez + besoin de dispatcher d'autres shells, regardez la section sur 'invoquer d'autres shells à partir de votre shell'. Backwards incompatible ShellDispatcher API changes @@ -1330,44 +1330,44 @@ Backwards incompatible ShellDispatcher API changes - ``ShellDispatcher::$shellCommand`` a été retirée. - ``ShellDispatcher::$shellPaths`` a été retirée, utilisez ``App::path('shells');`` à la place. -- ``ShellDispatcher`` n'utilise plus 'help' comme méthode magique qui a un - statut spécial. A la place, utilisez les options ``--help/-h``, et un +- ``ShellDispatcher`` n'utilise plus 'help' comme méthode magique qui a un + statut spécial. A la place, utilisez les options ``--help/-h``, et un parseur d'option. Backwards incompatible Shell Changes ------------------------------------ - Bake's ControllerTask ne prend plus ``public`` et ``admin`` comme arguments - passés. Ce sont maintenant des options, indiquées par ``--admin`` et + passés. Ce sont maintenant des options, indiquées par ``--admin`` et ``--public``. -Il est recommandé que vous utilisiez le help sur les shells que vous utilisiez -pour voir si tous les paramètres ont changé. il est aussi recommandé que vous -lisiez les nouvelles fonctionnalités de la console, pour plus d'informations +Il est recommandé que vous utilisiez le help sur les shells que vous utilisiez +pour voir si tous les paramètres ont changé. il est aussi recommandé que vous +lisiez les nouvelles fonctionnalités de la console, pour plus d'informations sur les nouvelles APIs qui sont disponibles. Debugger ======== -La fonction ``debug()`` va sortir par défaut les chaînes sans danger de HTML. -C'est désactivé si c'est utilisé dans la console. L'option ``$showHtml`` pour -``debug()`` peut être mis sur false pour désactiver la sortie sans danger de +La fonction ``debug()`` va sortir par défaut les chaînes sans danger de HTML. +C'est désactivé si c'est utilisé dans la console. L'option ``$showHtml`` pour +``debug()`` peut être mis sur false pour désactiver la sortie sans danger de HTML du debug. ConnectionManager ================= -``ConnectionManager::enumConnectionObjects()`` va maintenant retourner la -configuration courante pour chaque connection créée, au lieu d'un tableau avec -un nom de fichier, d'un nom de classe et d'un plugin, qui n'était pas +``ConnectionManager::enumConnectionObjects()`` va maintenant retourner la +configuration courante pour chaque connexion créée, au lieu d'un tableau avec +un nom de fichier, d'un nom de classe et d'un plugin, qui n'était pas réellement utiles. -Quand vous définirez les connections à la base de données, vous aurez besoin -de faire quelques changements dans la façon dont les configs ont été définies -dans le passé. Basiquement dans classe de configuration de la base de données, -la clé "driver" n'est plus acceptée, seulement "datasource", afin de la rendre -plus cohérente. Aussi, comme les sources de données ont été déplacées vers les -packages, vous aurez besoin de passer le package dans lequel ils sont +Quand vous définirez les connexions à la base de données, vous aurez besoin +de faire quelques changements dans la façon dont les configs ont été définies +dans le passé. Basiquement dans classe de configuration de la base de données, +la clé "driver" n'est plus acceptée, seulement "datasource", afin de la rendre +plus cohérente. Aussi, comme les sources de données ont été déplacées vers les +packages, vous aurez besoin de passer le package dans lequel ils sont localisés. Exemple:: public $default = array( diff --git a/fr/appendices/2-3-migration-guide.rst b/fr/appendices/2-3-migration-guide.rst old mode 100644 new mode 100755 index 87fd548cc..939b8795f --- a/fr/appendices/2-3-migration-guide.rst +++ b/fr/appendices/2-3-migration-guide.rst @@ -17,7 +17,7 @@ Mise en Cache - FileEngine est toujours le moteur de cache par défaut. Dans le passé, un certain nombre de personnes a des difficultés configurant et déployant APC correctement des deux façons en cli et web. L'utilisation des - fichiers devrait rendre la configuration de CakePHP plus simple pour + fichiers devrait rendre la configuration de CakePHP plus simple pour les nouveaux développeurs. - `Configure::write('Cache.viewPrefix', 'YOURPREFIX');` a été ajoutée à `core.php` pour autoriser les domaines/languages multiples par configuration. @@ -54,12 +54,12 @@ PaginatorComponent - PaginatorComponent lance maintenant `NotFoundException` quand vous essayez d'accéder à une page qui n'est pas correct (par ex la page requêtée est supérieure au total du compte de page). - + SecurityComponent ------------------ -- SecurityComponent supporte maintenant l'option ``unlockedActions``. Ceci peut - être utilisé pour désactiver toutes les vérifications de sécurité pour toute +- SecurityComponent supporte maintenant l'option ``unlockedActions``. Ceci peut + être utilisé pour désactiver toutes les vérifications de sécurité pour toute action listée dans cette option. RequestHandlerComponent @@ -170,7 +170,7 @@ Network SmtpTransport ------------- -- Le support TLS/SSL a été ajouté pour les connections SMTP. +- Le support TLS/SSL a été ajouté pour les connexions SMTP. CakeRequest ----------- @@ -343,7 +343,7 @@ Debugger Security -------- -- Le support pour +- Le support pour `bcrypt `_ a été ajouté. Regardez la documentation de :php:class:`Security::hash()` pour plus d'informations sur la façon d'utiliser bcrypt. diff --git a/fr/appendices/2-4-migration-guide.rst b/fr/appendices/2-4-migration-guide.rst old mode 100644 new mode 100755 index 90cc2ab1d..6370b7777 --- a/fr/appendices/2-4-migration-guide.rst +++ b/fr/appendices/2-4-migration-guide.rst @@ -103,8 +103,8 @@ Datasource ---------- - Mysql, Postgres, et SQLserver supportent maintenant un tableau 'settings' - dans la définition de connection. Cette paire de clé => valeur émettra des - commandes ``SET`` lorque la connection est créée. + dans la définition de connexion. Cette paire de clé => valeur émettra des + commandes ``SET`` lorque la connexion est créée. - Mysql driver supporte maintenant les options SSL. View diff --git a/fr/appendices/new-features-in-cakephp-2-0.rst b/fr/appendices/new-features-in-cakephp-2-0.rst old mode 100644 new mode 100755 index ea3178622..657839c9f --- a/fr/appendices/new-features-in-cakephp-2-0.rst +++ b/fr/appendices/new-features-in-cakephp-2-0.rst @@ -4,14 +4,14 @@ Nouvelles caractéristiques dans CakePHP 2.0 Model ===== -Le processus de construction du modèle a été allegé. Les associations des -Modèles sont maintenant en lazy loaded, les applications avec beaucoup de -modèles et d'associations vont voir une grande réduction de temps dans le +Le processus de construction du modèle a été allegé. Les associations des +Modèles sont maintenant en lazy loaded, les applications avec beaucoup de +modèles et d'associations vont voir une grande réduction de temps dans le processus de bootstrap. -Les modèles ne requièrent maintenant plus de connection à la base de données -dans le processus de construction. La base de données ne sera accédée pour la -première fois seulement quand une opération de recherche est délivrée ou +Les modèles ne requièrent maintenant plus de connexion à la base de données +dans le processus de construction. La base de données ne sera accédée pour la +première fois seulement quand une opération de recherche est délivrée ou une information pour une des colonnes est requise. View @@ -20,9 +20,9 @@ View View::$output ------------- -View n'aura pas toujours le dernier rendu de contenu (view ou layout) -accessible avec ``$this->output``. Dans les helpers, vous pouvez utiliser -``$this->_View->output``. Modifier cette propriété changera le contenu +View n'aura pas toujours le dernier rendu de contenu (view ou layout) +accessible avec ``$this->output``. Dans les helpers, vous pouvez utiliser +``$this->_View->output``. Modifier cette propriété changera le contenu qui sort de la vue rendue. Helpers @@ -33,14 +33,14 @@ HtmlHelper * ``getCrumbList()`` Créé un fil d'ariane de liens entourés d'éléments ``
  • ``. Regardez `#856 `_. -* ``loadConfig()`` a été déplacé de :php:class:`Helper` vers la classe - :php:class:`HtmlHelper`. Cette méthode utilise maintenant les nouvelles +* ``loadConfig()`` a été déplacé de :php:class:`Helper` vers la classe + :php:class:`HtmlHelper`. Cette méthode utilise maintenant les nouvelles classes de lecture (voir 2.0 :php:class:`Configure`) - pour charger votre fichier de config. En option vous pouvez passer le chemin - en deuxième paramètre (``app/Config`` par défaut). Pour simplifier, vous - pouvez définir le fichier de configuration (et le lecteur) dans - ``Controller::$helpers`` (exemple ci-dessous) pour charger le constructeur - du helper. Dans le fichier de configuration, vous pouvez définir les clés + pour charger votre fichier de config. En option vous pouvez passer le chemin + en deuxième paramètre (``app/Config`` par défaut). Pour simplifier, vous + pouvez définir le fichier de configuration (et le lecteur) dans + ``Controller::$helpers`` (exemple ci-dessous) pour charger le constructeur + du helper. Dans le fichier de configuration, vous pouvez définir les clés ci-dessous: * ``tags`` Doit être un tableau avec une valeur clé; @@ -61,15 +61,15 @@ Exemple sur la façon de définir le fichier de configuration sur les contrôleu FormHelper ---------- -* :php:class:`FormHelper` supporte maintenant tout type d'entrée HTML5 et - tout type d'entrée personnalisé. Utilisez simplement le type d'entrée - que vous souhaitez en méthode sur le helper. Par exemple ``range()`` +* :php:class:`FormHelper` supporte maintenant tout type d'entrée HTML5 et + tout type d'entrée personnalisé. Utilisez simplement le type d'entrée + que vous souhaitez en méthode sur le helper. Par exemple ``range()`` créera une entrée avec type = range. -* ``postLink()`` et ``postButton()`` Crée un lien/bouton permettant d'accéder - à certaine pasge utilisant la méthode HTTP POST. Avec ceci dans votre - controller vous pouvez empêcher certaines actions, comme delete, d'être +* ``postLink()`` et ``postButton()`` Crée un lien/bouton permettant d'accéder + à certaine pasge utilisant la méthode HTTP POST. Avec ceci dans votre + controller vous pouvez empêcher certaines actions, comme delete, d'être accédées par la méthode GET. -* ``select()`` avec multiple = checkbox, traite maintenant l'attribut ``'id'`` +* ``select()`` avec multiple = checkbox, traite maintenant l'attribut ``'id'`` en préfixe pour toutes les options générées. Libs @@ -78,23 +78,23 @@ Libs CakeRequest ----------- -:php:class:`CakeRequest` est une nouvelle classe introduite dans 2.0. Elle -encapsule les méthodes d'introspection de requêtes utilisées couramment et +:php:class:`CakeRequest` est une nouvelle classe introduite dans 2.0. Elle +encapsule les méthodes d'introspection de requêtes utilisées couramment et remplace le tableau params avec un objet plus utile. Lisez en plus sur :php:class:`CakeRequest`. CakeResponse ------------ -:php:class:`CakeResponse` est une nouvelle classe introduite dans 2.0. Elle -encapsule les méthodes et propriétés utilisées couramment dans la réponse HTTP -que votre application génére. Elle consolide plusieurs caractéristiques dans +:php:class:`CakeResponse` est une nouvelle classe introduite dans 2.0. Elle +encapsule les méthodes et propriétés utilisées couramment dans la réponse HTTP +que votre application génére. Elle consolide plusieurs caractéristiques dans CakePHP. Lisez en plus sur :php:class:`CakeResponse`. CakeSession, SessionComponent ----------------------------- -:php:class:`CakeSession` et le :php:class:`SessionComponent` ont connu un +:php:class:`CakeSession` et le :php:class:`SessionComponent` ont connu un nombre de changements, regardez la section session pour plus d'informations. Router @@ -103,15 +103,15 @@ Router Routes peuvent retourner des URLs complètes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Les Objets Route peuvent maintenant retourner des URLs complètes, et -:php:class:`Router` ne les modifiera plus au-delà de l'ajout de la -chaîne de requête et des éléments de fragments. Par exemple, ceci -pouvait être utilisé pour créer des routes pour la gestion de -sous-domaines, ou pour l'activation de flags https/http. Un exemple +Les Objets Route peuvent maintenant retourner des URLs complètes, et +:php:class:`Router` ne les modifiera plus au-delà de l'ajout de la +chaîne de requête et des éléments de fragments. Par exemple, ceci +pouvait être utilisé pour créer des routes pour la gestion de +sous-domaines, ou pour l'activation de flags https/http. Un exemple de classe de route qui supporte les sous-domaines serait:: class SubdomainRoute extends CakeRoute { - + public function match ($params) { $subdomain = isset($params['subdomain']) ? $params['subdomain'] : null; unset($params['subdomain']); @@ -123,7 +123,7 @@ de classe de route qui supporte les sous-domaines serait:: } } -Quand vous créez des liens, vous pouvez faire ce qui suit pour faire pointer +Quand vous créez des liens, vous pouvez faire ce qui suit pour faire pointer les liens vers d'autres sous-domaines. :: @@ -138,7 +138,7 @@ Ce qui est ci-dessus créera un lien avec l'url http://test.localhost/posts/add. Xml --- -:php:class:`Xml` a connu un certain nombre de changements. Lisez en plus sur la +:php:class:`Xml` a connu un certain nombre de changements. Lisez en plus sur la classe :doc:`/core-utility-libraries/xml`. Nouvelles caractéristiques de Lib @@ -147,19 +147,19 @@ Nouvelles caractéristiques de Lib Configure readers ----------------- -:php:class:`Configure` peut maintenant être configuré pour le chargement de -fichiers à partir d'une variété de sources et de formats. La section -:doc:`/development/configuration` contient plus d'informations sur les +:php:class:`Configure` peut maintenant être configuré pour le chargement de +fichiers à partir d'une variété de sources et de formats. La section +:doc:`/development/configuration` contient plus d'informations sur les changements faits à configure. -:php:meth:`Configure::read()` sans autre argument vous permet de lire +:php:meth:`Configure::read()` sans autre argument vous permet de lire toutes les valeurs de configure, plutôt que uniquement la valeur du debug. Error et gestion des exceptions ------------------------------- -CakePHP 2.0 a reconstruit la gestion des :doc:`/development/exceptions` -et des :doc:`/development/errors`, pour être plus flexible et donner +CakePHP 2.0 a reconstruit la gestion des :doc:`/development/exceptions` +et des :doc:`/development/errors`, pour être plus flexible et donner plus de puissance aux développeurs. String::wrap() @@ -219,19 +219,19 @@ URL. CookieComponent --------------- -:php:class:`CookieComponent` supporte maintenant seulement les cookies HTTP. -Vous pouvez les activer en utilisant ``$this->Cookie->httpOnly = true;``. +:php:class:`CookieComponent` supporte maintenant seulement les cookies HTTP. +Vous pouvez les activer en utilisant ``$this->Cookie->httpOnly = true;``. Avoir seulement les cookies HTTP les rendra inaccessible à partir du navigateur. Security Component CSRF separation ---------------------------------- -CakePHP a une protection CSRF depuis 1.2. Pour 2.0, le CSRF existant a un -nouveau mode plus paranoïaque, et est sa caractéristique propre autonome. -Dans le passé, les fonctionnalités CSRF étaient couplées avec des gardes-fous -de tampering de formulaires. Les développeurs désactivent souvent -validatePost pour faire des formulaires dynamiques, en désactivant la -protection CSRF en même temps. Pour 2.0, la vérification CSRF a été séparée +CakePHP a une protection CSRF depuis 1.2. Pour 2.0, le CSRF existant a un +nouveau mode plus paranoïaque, et est sa caractéristique propre autonome. +Dans le passé, les fonctionnalités CSRF étaient couplées avec des gardes-fous +de tampering de formulaires. Les développeurs désactivent souvent +validatePost pour faire des formulaires dynamiques, en désactivant la +protection CSRF en même temps. Pour 2.0, la vérification CSRF a été séparée du tampering des formulaires vous donnant plus de contrôle. Pour plus d'informations, regardez :ref:`security-csrf` @@ -239,15 +239,15 @@ Pour plus d'informations, regardez :ref:`security-csrf` Controller ========== -Les Controllers ont maintenant accès aux objets request et response. Vous +Les Controllers ont maintenant accès aux objets request et response. Vous pouvez en lire plus sur ces objets sur leurs pages spécifiques. Console ======= -La console pour CakePHP 2.0 a été preque entièrement reconstruite. De -nombreuses nouvelles caractéristiques ainsi que quelques changements -incompatibles avec antérieurement. Lisez en plus sur les changements sur +La console pour CakePHP 2.0 a été preque entièrement reconstruite. De +nombreuses nouvelles caractéristiques ainsi que quelques changements +incompatibles avec antérieurement. Lisez en plus sur les changements sur la console. Pagination @@ -255,33 +255,33 @@ Pagination Pagination fournit maintenant un maxLimit par défaut à 100 pour la pagination. -Cette limite peut maintenant être dépassée avec la variable paginate dans +Cette limite peut maintenant être dépassée avec la variable paginate dans le Controller. :: $this->paginate = array('maxLimit' => 1000); -Cette valeur par défaut est fournie pour empêcher l'utilisateur de manipuler -les URL provoquant une pression excessive sur la base de données pour les -requêtes suivantes, où un utilisateur modifierait le paramètre 'limit' pour +Cette valeur par défaut est fournie pour empêcher l'utilisateur de manipuler +les URL provoquant une pression excessive sur la base de données pour les +requêtes suivantes, où un utilisateur modifierait le paramètre 'limit' pour une nombre très important. Mettre un Alias =============== -Vous pouvez maintenant mettre un alias les helpers, les components et les -behaviors pour utiliser votre classe plutôt qu'une autre. Cela signifie que -vous pouvez très facilement faire un helper ``MyHtml`` et n'avez pas besoin -de remplacer chaque instance de ``$this->Html`` dans vos vues. Pour le faire, -passez la clé 'className' tout au long de votre classe, comme vous feriez avec +Vous pouvez maintenant mettre un alias les helpers, les components et les +behaviors pour utiliser votre classe plutôt qu'une autre. Cela signifie que +vous pouvez très facilement faire un helper ``MyHtml`` et n'avez pas besoin +de remplacer chaque instance de ``$this->Html`` dans vos vues. Pour le faire, +passez la clé 'className' tout au long de votre classe, comme vous feriez avec les modèles. :: - public $helpers = array( - 'Html' => array( - 'className' => 'MyHtml' + public $helpers = array( + 'Html' => array( + 'className' => 'MyHtml' ) ); @@ -289,9 +289,9 @@ De même, vous pouvez mettre en alias les components pour l'utilisation dans vos :: - public $components = array( - 'Email' => array( - 'className' => 'QueueEmailer' + public $components = array( + 'Email' => array( + 'className' => 'QueueEmailer' ) ); @@ -300,27 +300,27 @@ Finalement, vous pouvez aussi mettre en alias les behaviors. :: - public $actsAs = array( - 'Containable' => array( - 'className' => 'SuperContainable' - ) + public $actsAs = array( + 'Containable' => array( + 'className' => 'SuperContainable' + ) ); -Du fait de la façon dont 2.0 utilise les collections et les partage dans -toute l'application, toute classe que vous mettez en alias sera utilisée -dans toute votre application. Quelque soit le moment où votre application -essaie d'accéder à l'alias, elle aura accès à votre classe. Par exemple, -quand vous mettez en alias le helper Html dans l'exemple ci-dessus, tous -les helpers qui utilisent le helper Html ou les éléments qui chargent le +Du fait de la façon dont 2.0 utilise les collections et les partage dans +toute l'application, toute classe que vous mettez en alias sera utilisée +dans toute votre application. Quelque soit le moment où votre application +essaie d'accéder à l'alias, elle aura accès à votre classe. Par exemple, +quand vous mettez en alias le helper Html dans l'exemple ci-dessus, tous +les helpers qui utilisent le helper Html ou les éléments qui chargent le helper Html, utiliseront MyHtml à la place. ConnectionManager ================= -Une nouvelle méthode :php:meth:`ConnectionManager::drop()` a été ajoutée pour permettre -de retirer les connections lors de l'éxecution. +Une nouvelle méthode :php:meth:`ConnectionManager::drop()` a été ajoutée pour permettre +de retirer les connexions lors de l'éxecution. .. meta:: :title lang=fr: Nouvelles caractéristiques dans CakePHP 2.0 - :keywords lang=fr: réductions de temps,doctypes,construction de modèles,valeur clé,option une,connection base de données,vue du contenu,fichier de configuration,constructeur,temps bon,tableau,nouvelles caractéristiques,processus bootstrap,éléments,nouveaux modèles + :keywords lang=fr: réductions de temps,doctypes,construction de modèles,valeur clé,option une,connexion base de données,vue du contenu,fichier de configuration,constructeur,temps bon,tableau,nouvelles caractéristiques,processus bootstrap,éléments,nouveaux modèles diff --git a/fr/console-and-shells/code-generation-with-bake.rst b/fr/console-and-shells/code-generation-with-bake.rst old mode 100644 new mode 100755 index 329050084..f9f4e41fe --- a/fr/console-and-shells/code-generation-with-bake.rst +++ b/fr/console-and-shells/code-generation-with-bake.rst @@ -44,7 +44,7 @@ exécuter Bake vous présentera les options suivantes :: [T]est case [Q]uit What would you like to Bake? (D/M/V/C/P/F/T/Q) - > + > Sinon, vous pouvez exécuter chacune de ces commandes directement depuis la ligne de commande :: @@ -117,7 +117,7 @@ avec le rajout de fonctionnalités et améliorations. - Une troisième tâche (TemplateTask) a été rajoutée pour l'utilisation dans vos shells. - Toutes ces différentes tâches de bake vous permettent maintenant d'utiliser - d'autres connections de bake que le 'default'. + d'autres connexions de bake que le 'default'. Utilisez le paramètre ``-connection``. - Le support de Plugin a été fortement amélioré. Vous pouvez maintenant utiliser ``--plugin NomDuPlugin`` ou ``Plugin.class``. diff --git a/fr/core-libraries/logging.rst b/fr/core-libraries/logging.rst old mode 100644 new mode 100755 index 212873f4c..c927826f5 --- a/fr/core-libraries/logging.rst +++ b/fr/core-libraries/logging.rst @@ -39,7 +39,7 @@ pourrait ressembler à ceci:: 'model' => 'LogEntry', // ... )); - + // pour un plugin appelé LoggingPack CakeLog::config('otherFile', array( 'engine' => 'LoggingPack.Database', @@ -209,7 +209,7 @@ comprend les clés suivantes: ``error - Web Server 1 - An error occurred in this request`` après avoir remplacé les placeholders. * `prefix`: Une chaine qui va être préfixée à tous les messages de log. -* `flag`: Un drapeau entier utilisé pour l'ouverture de la connection à +* `flag`: Un drapeau entier utilisé pour l'ouverture de la connexion à logger, par défaut `LOG_ODELAY` sera utilisée. Regardez la documentation de `openlog` pour plus d'options. * `facility`: Le slot de journalisation à utiliser dans syslog. Par défaut diff --git a/fr/core-utility-libraries/httpsocket.rst b/fr/core-utility-libraries/httpsocket.rst old mode 100644 new mode 100755 index 708034d0c..6ad3d4f81 --- a/fr/core-utility-libraries/httpsocket.rst +++ b/fr/core-utility-libraries/httpsocket.rst @@ -25,7 +25,7 @@ les différentes méthodes HTTP. // requête chaîne $results = $HttpSocket->get('http://www.google.com/search', 'q=cakephp'); - + // requête tableau $results = $HttpSocket->get('http://www.google.com/search', array('q' => 'cakephp')); @@ -47,7 +47,7 @@ les différentes méthodes HTTP. 'http://example.com/add', 'name=test&type=user' ); - + // donnée en tableau $data = array('name' => 'test', 'type' => 'user'); $results = $HttpSocket->post('http://example.com/add', $data); @@ -197,7 +197,7 @@ Quand la réponse a un code de statut de redirection valide (voir ``HttpResponse::isRedirect``), une requête supplémentaire peut être automatiquement faîte selon le header *Location* reçu:: - 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul'); Si $key est laissé à null, toutes les valeurs dans Configure seront @@ -575,7 +575,7 @@ les fichiers de configuration qui sont lisibles avec .. versionadded:: 2.2 ``Configure::dump()`` a été ajouté dans 2.2. - + Stocker la configuration de runtime ----------------------------------- diff --git a/fr/development/exceptions.rst b/fr/development/exceptions.rst old mode 100644 new mode 100755 index fd4ff1f88..eb2168f31 --- a/fr/development/exceptions.rst +++ b/fr/development/exceptions.rst @@ -153,7 +153,7 @@ seront lancées à partir de certains components du coeur de CakePHP: .. php:exception:: MissingConnectionException - Une connection à un model n'existe pas. + Une connexion à un model n'existe pas. .. php:exception:: MissingTableException diff --git a/fr/development/testing.rst b/fr/development/testing.rst old mode 100644 new mode 100755 index 13e1b353b..6e622eb9f --- a/fr/development/testing.rst +++ b/fr/development/testing.rst @@ -344,8 +344,8 @@ de l'application qui tourne. De plus, vous pouvez commencer à tester votre code avant dee développer réellement en live le contenu pour une application. -CakePHP utilise la connection nommée ``$test`` dans votre fichier de -configuration ``app/Config/database.php`` Si la connection n'est pas +CakePHP utilise la connexion nommée ``$test`` dans votre fichier de +configuration ``app/Config/database.php`` Si la connexion n'est pas utilisable, une exception sera levée et vous ne serez pas capable d'utiliser les fixtures de la base de données. @@ -368,31 +368,31 @@ première fixture, qui sera utilisée pour tester notre propre model Article. Crée un fichier nommé ``ArticleFixture.php`` dans votre répertoire ``app/Test/Fixture`` avec le contenu suivant:: - class ArticleFixture extends CakeTestFixture { + class ArticleFixture extends CakeTestFixture { /* Optionel. Définir cette propriété pour charger les fixtures dans une source de données de test différente */ public $useDbConfig = 'test'; - public $fields = array( - 'id' => array('type' => 'integer', 'key' => 'primary'), - 'title' => array('type' => 'string', 'length' => 255, 'null' => false), - 'body' => 'text', - 'published' => array('type' => 'integer', 'default' => '0', 'null' => false), - 'created' => 'datetime', - 'updated' => 'datetime' - ); - public $records = array( - array('id' => 1, 'title' => 'First Article', 'body' => 'First Article Body', 'published' => '1', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'), - array('id' => 2, 'title' => 'Second Article', 'body' => 'Second Article Body', 'published' => '1', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'), - array('id' => 3, 'title' => 'Third Article', 'body' => 'Third Article Body', 'published' => '1', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31') - ); - } + public $fields = array( + 'id' => array('type' => 'integer', 'key' => 'primary'), + 'title' => array('type' => 'string', 'length' => 255, 'null' => false), + 'body' => 'text', + 'published' => array('type' => 'integer', 'default' => '0', 'null' => false), + 'created' => 'datetime', + 'updated' => 'datetime' + ); + public $records = array( + array('id' => 1, 'title' => 'First Article', 'body' => 'First Article Body', 'published' => '1', 'created' => '2007-03-18 10:39:23', 'updated' => '2007-03-18 10:41:31'), + array('id' => 2, 'title' => 'Second Article', 'body' => 'Second Article Body', 'published' => '1', 'created' => '2007-03-18 10:41:23', 'updated' => '2007-03-18 10:43:31'), + array('id' => 3, 'title' => 'Third Article', 'body' => 'Third Article Body', 'published' => '1', 'created' => '2007-03-18 10:43:23', 'updated' => '2007-03-18 10:45:31') + ); + } La propriété ``$useDbConfig`` définit la source de données que la fixture va utiliser. Si votre application utilise plusieurs sources de données, vous devriez faire correspondre les fixtures avec les sources de données du model, mais préfixé avec ``test_``. Par exemple, si votre model utilise la source de données ``mydb``, votre -fixture devra utiliser la source de données ``test_mydb``. Si la connection +fixture devra utiliser la source de données ``test_mydb``. Si la connexion ``test_mydb`` n'existe pas, vos models vont utiliser la source de données ``test`` par défaut. Les sources de données de fixture doivent être préfixées par ``test`` pour réduire la possibilité de trucher accidentellement toutes @@ -447,13 +447,13 @@ refléter la date d'aujourd'hui, vous pouvez faire ce qui suit:: class ArticleFixture extends CakeTestFixture { - public $fields = array( - 'id' => array('type' => 'integer', 'key' => 'primary'), - 'title' => array('type' => 'string', 'length' => 255, 'null' => false), - 'body' => 'text', - 'published' => array('type' => 'integer', 'default' => '0', 'null' => false), - 'created' => 'datetime', - 'updated' => 'datetime' + public $fields = array( + 'id' => array('type' => 'integer', 'key' => 'primary'), + 'title' => array('type' => 'string', 'length' => 255, 'null' => false), + 'body' => 'text', + 'published' => array('type' => 'integer', 'default' => '0', 'null' => false), + 'created' => 'datetime', + 'updated' => 'datetime' ); public function init() { @@ -514,14 +514,14 @@ de la table à la place. Par exemple:: } Va importer la définition de la table à partir de la table appelée 'articles' -en utilisant la connection à la base de donnée CakePHP nommée 'default'. -Si vous voulez utiliser une connection différente, utilisez:: +en utilisant la connexion à la base de donnée CakePHP nommée 'default'. +Si vous voulez utiliser une connexion différente, utilisez:: class ArticleFixture extends CakeTestFixture { public $import = array('table' => 'articles', 'connection' => 'other'); } -Puisqu'on utilise votre connection à la base de données CakePHP, si il y a un +Puisqu'on utilise votre connexion à la base de données CakePHP, si il y a un préfixe de table déclaré, il sera automatiquement utilisé quand on récupère l'information de la table. Pour forcer la fixture et aussi importer ses enregistrements, changez l'importation en :: @@ -669,7 +669,7 @@ sur la façon de lancer les cas de test. Quand vous configurez votre Model pour le test, assurez-vous d'utiliser ``ClassRegistry::init('YourModelName');`` puisqu'il sait comment utiliser - la connection à la base de données de votre test. + la connexion à la base de données de votre test. Méthodes de Mocking des models ------------------------------ @@ -1229,7 +1229,7 @@ les fixtures de votre plugin avec ``plugin.blog.blog_post``:: public $BlogPost; public function testSomething() { - // ClassRegistry dit au model d'utiliser la connection à la base de données test + // ClassRegistry dit au model d'utiliser la connexion à la base de données test $this->BlogPost = ClassRegistry::init('Blog.BlogPost'); // faire des tests utiles ici diff --git a/fr/getting-started/cakephp-folder-structure.rst b/fr/getting-started/cakephp-folder-structure.rst old mode 100644 new mode 100755 index 41e28b3f1..a5648041e --- a/fr/getting-started/cakephp-folder-structure.rst +++ b/fr/getting-started/cakephp-folder-structure.rst @@ -77,17 +77,17 @@ Vendor "vendors" à la racine de l'arborescence. Nous aborderons les différences entre les deux lorsque nous discuterons de la gestion multi-applications et des configurations systèmes plus complexes. - + View Les fichiers de présentation sont placés ici : éléments, pages d'erreur, helpers, layouts et vues. - + webroot Dans un environnement de production, ce dossier doit être la racine de votre application. Les sous-répertoires sont utilisés pour les feuilles de style CSS, les images et les fichiers Javascript. - + .. meta:: :title lang=fr: Structure du dossier de CakePHP - :keywords lang=fr: librairies internes,configuration du coeur,descriptions du model,librairies externes,détails de connection,structure de dossier,librairies tierces,engagement personnel,connexion base de données,internationalisation,fichiersd e configuration,dossiers,développement de l'application,à lire,lib,configuré,logs,config,tierce partie,cakephp + :keywords lang=fr: librairies internes,configuration du coeur,descriptions du model,librairies externes,détails de connexion,structure de dossier,librairies tierces,engagement personnel,connexion base de données,internationalisation,fichiersd e configuration,dossiers,développement de l'application,à lire,lib,configuré,logs,config,tierce partie,cakephp diff --git a/fr/installation.rst b/fr/installation.rst old mode 100644 new mode 100755 index 4ef0498d3..b3df10d14 --- a/fr/installation.rst +++ b/fr/installation.rst @@ -171,7 +171,7 @@ devrait ressembler à quelque chose comme ceci dans votre système de fichiers:: /cake_install/ app/ - webroot/ (ce répertoire est défini comme répertoire + webroot/ (ce répertoire est défini comme répertoire ``DocumentRoot``) lib/ plugins/ @@ -204,7 +204,7 @@ Ok, voyons voir CakePHP en action. Selon la configuration que vous utilisez, vous pouvez pointer votre navigateur vers http://exemple.com/ ou http://exemple.com/cake\_install/. A ce niveau, vous serez sur la page home par défaut de CakePHP, et un message qui vous donnera le statut de la -connection de votre base de données courante. +connexion de votre base de données courante. Félicitations! Vous êtes prêt à :doc:`créer votre première application CakePHP `. diff --git a/fr/models/model-attributes.rst b/fr/models/model-attributes.rst old mode 100644 new mode 100755 index 72e79bd67..51c7460cb --- a/fr/models/model-attributes.rst +++ b/fr/models/model-attributes.rst @@ -12,13 +12,13 @@ useDbConfig =========== La propriété ``useDbConfig`` est une chaîne de caractère qui spécifie le nom -de la connection à la base de données à utiliser pour lier votre classe model +de la connexion à la base de données à utiliser pour lier votre classe model à la table de la base de données liée. Vous pouvez la configurer pour n'importe quelles connexions de base de données définies dans votre fichier de configuration database. Le fichier de configuration database est placé dans /app/Config/database.php. -La propriété ``useDbConfig`` est par défaut la connection à la base de +La propriété ``useDbConfig`` est par défaut la connexion à la base de données 'default'. Exemple d'utilisation: @@ -54,7 +54,7 @@ tablePrefix =========== Le nom du préfixe de la table utilisé pour le model. Le préfixe de la table -est initialement configuré dans le fichier de connection à la base de données +est initialement configuré dans le fichier de connexion à la base de données dans /app/Config/database.php. Par défaut il n'y a pas de prefix. Vous pouvez écraser la valeur par défaut en configurant l'attribut ``tablePrefix`` dans le model. @@ -80,7 +80,7 @@ Exemple d'utilisation:: class Example extends AppModel { public $primaryKey = 'example_id'; // example_id est le nom du champ dans la base de données } - + .. _model-displayField: @@ -185,11 +185,11 @@ Exemple d'utilisation:: public $_schema = array( 'first_name' => array( - 'type' => 'string', + 'type' => 'string', 'length' => 30 ), 'last_name' => array( - 'type' => 'string', + 'type' => 'string', 'length' => 30 ), 'email' => array( diff --git a/fr/plugins.rst b/fr/plugins.rst old mode 100644 new mode 100755 index 7dacabf1e..11d543f6f --- a/fr/plugins.rst +++ b/fr/plugins.rst @@ -64,7 +64,7 @@ loadAll qui s'applique à chaque plugin qui n'a pas de configuration spécifique Chargez le fichier bootstrap à partir de tous les plugins, et les routes à partir du plugin Blog:: - + CakePlugin::loadAll(array( array('bootstrap' => true), 'Blog' => array('routes' => true) @@ -107,7 +107,7 @@ plugin est chargé:: function aCallableFunction($pluginName, $config) { - + } CakePlugin::loadAll(array( @@ -152,7 +152,7 @@ de répertoire basique. Cela devrait ressembler à ceci:: /View /Helper /Layouts - + Notez que le nom du dossier du plugin, '**ContactManager**'. Il est important que ce dossier ait le même nom que le plugin. @@ -239,7 +239,7 @@ Ainsi, nous mettons notre nouveau ContactsController dans ContactManager. Contact sera le model par défaut pour ce controller, cependant, il est inclu pour démontrer comment faire préceder proprement le nom du plugin. - + Si vous souhaitez accéder à ce que nous avons obtenu jusqu'à présent, visitez /contact_manager/contacts. Vous devriez obtenir une erreur "Missing Model" parce que nous n'avons pas un model Contact déjà défini. @@ -346,7 +346,7 @@ Mais garder à l'esprit que la gestion des assets statiques, comme les images, le Javascript et les fichiers CSS des plugins à travers le Dispatcher est incroyablement inefficace. Il est grandement recommandé de les symlinker pour la production. -Par exemple comme ceci:: +Par exemple comme ceci:: ln -s app/Plugin/YourPlugin/webroot/css/yourplugin.css app/webroot/css/yourplugin.css @@ -392,7 +392,7 @@ du component. Par exemple:: // Component défini dans le plugin 'ContactManager' class ExampleComponent extends Component { } - + // dans vos controllers: public $components = array('ContactManager.Exemple'); @@ -403,7 +403,7 @@ La même technique s'applique aux Helpers et aux Behaviors. À la création de Helpers, vous verrez que AppHelper n'est pas automatiquement disponible. Vous pouvez déclarer les ressources dont vous avez besoin avec les uses:: - + // Déclarez le use de AppHelper pour le Helper de votre Plugin App::uses('AppHelper', 'View/Helper'); @@ -455,4 +455,4 @@ applications CakePHP: .. meta:: :title lang=fr: Plugins - :keywords lang=fr: dossier plugin,configuration de la base de données,bootstrap,module de gestion,peu d'espace,connection base de données,webroot,gestion d'utilisateur,contactmanager,tableau,config,cakephp,models,php,répertoires,blog,plugins,applications + :keywords lang=fr: dossier plugin,configuration de la base de données,bootstrap,module de gestion,peu d'espace,connexion base de données,webroot,gestion d'utilisateur,contactmanager,tableau,config,cakephp,models,php,répertoires,blog,plugins,applications -- GitLab From feddd400d6511a8462e9a87eec1b77139f30ccc3 Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Wed, 13 Nov 2013 17:47:45 +0100 Subject: [PATCH 061/458] harmonization of backtick --- fr/tutorials-and-examples/blog/part-two.rst | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) mode change 100644 => 100755 fr/tutorials-and-examples/blog/part-two.rst diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst old mode 100644 new mode 100755 index 9dff8f4ff..a09138126 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -151,7 +151,7 @@ chose comme cela:: Les fichiers des vues de CakePHP sont stockés dans ``/app/views`` à l'intérieur d'un dossier dont le nom correspond à celui du controller (nous aurons à créer -un dossier appelé 'posts' dans ce cas). Pour mettre en forme les données de +un dossier appelé 'Posts' dans ce cas). Pour mettre en forme les données de ces posts dans un joli tableau, le code de notre vue devrait ressembler à quelque chose comme cela:: @@ -161,8 +161,8 @@ quelque chose comme cela:: - - + + @@ -320,7 +320,7 @@ Chaque requête de CakePHP contient un objet ``CakeRequest`` qui est accessible en utilisant ``$this->request``. Cet objet contient des informations utiles sur la requête qui vient d'être reçue, et permet de contrôler les flux de votre application. Dans ce cas, nous utilisons la méthode -:php:meth:`CakeRequest::is()`` pour vérifier que la requête est de type POST. +:php:meth:``CakeRequest::is()`` pour vérifier que la requête est de type POST. Lorsqu'un utilisateur utilise un formulaire pour poster des données dans votre application, ces informations sont disponibles dans ``$this->request->data``. @@ -332,10 +332,10 @@ Session (SessionComponent) pour définir un message dans une variable session et qui sera affiché dans la page juste après la redirection. Dans le layout, nous trouvons la fonction :php:func:`SessionHelper::flash` qui permet d'afficher et de nettoyer la variable correspondante. La méthode -:php:meth:`Controller::redirect`` du controller permet de rediriger vers une +:php:meth:`Controller::redirect` du controller permet de rediriger vers une autre URL. Le paramètre ``array('action' => 'index')`` sera traduit vers l'URL /posts, c'est à dire l'action "index" du controller "Posts" (PostsController). -Vous pouvez vous référer à l'API de la fonction :php:func:`Router::url()`` +Vous pouvez vous référer à l'API de la fonction :php:func:`Router::url()` pour voir les différents formats d'URL acceptés dans les différentes fonctions de CakePHP. @@ -433,7 +433,7 @@ plus d'informations sur cette configuration, consultez le chapitre Maintenant que vos règles de validation sont en place, utilisez l'application pour essayer d'ajouter un post avec un titre et un contenu vide afin de voir comment cela fonctionne. Puisque que nous avons utilisé la méthode -:php:meth:`FormHelper::input()`` du helper "Form" pour créer nos éléments +:php:meth:`FormHelper::input()` du helper "Form" pour créer nos éléments de formulaire, nos messages d'erreurs de validation seront affichés automatiquement. @@ -470,7 +470,7 @@ ressembler:: } Cette action s'assure d'abord que l'utilisateur a essayé d'accéder à un -enregistrement existant. Si il n'y a pas de paramètre ``$id`` passé, ou si le +enregistrement existant. S'il n'y a pas de paramètre ``$id`` passé, ou si le post n'existe pas, nous lançons une ``NotFoundException`` pour que le gestionnaire d'Erreurs ErrorHandler de CakePHP s'en occupe. @@ -479,7 +479,7 @@ l'est, alors nous utilisons les données POST pour mettre à jour notre enregistrement Post, ou sortir et montrer les erreurs de validation à l'utilisateur. -Si il n'y a pas de données définies dans ``$this->request->data``, nous le +S'il n'y a pas de données définies dans ``$this->request->data``, nous le définissons simplement dans le post récupéré précédemment. La vue d'édition devrait ressembler à quelque chose comme cela: @@ -531,7 +531,7 @@ Vous pouvez maintenant mettre à jour votre vue "index" avec des liens pour Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?>
    IdTitleCreatedTitreCréé le
    - Html->link('Edit', array('action' => 'edit', $post['Post']['id'])); ?> + Html->link('Editer', array('action' => 'edit', $post['Post']['id'])); ?> @@ -553,7 +553,7 @@ Posts (PostsController):: throw new MethodNotAllowedException(); } if ($this->Post->delete($id)) { - $this->Session->setFlash(__('Le post avec id: %s a été supprimé.', h($id))); + $this->Session->setFlash(__('Le post avec id : %s a été supprimé.', h($id))); return $this->redirect(array('action' => 'index')); } } @@ -598,7 +598,7 @@ ainsi : Form->postLink( 'Delete', - array('action' => 'delete', $post['Post']['id']), + array('action' => 'Supprimer', $post['Post']['id']), array('confirm' => 'Etes-vous sûr ?')); ?> Html->link('Editer', array('action' => 'edit', $post['Post']['id'])); ?> -- GitLab From b9638c7c2a2cda8e23e27bebacb0415bdb152318 Mon Sep 17 00:00:00 2001 From: Bryan Crowe Date: Wed, 13 Nov 2013 23:18:42 -0500 Subject: [PATCH 062/458] Update Appendices to be version neutral --- en/appendices.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/appendices.rst b/en/appendices.rst index 9cbb3d4ab..fa818df38 100644 --- a/en/appendices.rst +++ b/en/appendices.rst @@ -2,7 +2,7 @@ Appendices ########## Appendices contain information regarding the new features -introduced in 2.0, and the migration path from 1.3 to 2.0. +introduced in 2.x, and the migration path from 1.3 to 2.0. 2.4 Migration Guide =================== -- GitLab From 917498a139993b2e65bd4ea5db38a0262644f4d6 Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Thu, 14 Nov 2013 10:08:27 +0100 Subject: [PATCH 063/458] double backtick => simple backtick --- fr/tutorials-and-examples/blog/part-two.rst | 118 ++++++++++---------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst index a09138126..2e668d3cd 100755 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -9,16 +9,16 @@ créant un model CakePHP qui interagira avec notre base de données, nous aurons mis en place les fondations nécessaires pour faire plus tard nos opérations de lecture, d'insertion, d'édition et de suppression. -Les fichiers des classes Model de CakePHP se trouvent dans ``/app/Model``, +Les fichiers des classes Model de CakePHP se trouvent dans `/app/Model`, et le fichier que nous allons créer maintenant sera enregistré dans -``/app/Model/Post.php``. Le fichier complet devrait ressembler à ceci :: +`/app/Model/Post.php`. Le fichier complet devrait ressembler à ceci :: class Post extends AppModel { } La convention de nommage est vraiment très importante dans CakePHP. En nommant notre model Post, CakePHP peut automatiquement déduire que ce model sera -utilisé dans le controller PostsController, et sera lié à la table ``posts`` +utilisé dans le controller PostsController, et sera lié à la table `posts` de la base de données. .. note:: @@ -41,8 +41,8 @@ Nous allons maintenant créer un controller pour nos posts. Le controller est l'endroit où s'exécutera toute la logique métier pour l'intéraction du processus de post. En un mot, c'est l'endroit où vous jouerez avec les models et où les tâches liées aux posts s'exécutent. Nous placerons ce nouveau -controller dans un fichier appelé ``PostsController.php`` à l'intérieur du -dossier ``/app/Controller``. Voici à quoi devrait ressembler le controller +controller dans un fichier appelé `PostsController.php` à l'intérieur du +dossier `/app/Controller`. Voici à quoi devrait ressembler le controller de base :: class PostsController extends AppController { @@ -54,7 +54,7 @@ souvent une simple fonction ou une interface dans une application. Par exemple, quand les utilisateurs requêtent www.exemple.com/posts/index (qui est également la même chose que www.exemple.com/posts/), ils pourraient s'attendre à voir une liste de posts. Le code pour cette action devrait ressembler à -quelque chose comme ça:: +quelque chose comme ça :: class PostsController extends AppController { public $helpers = array('Html', 'Form'); @@ -64,10 +64,10 @@ quelque chose comme ça:: } } -En définissant la fonction ``index()`` dans notre PostsController, les +En définissant la fonction `index()` dans notre PostsController, les utilisateurs peuvent maintenant accéder à cette logique en demandant www.exemple.com/posts/index. De la même façon, si nous devions définir une -fonction appelée ``foobar()``, les utilisateurs pourrait y accéder en demandant +fonction appelée `foobar()`, les utilisateurs pourrait y accéder en demandant www.exemple.com/posts/foobar. .. warning:: @@ -79,10 +79,10 @@ www.exemple.com/posts/foobar. URLs à votre code en utilisant ce qu'on appelle des "routes", on le verra plus tard. -La seule instruction que cette action utilise est ``set()``, pour transmettre +La seule instruction que cette action utilise est `set()`, pour transmettre les données du controller à la vue (que nous créerons à la prochaine étape). La ligne définit la variable de vue appelée 'posts' qui est égale à la valeur -de retour de la méthode ``find('all')`` du model Post. Notre model Post est +de retour de la méthode `find('all')` du model Post. Notre model Post est automatiquement disponible via $this->Post, parce que nous avons suivi les conventions de nommage de CakePHP. @@ -106,9 +106,9 @@ ils peuvent être définis et interchangés, mais pour le moment, utilisons juste celui par défaut. Vous souvenez-vous, dans la dernière section, comment nous avions assigné -la variable 'posts' à la vue en utilisant la méthode ``set()`` ? +la variable 'posts' à la vue en utilisant la méthode `set()` ? Cela devrait transmettre les données à la vue qui ressemblerait à quelque -chose comme cela:: +chose comme cela :: // print_r($posts) sort: @@ -149,11 +149,11 @@ chose comme cela:: ) ) -Les fichiers des vues de CakePHP sont stockés dans ``/app/views`` à l'intérieur +Les fichiers des vues de CakePHP sont stockés dans `/app/views` à l'intérieur d'un dossier dont le nom correspond à celui du controller (nous aurons à créer un dossier appelé 'Posts' dans ce cas). Pour mettre en forme les données de ces posts dans un joli tableau, le code de notre vue devrait ressembler à -quelque chose comme cela:: +quelque chose comme cela :: @@ -182,14 +182,14 @@ quelque chose comme cela:: Bien entendu, cela donnera quelque chose de simple. -Vous avez sans doute remarqué l'utilisation d'un objet appelé ``$this->Html``. +Vous avez sans doute remarqué l'utilisation d'un objet appelé `$this->Html`. C'est une instance de la classe CakePHP :php:class:`HtmlHelper`. CakePHP est livré avec un ensemble de "helpers" (des assistants) pour les vues, qui réalisent en un clin d'oeil des choses comme le "linking" (mettre les liens dans un texte), l'affichage des formulaires, du JavaScript et de l'AJAX. Vous pouvez en apprendre plus sur la manière de les utiliser dans le chapitre :doc:`/views/helpers`, mais ce qu'il est important de noter ici, c'est que la -méthode ``link()`` génèrera un lien HTML à partir d'un titre (le premier +méthode `link()` génèrera un lien HTML à partir d'un titre (le premier paramètre) et d'une URL (le second paramètre). Lorsque vous indiquez des URLs dans CakePHP, il est recommandé d'utiliser les @@ -208,7 +208,7 @@ cette vue (le lien sur le titre d'un post mène à l'URL : l'action n'a pas encore été définie. Si vous n'avez pas été informé, soit quelque chose s'est mal passé, soit en fait vous aviez déjà défini l'action, auquel cas vous êtes vraiment sournois ! Sinon, nous allons la créer sans plus -tarder dans le Controller Posts:: +tarder dans le Controller Posts :: class PostsController extends AppController { public $helpers = array('Html', 'Form'); @@ -230,24 +230,24 @@ tarder dans le Controller Posts:: } } -L'appel de ``set()`` devrait vous être familier. Notez que nous utilisons -``findById()`` plutôt que ``find('all')`` parce que nous voulons seulement +L'appel de `set()` devrait vous être familier. Notez que nous utilisons +`findById()` plutôt que `find('all')` parce que nous voulons seulement récupérer les informations d'un seul post. Notez que notre action "view" prend un paramètre : l'ID du post que nous aimerions voir. Ce paramètre est transmis à l'action grâce à l'URL demandée. Si un utilisateur demande /posts/view/3, alors la valeur '3' est transmise -à la variable ``$id``. +à la variable `$id`. Nous faisons aussi une petite vérification d'erreurs pour nous assurer qu'un utilisateur accède bien à l'enregsitrement. Si un utilisateur requête -``/posts/view``, nous lancerons un ``NotFoundException`` et laisserons +`/posts/view`, nous lancerons un `NotFoundException` et laisserons le Gestionnaire d'Erreur de CakePHP ErrorHandler prendre le dessus. Nous exécutons aussi une vérification similaire pour nous assurer que l'utilisateur a accède à un enregistrement qui existe. Maintenant, créons la vue pour notre nouvelle action "view" et plaçons-la -dans ``/app/View/Posts/view.ctp``. +dans `/app/View/Posts/view.ctp`. .. code-block:: php @@ -260,7 +260,7 @@ dans ``/app/View/Posts/view.ctp``.

    Vérifiez que cela fonctionne en testant les liens de la page /posts/index -ou en affichant manuellement un post via ``/posts/view/1``. +ou en affichant manuellement un post via `/posts/view/1`. Ajouter des Posts ================= @@ -268,8 +268,8 @@ Ajouter des Posts Lire depuis la base de données et nous afficher les posts est un bon début, mais lançons-nous dans l'ajout de nouveaux posts. -Premièrement, commençons par créer une action ``add()`` dans le -PostsController:: +Premièrement, commençons par créer une action `add()` dans le +PostsController :: class PostsController extends AppController { public $helpers = array('Html', 'Form', 'Session'); @@ -310,20 +310,20 @@ PostsController:: utiliserez. Si nécessaire, incluez-les dans le controller principal (AppController) pour qu'ils soient accessibles à tous les controllers. -Voici ce que fait l'action ``add()`` : si la requête HTTP est de type POST, +Voici ce que fait l'action `add()` : si la requête HTTP est de type POST, essayez de sauvegarder les données en utilisant le model "Post". Si pour une raison quelconque, la sauvegarde a échouée, affichez simplement la vue. Cela nous donne une chance de voir les erreurs de validation de l'utilisateur et d'autres avertissements. -Chaque requête de CakePHP contient un objet ``CakeRequest`` qui est accessible -en utilisant ``$this->request``. Cet objet contient des informations utiles +Chaque requête de CakePHP contient un objet `CakeRequest` qui est accessible +en utilisant `$this->request`. Cet objet contient des informations utiles sur la requête qui vient d'être reçue, et permet de contrôler les flux de votre application. Dans ce cas, nous utilisons la méthode -:php:meth:``CakeRequest::is()`` pour vérifier que la requête est de type POST. +:php:meth:`CakeRequest::is()` pour vérifier que la requête est de type POST. Lorsqu'un utilisateur utilise un formulaire pour poster des données dans votre -application, ces informations sont disponibles dans ``$this->request->data``. +application, ces informations sont disponibles dans `$this->request->data`. Vous pouvez utiliser les fonctions :php:func:`pr()` ou :php:func:`debug()` pour les afficher si vous voulez voir à quoi cela ressemble. @@ -333,13 +333,13 @@ et qui sera affiché dans la page juste après la redirection. Dans le layout, nous trouvons la fonction :php:func:`SessionHelper::flash` qui permet d'afficher et de nettoyer la variable correspondante. La méthode :php:meth:`Controller::redirect` du controller permet de rediriger vers une -autre URL. Le paramètre ``array('action' => 'index')`` sera traduit vers l'URL +autre URL. Le paramètre `array('action' => 'index')` sera traduit vers l'URL /posts, c'est à dire l'action "index" du controller "Posts" (PostsController). Vous pouvez vous référer à l'API de la fonction :php:func:`Router::url()` pour voir les différents formats d'URL acceptés dans les différentes fonctions de CakePHP. -L'appel de la méthode ``save()`` vérifiera les erreurs de validation et +L'appel de la méthode `save()` vérifiera les erreurs de validation et interrompra l'enregistrement si une erreur survient. Nous verrons la façon dont les erreurs sont traitées dans les sections suivantes. @@ -353,7 +353,7 @@ et plus rapide. Pour tirer profit des fonctionnalités de validation, vous devez utiliser le helper "Form" (FormHelper) dans vos vues. :php:class:`FormHelper` est -disponible par défaut dans toutes les vues avec la variables ``$this->Form``. +disponible par défaut dans toutes les vues avec la variables `$this->Form`. Voici le code de notre vue "add" (ajout) @@ -371,34 +371,34 @@ Voici le code de notre vue "add" (ajout) Nous utilisons ici le :php:class:`FormHelper` pour générer la balise d'ouverture d'une formulaire HTML. Voici le code HTML généré par -``$this->Form->create()``:: +`$this->Form->create()` :: .. code-block:: html
    -Si ``create()`` est appelée sans aucun paramètre, CakePHP suppose que vous -construisez un formulaire qui envoie les données en POST à l'action ``add()`` -(ou ``edit()`` quand ``id`` est dans les données du formulaire) du controller +Si `create()` est appelée sans aucun paramètre, CakePHP suppose que vous +construisez un formulaire qui envoie les données en POST à l'action `add()` +(ou `edit()` quand `id` est dans les données du formulaire) du controller actuel. -La méthode ``$this->Form->input()`` est utilisée pour créer des élements de +La méthode `$this->Form->input()` est utilisée pour créer des élements de formulaire du même nom. Le premier paramètre dit à CakePHP à quels champs ils correspondent et le second paramètre vous permet de spécifier un large éventail d'options - dans ce cas, le nombre de lignes du textarea. Il y a un peu -d'introspection et "d'automagie" ici : ``input()`` affichera différents +d'introspection et "d'automagie" ici : `input()` affichera différents éléments de formulaire selon le champ spécifié du model. -L'appel de la méthode ``$this->Form->end()`` génère un bouton de soumission +L'appel de la méthode `$this->Form->end()` génère un bouton de soumission et ajoute la balise de fermeture du formulaire. Si une chaîne de caractères est -passée comme premier paramètre de la méthode ``end()``, le helper "Form" +passée comme premier paramètre de la méthode `end()`, le helper "Form" affichera un bouton de soumission dont le nom correspond à celle-ci. Encore une fois, référez-vous au chapitre :doc:`/views/helpers` pour en savoir plus sur les helpers. A présent, revenons en arrière et modifions notre vue -``/app/View/Posts/index.ctp`` pour ajouter un lien "Ajouter un post". Ajoutez -la ligne suivante avant ```` :: +`/app/View/Posts/index.ctp` pour ajouter un lien "Ajouter un post". Ajoutez +la ligne suivante avant `
    ` :: Html->link( 'Ajouter un Post', @@ -408,7 +408,7 @@ la ligne suivante avant ``
    `` :: Vous vous demandez peut-être : comment je fais pour indiquer à CakePHP mes exigences de validation ? Les règles de validation sont définies dans le model. Retournons donc à notre model Post et procédons à quelques -ajustements:: +ajustements :: class Post extends AppModel { public $validate = array( @@ -421,8 +421,8 @@ ajustements:: ); } -Le tableau ``$validate`` indique à CakePHP comment valider vos données -lorsque la méthode ``save()`` est appelée. Ici, j'ai spécifié que les +Le tableau `$validate` indique à CakePHP comment valider vos données +lorsque la méthode `save()` est appelée. Ici, j'ai spécifié que les deux champs "body" et "title" ne doivent pas être vides. Le moteur de validation de CakePHP est puissant, il dispose d'un certain nombre de règles intégrées (code de carte bancaire, adresse emails, etc.) @@ -442,8 +442,8 @@ Editer des Posts L'édition de posts : nous y voilà. Vous êtes un pro de CakePHP maintenant, vous devriez donc avoir adopté le principe. Créez d'abord l'action puis la vue. -Voici à quoi l'action ``edit()`` du controller Posts (PostsController) devrait -ressembler:: +Voici à quoi l'action `edit()` du controller Posts (PostsController) devrait +ressembler :: public function edit($id = null) { if (!$id) { @@ -470,8 +470,8 @@ ressembler:: } Cette action s'assure d'abord que l'utilisateur a essayé d'accéder à un -enregistrement existant. S'il n'y a pas de paramètre ``$id`` passé, ou si le -post n'existe pas, nous lançons une ``NotFoundException`` pour que le +enregistrement existant. S'il n'y a pas de paramètre `$id` passé, ou si le +post n'existe pas, nous lançons une `NotFoundException` pour que le gestionnaire d'Erreurs ErrorHandler de CakePHP s'en occupe. Ensuite l'action vérifie si la requête est une requête POST ou PUT. Si elle @@ -479,7 +479,7 @@ l'est, alors nous utilisons les données POST pour mettre à jour notre enregistrement Post, ou sortir et montrer les erreurs de validation à l'utilisateur. -S'il n'y a pas de données définies dans ``$this->request->data``, nous le +S'il n'y a pas de données définies dans `$this->request->data`, nous le définissons simplement dans le post récupéré précédemment. La vue d'édition devrait ressembler à quelque chose comme cela: @@ -503,7 +503,7 @@ les messages d'erreur de validation nécessaires. Une chose à noter ici : CakePHP supposera que vous éditez un model si le champ 'id' est présent dans le tableau de données. S'il n'est pas présent (ce qui revient à notre vue "add"), CakePHP supposera que vous insérez un nouveau model -lorsque ``save()`` sera appelée. +lorsque `save()` sera appelée. Vous pouvez maintenant mettre à jour votre vue "index" avec des liens pour éditer des posts : @@ -545,8 +545,8 @@ Supprimer des Posts =================== A présent, mettons en place un moyen de supprimer les posts pour les -utilisateurs. Démarrons avec une action ``delete()`` dans le controller -Posts (PostsController):: +utilisateurs. Démarrons avec une action `delete()` dans le controller +Posts (PostsController) :: public function delete($id) { if ($this->request->is('get')) { @@ -559,8 +559,8 @@ Posts (PostsController):: } Cette logique supprime le Post spécifié par $id, et utilise -``$this->Session->setFlash()`` pour afficher à l'utilisateur un message de -confirmation après l'avoir redirigé sur ``/posts``. Si l'utilisateur tente +`$this->Session->setFlash()` pour afficher à l'utilisateur un message de +confirmation après l'avoir redirigé sur `/posts`. Si l'utilisateur tente une suppression en utilisant une requête GET, une exception est levée. Les exceptions manquées sont capturées par le gestionnaire d'exceptions de CakePHP et un joli message d'erreur est affiché. Il y a plusieurs @@ -639,7 +639,7 @@ de votre site (par ex: http://www.exemple.com) vers le controller Pages cela, nous voudrions la remplacer avec notre controller Posts (PostsController). -Le routage de CakePHP se trouve dans ``/app/Config/routes.php``. Vous devrez +Le routage de CakePHP se trouve dans `/app/Config/routes.php`. Vous devrez commenter ou supprimer la ligne qui définit la route par défaut. Elle ressemble à cela :: @@ -651,14 +651,14 @@ la ligne par celle-ci :: Router::connect('/', array('controller' => 'posts', 'action' => 'index')); -Cela devrait connecter les utilisateurs demandant '/' à l'action ``index()`` de +Cela devrait connecter les utilisateurs demandant '/' à l'action `index()` de notre controller Posts (PostsController). .. note:: CakePHP peut aussi faire du 'reverse routing' (ou routage inversé). Par exemple, pour la route définie plus haut, en ajoutant - ``array('controller' => 'posts', 'action' => 'index')`` à la fonction + `array('controller' => 'posts', 'action' => 'index')` à la fonction retournant un tableau, l'URL '/' sera utilisée. Il est d'ailleurs bien avisé de toujours utiliser un tableau pour les URLs afin que vos routes définissent où vont les URLs, mais aussi pour s'assurer qu'elles aillent -- GitLab From 340b2d72ab10ffa5adf8b064d0c1c550d3cd7286 Mon Sep 17 00:00:00 2001 From: cake17 Date: Fri, 15 Nov 2013 14:35:13 +0100 Subject: [PATCH 064/458] [fr] Follow #890 Update Appendices to be version neutral --- fr/appendices.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/appendices.rst b/fr/appendices.rst index f06db3912..aa1915b68 100644 --- a/fr/appendices.rst +++ b/fr/appendices.rst @@ -2,7 +2,7 @@ Annexes ####### Les annexes contiennent des informations sur les nouvelles fonctionnalités -de la version 2.0 ainsi qu'un guide de migration de la version 1.3 vers 2.0. +de la version 2.x ainsi qu'un guide de migration de la version 1.3 vers 2.0. 2.4 Guide de Migration ====================== -- GitLab From a072b05c9af58a7c504e5d1fbbed5d8df427c5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=BCrth?= Date: Sun, 17 Nov 2013 03:27:52 +0100 Subject: [PATCH 065/458] Replaced deprecated AuthComponent::password with SimplePasswordHasher::hash Alternative change to https://github.com/cakephp/docs/pull/895 --- en/tutorials-and-examples/blog-auth-example/auth.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/en/tutorials-and-examples/blog-auth-example/auth.rst b/en/tutorials-and-examples/blog-auth-example/auth.rst index 6faec00ce..e83028eb5 100644 --- a/en/tutorials-and-examples/blog-auth-example/auth.rst +++ b/en/tutorials-and-examples/blog-auth-example/auth.rst @@ -211,23 +211,24 @@ Password hashing is not done yet, open your ``app/Model/User.php`` model file and add the following:: // app/Model/User.php - App::uses('AuthComponent', 'Controller/Component'); + App::uses('SimplePasswordHasher', 'Controller/Component/Auth'); + class User extends AppModel { // ... public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { - $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); + $passwordHasher = new SimplePasswordHasher(); + $this->data[$this->alias]['password'] = $passwordHasher->hash($this->data[$this->alias]['password']); } return true; } // ... -So, now every time a user is saved, the password is hashed using the default hashing -provided by the AuthComponent class. We're just missing a template view file for -the login function, here it is: +So, now every time a user is saved, the password is hashed using the SimplePasswordHasher class. +We're just missing a template view file for the login function: .. code-block:: php -- GitLab From 5addb5c30c5ad2ba44f3dab4aeea241d932e2e1a Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Sun, 17 Nov 2013 19:36:55 +0900 Subject: [PATCH 066/458] [ja] Add 2.3, 2.4 migration guide and follow #890 --- ja/appendices.rst | 18 +- ja/appendices/2-3-migration-guide.rst | 371 ++++++++++++++++++++++++++ ja/appendices/2-4-migration-guide.rst | 328 +++++++++++++++++++++++ 3 files changed, 716 insertions(+), 1 deletion(-) create mode 100644 ja/appendices/2-3-migration-guide.rst create mode 100644 ja/appendices/2-4-migration-guide.rst diff --git a/ja/appendices.rst b/ja/appendices.rst index f6cd4f7ed..1633a5c1a 100644 --- a/ja/appendices.rst +++ b/ja/appendices.rst @@ -1,7 +1,23 @@ 付録 #### -付録は2.0で導入された新機能に関する情報と、1.3から2.0への移行の道程を含みます。 +付録は2.xで導入された新機能に関する情報と、1.3から2.0への移行の道程を含みます。 + +2.4 移行ガイド +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-4-migration-guide + +2.3 移行ガイド +============== + +.. toctree:: + :maxdepth: 1 + + appendices/2-3-migration-guide 2.2移行ガイド ============= diff --git a/ja/appendices/2-3-migration-guide.rst b/ja/appendices/2-3-migration-guide.rst new file mode 100644 index 000000000..015a649d7 --- /dev/null +++ b/ja/appendices/2-3-migration-guide.rst @@ -0,0 +1,371 @@ +2.3移行ガイド +################### + +CakePHP 2.3 は、2.2 の API の完全上位互換です。 +このページでは、2.3 の変更と改善についてのアウトラインを紹介します。 + + +定数 +========= + +アプリケーションで :php:const:`CACHE` と :php:const:`LOGS` の定数を簡単に定義できます。 +いまは条件付きで CakePHP により定義されています。 + +キャッシュ +=========== + +- FileEngine はデフォルトのキャッシュエンジンです。 + これまで、たくさんの人々が CLI と Web の双方で正しく APC が動作させようと + セットアップに難儀していました。 + ファイルを利用することにより、新規の開発者のセットアップが容易になります。 + +- `Configure::write('Cache.viewPrefix', 'YOURPREFIX');` が `core.php` に + 追加されました。これによりセットアップごとに複数のドメインや言語が利用できます。 + + +コンポーネント +=============== + +AuthComponent +------------------- +- ``AuthComponent::$unauthorizedRedirect`` が新規プロパティとして追加されました。 + + - デフォルトは ``true`` です。認証エラーの場合はリファラ URL へリダイレクトされます。 + - 文字列または配列をセットした場合は、その URL へリダイレクトされます。 + - false をセットした場合は、リダイレクトせずに ForbiddenException を投げます。 + +- 新しい認証アダプタとして blowfish/bcrypt がパスワードハッシュで利用できるようになりました。 + ``$authenticate`` の配列に ``Blowfish`` を追加することで、bcrypt パスワードが利用できます。 + +- :php:meth:`AuthComponent::redirect()` は非推奨となりました。 + :php:meth:`AuthComponent::redirectUrl()` を代わりに利用して下さい。 + + + +PaginatorComponent +------------------ + +- PaginatorComponent は、 ``findType`` オプションをサポートしました。 + これは、ページネーションで利用したいメソッドを見つけるのに役立ちます。 + 0番目のインデックスを管理・設定するよりも少しだけ簡単になっています。 + +- PaginatorComponent は、範囲外のページにアクセスしようとした場合(例えば、 + リクエストされたページが全ページのカウントよりも大きかった場合など)に + `NotFoundException` を投げるようになりました。 + + +SecurityComponent +----------------- + +- SecurityComponent は、 ``unlockedActions`` オプションをサポートしました。 + これは、このオプションに書かれた全てのアクションで、セキュリティチェックを + 全く行わないようになります。 + + +RequestHandlerComponent +----------------------- + +- :php:meth:`RequestHandlerComponent::viewClassMap()` が追加されました。 + これは、ビューのクラス名のマッピングに利用されます。 + 拡張子やコンテンツに応じた正しいビュークラスを自動的にセッティングするために + ``$settings['viewClassMap']`` を使用できます。 + +CookieComponent +--------------- + +- :php:meth:`CookieComponent::check()` が追加されました。 + :php:meth:`CakeSession::check()` と同じ動作です。 + + +コンソール +============ + +- ``server`` シェルが追加されました。 + PHP5.4 の Web サーバ機能を CakePHP アプリケーションで利用することができます。 + +- 新しいアプリケーションを Bake する場合に、アプリケーション名をキャッシュの + prefix にセットするようになりました。 + + +I18n +==== + +L10n +---- + +- ISO 639-3 で定義されている ``nld`` がオランダ語のデフォルトロケールになり、 + ``dut`` はそのエイリアスとなりました。ロケールのフォルダは、 + `/Locale/dut/` から `/Locale/nld/` へ変更となりました。 + +- アルバニア語は ``sqi`` 、バスク語は ``eus``, 中国語は ``zho`` 、チベット語は ``bod`` 、 + チェコ語は ``ces`` 、ペルシア語は ``fas`` 、フランス語は ``fra`` 、アイスランド語は ``isl`` 、 + マケドニア語は ``mkd`` 、マレー語は ``msa`` 、ルーマニア語は ``ron`` 、セルビア語は ``srp`` 、 + スロバキア語は ``slk`` にそれぞれなりました。同様にロケールのフォルダも変更になりました。 + + +コア +====== + +CakePlugin +---------- + +- :php:meth:`CakePlugin::load()` に ``ignoreMissing`` オプションが新たに加わりました。 + これを true にセットすると、route や bootstrap でロードしようとしたプラグインが + 見つからない場合でもエラーとなるのを防いでくれます。 + つまり、route または bootstrap で見つかる全てのプラグインを読み込むには次のような構文を使います:: + ``CakePlugin::loadAll(array(array('routes' => true, 'bootstrap' => true, 'ignoreMissing' => true)))`` + + +Configure +--------- + +- :php:meth:`Configure::check()` が追加されました。 + :php:meth:`CakeSession::check()` と同じ動作です。 + +- :php:meth:`ConfigReaderInterface::dump()` が追加されました。 + コンフィグを読み込むカスタム実装を作成している場合は、 ``dump()`` メソッドも実装して下さい。 + +- :php:meth:`IniReader::dump()` の ``$key`` パラメータは、``PhpReader::dump()`` + と同じような `PluginName.keyname` 形式のキーをサポートしました。 + + + +エラー +======== + +Exceptions +---------- + +- CakeBaseException が追加され、全ての Exception がこれを継承する形になりました。 + ベースとなる Exception クラスは、Exception インスタンスの生成時に、 + HTTP ヘッダやレスポンスを生成する ``responseHeader()`` メソッドを発動します。 + 任意のレスポンスインスタンスを Exception として利用しないでください。 + + +モデル +======== + +- 全てのコアデータソースとフィクスチャで biginteger タイプをサポートしました。 +- MySQL ドライバで ``FULLTEXT`` インデックスをサポートしました。 + + +Models +------ + +- ``Model::find('list')`` は ContainableBehavior で利用する場合、最大包括深度 + もしくは再帰値を元にした ``recursive``をセットするようになりました。 + +- ``Model::find('first')`` は、ひとつもレコードが見つからなかった場合に、 + 空の配列を返すようになりました。 + + +Validation +---------- + +- バリデーションメソッドが見つからなかった場合、これまでのように + development モードだけでなく、 **常に** エラーを吐くようになりました。 + + +ネットワーク +============== + +SmtpTransport +------------- + +- SMTP コネクションで TLS/SSL がサポートされました。 + +CakeRequest +----------- + +- :php:meth:`CakeRequest::onlyAllow()` が追加されました。 +- :php:meth:`CakeRequest::query()` が追加されました。 + + +CakeResponse +------------ + +- :php:meth:`CakeResponse::file()` が追加されました。 +- `application/javascript` と `application/xml` 、 `application/rss+xml` の + 各コンテントタイプで charset も送信するようになりました。 + + +CakeEmail +--------- + +- :php:meth:`CakeEmail::attachments()` に ``contentDisposition`` オプションが追加されました。 + 添付ファイルに Content-Disposition ヘッダの付加を抑制することができます。 + + + +HttpSocket +---------- + +- :php:class:`HttpSocket` はデフォルトで SSL 証明書の検証を行うようになりました。 + もし自己署名の証明書やプロキシを利用した接続が必要な場合、新しいオプションを利用してください。 + 詳しくは :ref:`http-socket-ssl-options` を参照して下さい。 + +- ``HttpResponse`` は ``HttpSocketResponse`` に名称変更となりました。 + PECL の HTTP モジュールとの名前衝突を回避します。 + 互換性のために ``HttpResponse`` クラスが提供されています。 + + +ルーティング +============== + +Router +------ + +- :php:meth:`Router::url()` に ``tel:`` と ``sms:`` が追加されました。 + + +ビュー +========= + +- MediaView は非推奨となりました。 + 代わりに :php:class:`CakeResponse` の新しい機能を使うことで同じ結果を得られます。 +- Json と Xml のビューでのシリアライズは ``_serialize()`` へ移動しました。 +- beforeRender と afterRender のコールバックは、Json と Xml ビューで + テンプレートを使った場合にも呼ばれるようになりました。 +- :php:meth:`View::fetch()` は引数 ``$default`` を持つようになりました。 + この引数は、ブロックが空であるものに対し、デフォルト値を設定することができます。 +- :php:meth:`View::prepend()` は既存のブロックへコンテントを差し込めるように追加されました。 +- :php:class:`XmlView` はトップレベルの XML ノードを指定するために + ``_rootNode`` 変数を使用するようになりました。 +- :php:meth:`View::elementExists()` が追加されました。 + エレメントを利用する前に、それが存在するかどうかのチェックに利用できます。 +- :php:meth:`View::element()` に ``ignoreMissing`` オプションが追加されました。 + エレメントが見つからなかった場合のエラー発生を抑制することができます。 +- :php:meth:`View::startIfEmpty()` が追加されました。 + + +Layout +------ + +- app フォルダと cake パッケージ内にある bake 用のテンプレートのレイアウトファイルの + doctype を XHTML から HTML5 へ変更しました。 + + + +ヘルパー +========== + +- ヘルパーのセッティングに使う ``Helper::$settings`` プロパティが追加されました。 + ``Helper::__construct()`` の ``$settings`` パラメータは ``Helper::$settings`` + とマージされます。 + + +FormHelper +---------- + +- :php:meth:`FormHelper::select()` は disabled のアトリビュートの値を許可するようになりました。 + ``'multiple' => 'checkbox'`` と組み合わせることで、disabled にしたい値の + リストを提供できるようになります。 +- :php:meth:`FormHelper::postLink()` は ``method`` キーを許可するようになりました。 + これを利用することで、POST 以外の HTTP メソッドを使ってフォームへのリンクを生成できます。 +- :php:meth:`FormHelper::input()` を使って入力を作成した場合に、 ``errorMessage`` + オプションを false にすることができるようになりました。 + これはエラーメッセージの表示を抑制しますが、エラーのクラス名はそのまま残します。 +- FormHelper は、HTML5 の ``required`` アトリビュートを input エレメントの + バリデーションとして付与するようになりました。 + もし、フォームに「キャンセル」ボタンがある場合は、 HTML レベルのバリデーションの + 発動を抑制するために ``'formnovalidate' => true`` をキャンセルボタンのオプションへ + 追加してください。 + FormHelper::create() に ``'novalidate' => true`` オプションを追加することで、 + 全てのエレメントでのバリデーションを抑制することができます。 +- :php:meth:`FormHelper::input()` はフィールド名の名前を元に ``tel`` と + ``email`` タイプを生成するようになりました。ただし、明示的に ``type`` + オプションが指定されている場合を除きます。 + + + +HtmlHelper +---------- + +- :php:meth:`HtmlHelper::getCrumbList()` は ``separator`` と ``firstClass`` 、 + ``lastClass`` オプションが追加されました。 + メソッドが生成する HTML の細かなコントロールができるようになりました。 + + +TextHelper +---------- + +- テキストを終端から切り詰める :php:meth:`TextHelper::tail()` が追加されました。 +- :php:meth:`TextHelper::truncate()` の `ending` は非推奨となり、代わりに `ellipsis` + を利用してください。 + + +PaginatorHelper +--------------- + +- :php:meth:`PaginatorHelper::numbers()` に ``currentTag`` オプションが追加されました。 +- :php:meth:`PaginatorHelper::prev()` と :php:meth:`PaginatorHelper::next()` メソッドで + ``tag`` オプションにラッパーを抑制する ``false`` がセットできるようになりました。 + これらの2つのメソッドに `disabledTag` オプションも追加されました。 + + + +テスト +======== + +- コアのフィクスチャのデフォルトに ``cake_sessions`` テーブルが追加されました。 + フィクスチャのリストに ``core.cake_sessions`` を追加することで利用できます。 +- :php:meth:`CakeTestCase::getMockForModel()` が追加されました。 + モデルオブジェクトのモックを簡単に取得することができます。 + + + +ユーティリティ +================ + +CakeNumber +---------- + +- :php:meth:`CakeNumber::fromReadableSize()` が追加されました。 +- :php:meth:`CakeNumber::formatDelta()` が追加されました。 +- :php:meth:`CakeNumber::defaultCurrency()` が追加されました。 + + +Folder +------ + +- :php:meth:`Folder::copy()` と :php:meth:`Folder::move()` で + 上書きとスキップの機能に加え、ターゲットとソースディレクトリのマージに対応しました。 + + +String +------ + +- テキストを終端から切り詰める :php:meth:`String::tail()` が追加されました。 +- :php:meth:`String::truncate()` の `ending` は非推奨となり、代わりに `ellipsis` + を利用してください。 + + + + + +Debugger +-------- + +- :php:meth:`Debugger::exportVar()` は PHP >= 5.3.0 の場合に private および + protected なプロパティも出力するようになりました。 + + +Security +-------- + +- `bcrypt `_ のサポートが追加されました。 + bcrypt の使用方法の詳細は :php:class:`Security::hash()` のドキュメントを参照して下さい。 + + +Validation +---------- + +- :php:meth:`Validation::fileSize()` が追加されました。 + + +ObjectCollection +---------------- + +- :php:meth:`ObjectCollection::attached()` が非推奨となり、代わりに新しいメソッド + :php:meth:`ObjectCollection::loaded()` を利用して下さい。 + ObjectCollection へのアクセスは attach()/detach() から変更済みの load()/unload() に統一されました。 diff --git a/ja/appendices/2-4-migration-guide.rst b/ja/appendices/2-4-migration-guide.rst new file mode 100644 index 000000000..50dc91ca9 --- /dev/null +++ b/ja/appendices/2-4-migration-guide.rst @@ -0,0 +1,328 @@ +2.4移行ガイド +################### + +CakePHP 2.4 は、2.3 の API の完全上位互換です。 +このページでは、2.4 の変更と改善についてのアウトラインを紹介します。 + +コンソール +============ + +- ターミナルがカラーをサポートしていた場合、notice のメッセージに色が付くようになりました。 +- ConsoleShell は非推奨となりました。 + + +SchemaShell +----------- + +- ``cake schema generate`` は ``--exclude`` パラメータをサポートしました。 +- ``CAKEPHP_SHELL`` 定数は非推奨となりました。CakePHP 3.0 で廃止されます。 + + + +BakeShell +--------- + +- ``cake bake model`` は ``$behaviors`` をサポートしました。 + 例えば、Tree ビヘイビアを追加した場合、テーブルから `lft` や `rght` 、 + `parent_id` のフィールドを探します。 + また、独自のビヘイビアをサポートするために ModelTask を拡張することができます。 +- ビューやモデル、コントローラ、テストおよびフィクスチャの ``cake bake`` において、 + ファイルを強制的に上書きする ``-f`` もしくは ``--force`` パラメータがサポートされました。 +- コアのタスクは、ヘルパーやコンポーネント、ビヘイビアと同じように + エイリアス名を付けることができます。 + + +FixtureTask +----------- + +- ``cake bake fixture`` に ``--schema`` パラメータがサポートされました。 + スキーマのインポートする場合に、非対話型の "all" で全てのフィクスチャを bake することを許可します。 + + +コア +====== + +Constants +--------- + +- ``IMAGES_URL`` 、 ``JS_URL`` 、 ``CSS_URL`` の各定数は非推奨となり、 + ``App.imageBaseUrl`` 、 ``App.jsBaseUrl`` 、 ``App.cssBaseUrl`` + のコンフィグ変数の利用が推奨されます。 +- ``IMAGES`` 、 ``JS`` 、 ``CSS`` は各定数は非推奨となりました。 + + +Object +------ + +- :php:meth:`Object::log()` に ``$scope`` パラメータが追加されました。 + + +コンポーネント +================ + +AuthComponent +------------- +- AuthComponent は 'Basic' もしくは 'Digest' 認証を使ったステートレスなモードをサポートしました。 + :php:attr:`AuthComponent::$sessionKey` を false にすることで、 + セッションの開始を抑制することができます。 + 'Basic' もしくは 'Digest' 認証のみを使った場合、 + ログインページに飛ばされることはなくなりました。 + 更に詳しい情報は :php:class:`AuthComponent` ページを参照して下さい。 +- :php:attr:`AuthComponent::$authError` プロパティを ``false`` にすることで、 + フラッシュメッセージを抑制することができます。 + + +PasswordHasher +-------------- +- 認証のオブジェクトは、パスワードのハッシュ値の生成やチェックに利用できる + 新しいパスワードハッシュオブジェクトを利用可能になりました。 + 詳しくは :ref:`hashing-passwords` を参照して下さい。 + + +DbAcl +----- + +- DbAcl は ``LEFT`` ジョインではなく ``INNER`` ジョインを使用するようになりました。 + これによりいくつかのデータベースでのパフォーマンスが向上します。 + +モデル +======== + +Models +------ + +- :php:meth:`Model::save()` 、 :php:meth:`Model::saveField()` 、 :php:meth:`Model::saveAll()` 、 + :php:meth:`Model::saveAssociated()` 、 :php:meth:`Model::saveMany()` は + 新しく ``counterCache`` オプションを持つようになりました。 + この値を false にセットすることで特定の保存時にカウンタキャッシュを更新を抑制できます。 +- :php:meth:`Model::clear()` が追加されました。 + + + +Datasource +---------- + +- Mysql と Postgres、SQLserver では、接続設定に 'settings' 配列が利用可能になりました。 + このキー・バリューペアは、コネクションの生成時に ``SET`` コマンドとして発行されます。 +- Mysql ドライバが SSL オプションをサポートしました。 + +ビュー +======== + +JsonView +-------- + +- :php:class:`JsonView` に JSONP サポートが追加されました。 +- ``_serialize`` キーは、シリアライズ値の改名をサポートしました。 +- debug > 0 の場合 JSON は表示されます。 + + +XmlView +------- + +- ``_serialize`` キーは、シリアライズ値の改名をサポートしました。 +- debug > 0 の場合 XML は表示されます。 + + +HtmlHelper +---------- + +- :php:meth:`HtmlHelper::css()` 用の API が簡素化されました。 + 2番めの引数として、オプションの配列を渡すことができます。 + オプション配列を渡した場合に ``rel`` アトリビュートのデフォルトは + 'stylesheet' となります。 +- :php:meth:`HtmlHelper::link()` に新しく ``escapeTitle`` オプションが追加されました。 + エスケープ処理をリンクのタイトルだけにし、アトリビュートには影響を及ぼさないための + オプションです。 + + +TextHelper +---------- + +- :php:meth:`TextHelper::autoParagraph()` が追加されました。 + 自動的に HTML の p タグを付与した形に変換します。 + +PaginatorHelper +--------------- + +- :php:meth:`PaginatorHelper::param()` が追加されました。 +- 最初のページには ``/page:1`` や ``?page=1`` が含まれなくなりました。 + これは正規化や noindex 等の処置が必要になっていた複製コンテンツ問題に役立ちます。 + +FormHelper +---------- + +- :php:meth:`FormHelper::dateTime()` に ``round`` オプションが追加されました。 + ``up`` もしくは ``down`` をセットすることで、指定した方向に丸め処理が行われます。 + デフォルトは null で、 ``interval`` に従って四捨五入します。 + + +ネットワーク +=============== + +CakeRequest +----------- + +- :php:meth:`CakeRequest::param()` が追加されました。 +- :php:meth:`CakeRequest::is()` はタイプの配列をサポートし、そのタイプにマッチしていた場合は + true を返すように変更されました。 +- 指定したタイプにマッチするリクエストがどうか判定する :php:meth:`CakeRequest::isAll()` + が追加されました。 + +CakeResponse +------------ + +- リダイレクト用の location ヘッダを設定・取得する :php:meth:`CakeResponse::location()` + が追加されました。 + +CakeEmail +--------- + +- email メッセージのログは ``email`` スコープをデフォルトで持つようになりました。 + もし、ログに email のコンテンツを含めたくなければ、ログの設定に ``email`` + のスコープを追加して下さい。 +- :php:meth:`CakeEmail::emailPattern()` が追加されました。 + このメソッドは、緩いバリデーションルールの利用を許可します。 + これは、規格に合っていないアドレスを利用している特定の日本のホストにおいて有用です。 +- :php:meth:`CakeEmail::attachments()` の ``data`` キーで、直接添付ファイルの + コンテンツを指定することができるようになりました。 +- 設定のデータがトランスポートクラスのデータと正しくマージされるようになりました。 + + + + +HttpSocket +---------- + +- :php:meth:`HttpSocket::patch()` が追加されました。 + + +I18n +==== + +L10n +---- + +- ギリシャ語のデフォルトロケールが ISO 639-3 で定義された ``ell`` になりました。 + ``gre`` はそのエイリアスです。これに伴いロケールのフォルダが変更となりました。 + ( `/Locale/gre/` から `/Locale/ell/` へ) +- ペルシア語のデフォルトロケールが ISO 639-3 で定義された ``fas`` になりました。 + ``per`` はそのエイリアスです。これに伴いロケールのフォルダが変更となりました。 + ( `/Locale/per/` から `/Locale/fas/` へ) +- サーミ語のデフォルトロケールが ISO 639-3 で定義された ``sme`` になりました。 + ``smi`` はそのエイリアスです。これに伴いロケールのフォルダが変更となりました。 + ( `/Locale/smi/` から `/Locale/sme/` へ) +- マケドニア語のデフォルトロケールが ISO 639-3 で定義された ``mkd`` になりました。 + ``mk`` はそのエイリアスです。これに伴い同様にロケールのフォルダが変更となりました。 +- カタログコード ``in`` は削除され ``id`` になりました(インドネシア語)、 + ``e`` は削除され ``el`` になりました(ギリシア語)、 + ``n`` は削除され ``nl`` になりました(オランダ語)、 + ``p`` は削除され ``pl`` になりました(ポーランド語)、 + ``sz`` は削除され ``se`` になりました(サーミ語)。 +- カザフスタン語がロケール ``kaz`` 、カタログコード ``kk`` で追加されました。 +- グリーンランド語がロケール ``kal`` 、カタログコード ``kl`` で追加されました。 +- 定数 ``DEFAULT_LANGUAGE`` は非推奨となり、代わりにコンフィグの ``Config.language`` を利用して下さい。 + +ログ +======= + +- ログエンジンのコンフィグに ``Log`` サフィックスは不要になりました。 + FileLog エンジンを利用するには ``'engine' => 'File'`` と定義して下さい。 + これはコンフィグでエンジンを指定する方法を統一します(例えばキャッシュエンジンを見て下さい) + 注意: 例えばログエンジンとして ``DatabaseLogger`` のように ``Log`` サフィックスが + 付いていない名称を使っていた場合は、 ``DatabaseLog`` のようにクラス名を変更して下さい。 + また、末尾に2回もサフィックスが付くような ``SomeLogLog`` という名称も避けるべきです。 + + +FileLog +------- + +- :ref:`FileLog ` に ``size`` と ``rotate`` の2つの新たな設定オプションが追加されました。 +- デバッグモードの場合で、ディレクトリが存在しなかった際には、不要なエラーを発生させないように + 自動的にディレクトリを作成します。 + + +SyslogLog +--------- + +- 新しいログエンジンとして syslog へ吐き出す :ref:`SyslogLog ` が追加されました。 + + +キャッシュ +============ + +FileEngine +---------- + +- デバッグモードの場合で、ディレクトリが存在しなかった際には、不要なエラーを発生させないように + 自動的にディレクトリを作成します。 + +ユーティリティ +================ + +General +------- + +- CLI で実行した場合、 :php:func:`pr()` は HTML で出力しなくなりました。 + + +Sanitize +-------- + +- ``Sanitize`` クラスは非推奨となりました。 + +Validation +---------- + +- :php:meth:`Validation::date()` が ``y`` と ``ym`` のフォーマットをサポートしました。 +- カナダ用の :php:meth:`Validation::phone()` の国コードが ISO 3166(2文字コード)に統一させるために + ``can`` から ``ca`` へ変更されました。 + +CakeNumber +---------- + +- 通貨 ``AUD`` と ``CAD`` と ``JPY`` が追加されました。 +- ``GBP`` と ``EUR`` のシンボルは UTF-8 になりました。 + UTF-8 でないアプリケーションをアップグレードする場合、HTMLエンティティのシンボル + ( ``£`` と ``€`` )を利用して ``$_currencies`` アトリビュートを + アップデートしてください。 +- :php:meth:`CakeNumber::currency()` に ``fractionExponent`` オプションが追加されました。 + + +CakeTime +-------- + +- :php:meth:`CakeTime::isPast()` と :php:meth:`CakeTime::isFuture()` が追加されました。 +- :php:meth:`CakeTime::timeAgoInWords()` に出力文字列をカスタマイズする2つの + 新しいオプションが追加されました。 + ``relativeString`` (デフォルト ``%s ago`` )と ``absoluteString`` (デフォルト ``on %s`` ) + + +Xml +--- + +- :php:meth:`Xml::fromArray()` にうまくフォーマットされた XML を出力する + ``pretty`` オプションが新たに追加されました。 + + +エラー +======== + +ErrorHandler +------------ + +- 新しい設定オプションに特定の Exception のスキップを許可する ``skipLog`` が追加されました。 + ``Configure::write('Exception.skipLog', array('NotFoundException', 'ForbiddenException'));`` は、 + ``'Exception.log'`` が ``true`` の場合にこれらの例外を除外してロギングします。 + + + +ルーティング +============== + +Router +------ + +- :php:meth:`Router::fullBaseUrl()` がコンフィグ値 ``App.fullBaseUrl`` と共に追加されました。 + これらは非推奨となった :php:const:`FULL_BASE_URL` の代わりに利用します。 +- :php:meth:`Router::parse()` はクエリストリング引数をパースします。 -- GitLab From a2f6591484629684632691ae1764c0111198b61d Mon Sep 17 00:00:00 2001 From: cake17 Date: Mon, 18 Nov 2013 09:24:03 +0100 Subject: [PATCH 067/458] [fr] Follow #896 Replaced deprecated AuthComponent::password with SimplePasswordHasher::h.. --- fr/tutorials-and-examples/blog-auth-example/auth.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fr/tutorials-and-examples/blog-auth-example/auth.rst b/fr/tutorials-and-examples/blog-auth-example/auth.rst index 134c436cc..37a623203 100644 --- a/fr/tutorials-and-examples/blog-auth-example/auth.rst +++ b/fr/tutorials-and-examples/blog-auth-example/auth.rst @@ -208,7 +208,7 @@ et de réaliser l'action connexion et deconnexion:: if ($this->Auth->login()) { return $this->redirect($this->Auth->redirect()); } else { - $this->Session->setFlash(__('Nom d\'user ou mot de passe invalide, réessayer')); + $this->Session->setFlash(__("Nom d'user ou mot de passe invalide, réessayer")); } } } @@ -221,14 +221,15 @@ Le hash du mot de passe n'est pas encore fait, ouvrez votre fichier de model ``app/Model/User.php`` et ajoutez ce qui suit:: // app/Model/User.php - App::uses('AuthComponent', 'Controller/Component'); + App::uses('SimplePasswordHasher', 'Controller/Component/Auth'); class User extends AppModel { // ... public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { - $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); + $passwordHasher = new SimplePasswordHasher(); + $this->data[$this->alias]['password'] = $passwordHasher->hash($this->data[$this->alias]['password']); } return true; } @@ -236,9 +237,8 @@ Le hash du mot de passe n'est pas encore fait, ouvrez votre fichier de model // ... Ainsi, maintenant à chaque fois qu'un user est sauvegardé, le mot de -passe est hashé en utilisant le hashing fourni par défaut par la classe -AuthComponent. Il nous manque juste un fichier template de vue pour la -fonction de connexion, et le voilà: +passe est hashé en utilisant la classe SimplePasswordHasher. Il nous manque +juste un fichier template de vue pour la fonction de connexion: .. code-block:: php -- GitLab From 3dbb4c827cca86fc344469b3a0cf4a5b3a13c71d Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Mon, 18 Nov 2013 15:48:27 +0100 Subject: [PATCH 068/458] fix some backtick --- fr/tutorials-and-examples/blog/part-two.rst | 100 ++++++++++---------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst index 2e668d3cd..9ebcb0855 100755 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -9,16 +9,16 @@ créant un model CakePHP qui interagira avec notre base de données, nous aurons mis en place les fondations nécessaires pour faire plus tard nos opérations de lecture, d'insertion, d'édition et de suppression. -Les fichiers des classes Model de CakePHP se trouvent dans `/app/Model`, +Les fichiers des classes Model de CakePHP se trouvent dans ``/app/Model``, et le fichier que nous allons créer maintenant sera enregistré dans -`/app/Model/Post.php`. Le fichier complet devrait ressembler à ceci :: +``/app/Model/Post.php``. Le fichier complet devrait ressembler à ceci :: class Post extends AppModel { } La convention de nommage est vraiment très importante dans CakePHP. En nommant notre model Post, CakePHP peut automatiquement déduire que ce model sera -utilisé dans le controller PostsController, et sera lié à la table `posts` +utilisé dans le controller PostsController, et sera lié à la table ``posts`` de la base de données. .. note:: @@ -41,8 +41,8 @@ Nous allons maintenant créer un controller pour nos posts. Le controller est l'endroit où s'exécutera toute la logique métier pour l'intéraction du processus de post. En un mot, c'est l'endroit où vous jouerez avec les models et où les tâches liées aux posts s'exécutent. Nous placerons ce nouveau -controller dans un fichier appelé `PostsController.php` à l'intérieur du -dossier `/app/Controller`. Voici à quoi devrait ressembler le controller +controller dans un fichier appelé ``PostsController.php`` à l'intérieur du +dossier ``/app/Controller``. Voici à quoi devrait ressembler le controller de base :: class PostsController extends AppController { @@ -64,10 +64,10 @@ quelque chose comme ça :: } } -En définissant la fonction `index()` dans notre PostsController, les +En définissant la fonction ``index()`` dans notre PostsController, les utilisateurs peuvent maintenant accéder à cette logique en demandant www.exemple.com/posts/index. De la même façon, si nous devions définir une -fonction appelée `foobar()`, les utilisateurs pourrait y accéder en demandant +fonction appelée ``foobar()``, les utilisateurs pourrait y accéder en demandant www.exemple.com/posts/foobar. .. warning:: @@ -79,10 +79,10 @@ www.exemple.com/posts/foobar. URLs à votre code en utilisant ce qu'on appelle des "routes", on le verra plus tard. -La seule instruction que cette action utilise est `set()`, pour transmettre +La seule instruction que cette action utilise est ``set()``, pour transmettre les données du controller à la vue (que nous créerons à la prochaine étape). La ligne définit la variable de vue appelée 'posts' qui est égale à la valeur -de retour de la méthode `find('all')` du model Post. Notre model Post est +de retour de la méthode ``find('all')`` du model Post. Notre model Post est automatiquement disponible via $this->Post, parce que nous avons suivi les conventions de nommage de CakePHP. @@ -106,7 +106,7 @@ ils peuvent être définis et interchangés, mais pour le moment, utilisons juste celui par défaut. Vous souvenez-vous, dans la dernière section, comment nous avions assigné -la variable 'posts' à la vue en utilisant la méthode `set()` ? +la variable 'posts' à la vue en utilisant la méthode ``set()`` ? Cela devrait transmettre les données à la vue qui ressemblerait à quelque chose comme cela :: @@ -149,7 +149,7 @@ chose comme cela :: ) ) -Les fichiers des vues de CakePHP sont stockés dans `/app/views` à l'intérieur +Les fichiers des vues de CakePHP sont stockés dans ``/app/views`` à l'intérieur d'un dossier dont le nom correspond à celui du controller (nous aurons à créer un dossier appelé 'Posts' dans ce cas). Pour mettre en forme les données de ces posts dans un joli tableau, le code de notre vue devrait ressembler à @@ -182,14 +182,14 @@ quelque chose comme cela :: Bien entendu, cela donnera quelque chose de simple. -Vous avez sans doute remarqué l'utilisation d'un objet appelé `$this->Html`. +Vous avez sans doute remarqué l'utilisation d'un objet appelé ``$this->Html``. C'est une instance de la classe CakePHP :php:class:`HtmlHelper`. CakePHP est livré avec un ensemble de "helpers" (des assistants) pour les vues, qui réalisent en un clin d'oeil des choses comme le "linking" (mettre les liens dans un texte), l'affichage des formulaires, du JavaScript et de l'AJAX. Vous pouvez en apprendre plus sur la manière de les utiliser dans le chapitre :doc:`/views/helpers`, mais ce qu'il est important de noter ici, c'est que la -méthode `link()` génèrera un lien HTML à partir d'un titre (le premier +méthode ``link()`` génèrera un lien HTML à partir d'un titre (le premier paramètre) et d'une URL (le second paramètre). Lorsque vous indiquez des URLs dans CakePHP, il est recommandé d'utiliser les @@ -230,24 +230,24 @@ tarder dans le Controller Posts :: } } -L'appel de `set()` devrait vous être familier. Notez que nous utilisons -`findById()` plutôt que `find('all')` parce que nous voulons seulement +L'appel de ``set()`` devrait vous être familier. Notez que nous utilisons +``findById()`` plutôt que ``find('all')`` parce que nous voulons seulement récupérer les informations d'un seul post. Notez que notre action "view" prend un paramètre : l'ID du post que nous aimerions voir. Ce paramètre est transmis à l'action grâce à l'URL demandée. Si un utilisateur demande /posts/view/3, alors la valeur '3' est transmise -à la variable `$id`. +à la variable ``$id``. Nous faisons aussi une petite vérification d'erreurs pour nous assurer qu'un utilisateur accède bien à l'enregsitrement. Si un utilisateur requête -`/posts/view`, nous lancerons un `NotFoundException` et laisserons +``/posts/view``, nous lancerons un ``NotFoundException`` et laisserons le Gestionnaire d'Erreur de CakePHP ErrorHandler prendre le dessus. Nous exécutons aussi une vérification similaire pour nous assurer que l'utilisateur a accède à un enregistrement qui existe. Maintenant, créons la vue pour notre nouvelle action "view" et plaçons-la -dans `/app/View/Posts/view.ctp`. +dans ``/app/View/Posts/view.ctp``. .. code-block:: php @@ -260,7 +260,7 @@ dans `/app/View/Posts/view.ctp`.

    Vérifiez que cela fonctionne en testant les liens de la page /posts/index -ou en affichant manuellement un post via `/posts/view/1`. +ou en affichant manuellement un post via ``/posts/view/1``. Ajouter des Posts ================= @@ -268,7 +268,7 @@ Ajouter des Posts Lire depuis la base de données et nous afficher les posts est un bon début, mais lançons-nous dans l'ajout de nouveaux posts. -Premièrement, commençons par créer une action `add()` dans le +Premièrement, commençons par créer une action ``add()`` dans le PostsController :: class PostsController extends AppController { @@ -310,20 +310,20 @@ PostsController :: utiliserez. Si nécessaire, incluez-les dans le controller principal (AppController) pour qu'ils soient accessibles à tous les controllers. -Voici ce que fait l'action `add()` : si la requête HTTP est de type POST, +Voici ce que fait l'action ``add()`` : si la requête HTTP est de type POST, essayez de sauvegarder les données en utilisant le model "Post". Si pour une raison quelconque, la sauvegarde a échouée, affichez simplement la vue. Cela nous donne une chance de voir les erreurs de validation de l'utilisateur et d'autres avertissements. -Chaque requête de CakePHP contient un objet `CakeRequest` qui est accessible -en utilisant `$this->request`. Cet objet contient des informations utiles +Chaque requête de CakePHP contient un objet ``CakeRequest`` qui est accessible +en utilisant ``$this->request``. Cet objet contient des informations utiles sur la requête qui vient d'être reçue, et permet de contrôler les flux de votre application. Dans ce cas, nous utilisons la méthode :php:meth:`CakeRequest::is()` pour vérifier que la requête est de type POST. Lorsqu'un utilisateur utilise un formulaire pour poster des données dans votre -application, ces informations sont disponibles dans `$this->request->data`. +application, ces informations sont disponibles dans ``$this->request->data``. Vous pouvez utiliser les fonctions :php:func:`pr()` ou :php:func:`debug()` pour les afficher si vous voulez voir à quoi cela ressemble. @@ -333,13 +333,13 @@ et qui sera affiché dans la page juste après la redirection. Dans le layout, nous trouvons la fonction :php:func:`SessionHelper::flash` qui permet d'afficher et de nettoyer la variable correspondante. La méthode :php:meth:`Controller::redirect` du controller permet de rediriger vers une -autre URL. Le paramètre `array('action' => 'index')` sera traduit vers l'URL +autre URL. Le paramètre ``array('action' => 'index')`` sera traduit vers l'URL /posts, c'est à dire l'action "index" du controller "Posts" (PostsController). Vous pouvez vous référer à l'API de la fonction :php:func:`Router::url()` pour voir les différents formats d'URL acceptés dans les différentes fonctions de CakePHP. -L'appel de la méthode `save()` vérifiera les erreurs de validation et +L'appel de la méthode ``save()`` vérifiera les erreurs de validation et interrompra l'enregistrement si une erreur survient. Nous verrons la façon dont les erreurs sont traitées dans les sections suivantes. @@ -353,7 +353,7 @@ et plus rapide. Pour tirer profit des fonctionnalités de validation, vous devez utiliser le helper "Form" (FormHelper) dans vos vues. :php:class:`FormHelper` est -disponible par défaut dans toutes les vues avec la variables `$this->Form`. +disponible par défaut dans toutes les vues avec la variables ``$this->Form``. Voici le code de notre vue "add" (ajout) @@ -371,34 +371,34 @@ Voici le code de notre vue "add" (ajout) Nous utilisons ici le :php:class:`FormHelper` pour générer la balise d'ouverture d'une formulaire HTML. Voici le code HTML généré par -`$this->Form->create()` :: +``$this->Form->create()`` :: .. code-block:: html -Si `create()` est appelée sans aucun paramètre, CakePHP suppose que vous -construisez un formulaire qui envoie les données en POST à l'action `add()` -(ou `edit()` quand `id` est dans les données du formulaire) du controller +Si ``create()`` est appelée sans aucun paramètre, CakePHP suppose que vous +construisez un formulaire qui envoie les données en POST à l'action ``add()`` +(ou ``edit()`` quand ``id`` est dans les données du formulaire) du controller actuel. -La méthode `$this->Form->input()` est utilisée pour créer des élements de +La méthode ``$this->Form->input()`` est utilisée pour créer des élements de formulaire du même nom. Le premier paramètre dit à CakePHP à quels champs ils correspondent et le second paramètre vous permet de spécifier un large éventail d'options - dans ce cas, le nombre de lignes du textarea. Il y a un peu -d'introspection et "d'automagie" ici : `input()` affichera différents +d'introspection et "d'automagie" ici : ``input()`` affichera différents éléments de formulaire selon le champ spécifié du model. -L'appel de la méthode `$this->Form->end()` génère un bouton de soumission +L'appel de la méthode ``$this->Form->end()`` génère un bouton de soumission et ajoute la balise de fermeture du formulaire. Si une chaîne de caractères est -passée comme premier paramètre de la méthode `end()`, le helper "Form" +passée comme premier paramètre de la méthode ``end()``, le helper "Form" affichera un bouton de soumission dont le nom correspond à celle-ci. Encore une fois, référez-vous au chapitre :doc:`/views/helpers` pour en savoir plus sur les helpers. A présent, revenons en arrière et modifions notre vue -`/app/View/Posts/index.ctp` pour ajouter un lien "Ajouter un post". Ajoutez -la ligne suivante avant `
    ` :: +``/app/View/Posts/index.ctp`` pour ajouter un lien "Ajouter un post". Ajoutez +la ligne suivante avant ``
    `` :: Html->link( 'Ajouter un Post', @@ -421,8 +421,8 @@ ajustements :: ); } -Le tableau `$validate` indique à CakePHP comment valider vos données -lorsque la méthode `save()` est appelée. Ici, j'ai spécifié que les +Le tableau ``$validate`` indique à CakePHP comment valider vos données +lorsque la méthode ``save()`` est appelée. Ici, j'ai spécifié que les deux champs "body" et "title" ne doivent pas être vides. Le moteur de validation de CakePHP est puissant, il dispose d'un certain nombre de règles intégrées (code de carte bancaire, adresse emails, etc.) @@ -442,7 +442,7 @@ Editer des Posts L'édition de posts : nous y voilà. Vous êtes un pro de CakePHP maintenant, vous devriez donc avoir adopté le principe. Créez d'abord l'action puis la vue. -Voici à quoi l'action `edit()` du controller Posts (PostsController) devrait +Voici à quoi l'action ``edit()`` du controller Posts (PostsController) devrait ressembler :: public function edit($id = null) { @@ -470,8 +470,8 @@ ressembler :: } Cette action s'assure d'abord que l'utilisateur a essayé d'accéder à un -enregistrement existant. S'il n'y a pas de paramètre `$id` passé, ou si le -post n'existe pas, nous lançons une `NotFoundException` pour que le +enregistrement existant. S'il n'y a pas de paramètre ``$id`` passé, ou si le +post n'existe pas, nous lançons une ``NotFoundException`` pour que le gestionnaire d'Erreurs ErrorHandler de CakePHP s'en occupe. Ensuite l'action vérifie si la requête est une requête POST ou PUT. Si elle @@ -479,7 +479,7 @@ l'est, alors nous utilisons les données POST pour mettre à jour notre enregistrement Post, ou sortir et montrer les erreurs de validation à l'utilisateur. -S'il n'y a pas de données définies dans `$this->request->data`, nous le +S'il n'y a pas de données définies dans ``$this->request->data``, nous le définissons simplement dans le post récupéré précédemment. La vue d'édition devrait ressembler à quelque chose comme cela: @@ -503,7 +503,7 @@ les messages d'erreur de validation nécessaires. Une chose à noter ici : CakePHP supposera que vous éditez un model si le champ 'id' est présent dans le tableau de données. S'il n'est pas présent (ce qui revient à notre vue "add"), CakePHP supposera que vous insérez un nouveau model -lorsque `save()` sera appelée. +lorsque ``save()`` sera appelée. Vous pouvez maintenant mettre à jour votre vue "index" avec des liens pour éditer des posts : @@ -545,7 +545,7 @@ Supprimer des Posts =================== A présent, mettons en place un moyen de supprimer les posts pour les -utilisateurs. Démarrons avec une action `delete()` dans le controller +utilisateurs. Démarrons avec une action ``delete()`` dans le controller Posts (PostsController) :: public function delete($id) { @@ -559,8 +559,8 @@ Posts (PostsController) :: } Cette logique supprime le Post spécifié par $id, et utilise -`$this->Session->setFlash()` pour afficher à l'utilisateur un message de -confirmation après l'avoir redirigé sur `/posts`. Si l'utilisateur tente +``$this->Session->setFlash()`` pour afficher à l'utilisateur un message de +confirmation après l'avoir redirigé sur ``/posts``. Si l'utilisateur tente une suppression en utilisant une requête GET, une exception est levée. Les exceptions manquées sont capturées par le gestionnaire d'exceptions de CakePHP et un joli message d'erreur est affiché. Il y a plusieurs @@ -639,7 +639,7 @@ de votre site (par ex: http://www.exemple.com) vers le controller Pages cela, nous voudrions la remplacer avec notre controller Posts (PostsController). -Le routage de CakePHP se trouve dans `/app/Config/routes.php`. Vous devrez +Le routage de CakePHP se trouve dans ``/app/Config/routes.php``. Vous devrez commenter ou supprimer la ligne qui définit la route par défaut. Elle ressemble à cela :: @@ -651,14 +651,14 @@ la ligne par celle-ci :: Router::connect('/', array('controller' => 'posts', 'action' => 'index')); -Cela devrait connecter les utilisateurs demandant '/' à l'action `index()` de +Cela devrait connecter les utilisateurs demandant '/' à l'action ``index()`` de notre controller Posts (PostsController). .. note:: CakePHP peut aussi faire du 'reverse routing' (ou routage inversé). Par exemple, pour la route définie plus haut, en ajoutant - `array('controller' => 'posts', 'action' => 'index')` à la fonction + ``array('controller' => 'posts', 'action' => 'index')`` à la fonction retournant un tableau, l'URL '/' sera utilisée. Il est d'ailleurs bien avisé de toujours utiliser un tableau pour les URLs afin que vos routes définissent où vont les URLs, mais aussi pour s'assurer qu'elles aillent -- GitLab From d63d41091b63532c25259c4614dc1b1d574b2d30 Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Tue, 19 Nov 2013 11:52:31 +0100 Subject: [PATCH 069/458] fix some backtick again --- fr/contributing/documentation.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) mode change 100644 => 100755 fr/contributing/documentation.rst diff --git a/fr/contributing/documentation.rst b/fr/contributing/documentation.rst old mode 100644 new mode 100755 index 7d96250c0..7f33f372e --- a/fr/contributing/documentation.rst +++ b/fr/contributing/documentation.rst @@ -83,11 +83,11 @@ Le balisage interne * Un astérisque: *text* pour une accentuation (italiques) * ``*text*`` - + * Two asterisks: **text** pour une forte accentuation (caractères gras) * ``**text**`` - + * Two backquotes: ``text`` pour les exemples de code * ````text```` @@ -167,9 +167,9 @@ Lien vers les autres pages modèle ``:doc:``. Vous pouvez faire un lien à un document spécifique en utilisant, soit un chemin de référence absolu ou relatif. Vous pouvez omettre l'extension ``.rst``. Par exemple, si la référence - ``:doc:`form`` apparait dans le document ``core-helpers/html``, alors le + ``:doc:`form``` apparait dans le document ``core-helpers/html``, alors le lien de référence ``core-helpers/form``. Si la référence était - ``:doc:`/core-helpers`` il serait en référence avec ``/core-helpers`` sans + ``:doc:`/core-helpers``` il serait en référence avec ``/core-helpers`` sans soucis de où il a été utilisé. Les liens croisés de référencement @@ -224,7 +224,7 @@ Chaque directive remplit l'index, et l'index des espaces de nom. Cette directive déclare une nouvelle constante PHP, vous pouvez aussi l'utiliser imbriquée à l'intérieur d'une directive de classe pour créer les constantes de classe. - + .. rst:directive:: .. php:exception:: name Cette directive déclare un nouvelle Exception dans l'espace de noms @@ -260,16 +260,16 @@ Chaque directive remplit l'index, et l'index des espaces de nom. .. rst:directive:: .. php:method:: name(signature) - Décrire une méthode de classe, ses arguments, les valeurs retournées et + Décrire une méthode de classe, ses arguments, les valeurs retournées et les exceptions:: - + .. php:method:: instanceMethod($one, $two) - + :param string $un: Le premier param\ètre. :param string $deux: Le deuxième param\ètre. :returns: Un tableau de trucs. :throws: InvalidArgumentException - + C\'est un m\éthode d\'instanciation. .. rst:directive:: .. php:staticmethod:: ClassName::methodName(signature) @@ -337,7 +337,7 @@ Le block littéral doit être indenté, et comme pour tous les paragraphes, êtr séparé par des lignes uniques:: C'est un paragraphe:: - + while ($i--) { faireDesTrucs() } -- GitLab From af1f695960b7f059782a39376f030950cbe3a512 Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Tue, 19 Nov 2013 15:36:49 +0100 Subject: [PATCH 070/458] fix some backtick again --- .../components/authentication.rst | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) mode change 100644 => 100755 fr/core-libraries/components/authentication.rst diff --git a/fr/core-libraries/components/authentication.rst b/fr/core-libraries/components/authentication.rst old mode 100644 new mode 100755 index f3128944b..80c6e0726 --- a/fr/core-libraries/components/authentication.rst +++ b/fr/core-libraries/components/authentication.rst @@ -76,7 +76,7 @@ d'authentification en utilisant un tableau:: // Configuration de base $this->Auth->authenticate = array('Form'); - // Passer la configuration + // Passer la configuration $this->Auth->authenticate = array( 'Basic' => array('userModel' => 'Membre'), 'Form' => array('userModel' => 'Membre') @@ -96,7 +96,7 @@ La cle ``all`` est aussi utilisée comme cela 'Form' ); -Dans l'exemple ci-dessus, à la fois ```Form`` et ``Basic`` prendront +Dans l'exemple ci-dessus, à la fois ``Form`` et ``Basic`` prendront les paramétrages définis dans la clé "all". Tous les paramètres transmis à un objet d'authentification particulier remplaceront la clé correspondante dans la clé 'all'. @@ -132,7 +132,7 @@ Ne mettez pas d'autre clés de configuration de Auth(comme authError, loginAction etc). Ils doivent se trouver au même niveau que la clé d'authentification. La configuration ci-dessus avec d'autres configurations ressemblerait à quelque chose comme.:: - + // Passage de paramètre dans le tableau $components public $components = array( 'Auth' => array( @@ -206,7 +206,7 @@ flash est défini. d'identifier l'utilisateur en premier et le connectera seulement en cas de succès. -Utilisation de l'authentification Digest et Basic pour la connexion +Utilisation de l'authentification Digest et Basic pour la connexion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Puisque les authentifications basic et digest ne nécessitent pas un POST @@ -264,7 +264,7 @@ Une fois votre objet d'authentification créer, vous pouvez les utiliser en les incluant dans le tableau d'authentification AuthComponents:: $this->Auth->authenticate = array( - 'Openid', // objet d'authentification app + 'Openid', // objet d'authentification app 'AuthBag.Combo', // plugin objet d'identification. ); @@ -511,7 +511,7 @@ utilisateur que vous voulez pour la 'connexion':: Soyez certain d'ajouter manuellement le nouveau User id au tableau passé à la méthode de login. Sinon vous n'aurez pas l'id utilisateur disponible. - + Accéder à l'utilisateur connecté -------------------------------- @@ -591,7 +591,7 @@ d'autorisation, en utilisant un tableau:: // paramétrage Basique $this->Auth->authorize = array('Controller'); - // passage de paramètre + // passage de paramètre $this->Auth->authorize = array( 'Actions' => array('actionPath' => 'controllers/'), 'Controller' @@ -640,7 +640,7 @@ cela:: } } -L'objet Authorize devrait retourner `false ` si l'utilisateur se voit refuser +L'objet Authorize devrait retourner ``false`` si l'utilisateur se voit refuser l'accès, ou si l'objet est incapable de faire un contrôle. Si l'objet est capable de vérifier les accès de l'utilisateur, ``true`` devrait être retourné. Ça n'est pas nécessaire d'étendre ``BaseAuthorize``, il faut simplement que @@ -651,7 +651,7 @@ sont communément utilisées. Utilisation d'objets Authorize personnalisés ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Une fois que vous avez créé votre objet authorize personnalisé, vous pouvez +Une fois que vous avez créé votre objet authorize personnalisé, vous pouvez l'utiliser en l'incluant dans le tableau authorize:: $this->Auth->authorize = array( @@ -779,8 +779,8 @@ l'utilisation du mapping CRUD. Les résultats mappés sont alors vérifiés dans le component Acl comme des permissions spécifiques. Par exemple, en prenant la requête ``/posts/index``. Le mapping -par défaut pour `index` est une vérification de la permission de ``read``. -La vérification d'Acl se ferait alors avec les permissions de ``read``pour le +par défaut pour ``index`` est une vérification de la permission de ``read``. +La vérification d'Acl se ferait alors avec les permissions de ``read`` pour le controller ``posts``. Ceci vous permet de créer un système de permission qui met d'avantage l'accent sur ce qui est en train d'être fait aux ressources, plutôt que sur l'action spécifique en cours de visite. @@ -814,7 +814,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. Le nom d'une vue optionnelle d'un élément à rendre quand une requête AJAX est faite avec une session expirée invalide. - + .. php:attr: allowedActions Les actions du controller pour qui la validation de l'utilisateur n'est pas @@ -826,7 +826,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. quand les utilisateurs de connectent. Il y a plusieurs objets d'authentification dans le noyau, cf la section :ref:`authentication-objects` - + .. php:attr:: authError Erreur à afficher quand les utilisateurs font une tentative d'accès à un @@ -909,7 +909,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. .. php:method:: constructAuthenticate() Charge les objets d'authentification configurés. - + .. php:method:: constructAuthorize() Charge les objets d'autorisation configurés. @@ -924,7 +924,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. Définit un message flash. Utilise le component Session, et prend les valeurs depuis :php:attr:`AuthComponent::$flash`. - + .. php:method:: identify($request, $response) :param CakeRequest $request: La requête à utiliser. @@ -934,7 +934,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. Cette méthode est utilisée par le component Auth pour identifier un utilisateur en se basant sur les informations contenues dans la requête courante. - + .. php:method:: initialize($Controller) Initialise le component Auth pour une utilisation dans le controller. @@ -945,12 +945,12 @@ d'autorisation et d'authentification intégrée dans CakePHP. qu'un utilisateur est configuré ou non. Chaque adaptateur sera vérifié dans l'ordre, si chacun d'eux retourne true, alors l'utilisateur sera autorisé pour la requête. - + .. php:method:: loggedIn() Retourne true si le client actuel est un utilisateur connecté, ou false si il ne l'est pas. - + .. php:method:: login($user) :param array $user: Un tableau de données d'utilisateurs connectés. @@ -962,7 +962,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. component Auth essaiera d'identifier un utilisateur en utilisant les informations de la requête en cours. cf :php:meth:`AuthComponent::identify()`. - + .. php:method:: logout() :return: Une chaîne URL où rediriger l'utilisateur déconnecté. -- GitLab From ddc2d272119626f8c2bed353afd943170ab38d30 Mon Sep 17 00:00:00 2001 From: Fabien Mercier Date: Tue, 19 Nov 2013 15:39:40 +0100 Subject: [PATCH 071/458] fix some backtick again --- fr/core-libraries/logging.rst | 2 +- fr/development/exceptions.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fr/core-libraries/logging.rst b/fr/core-libraries/logging.rst index c927826f5..85599e30f 100755 --- a/fr/core-libraries/logging.rst +++ b/fr/core-libraries/logging.rst @@ -94,7 +94,7 @@ Depuis 2.4 le moteur de ``FileLog`` a quelques nouvelles configurations:: Avant 2.4 vous deviez inclure le suffixe ``Log`` dans votre configuration (``LoggingPack.DatabaseLog``). Ce n'est plus nécessaire maintenant. - Si vous avez utilisé un moteur de Log comme ```DatabaseLogger`` qui ne suit + Si vous avez utilisé un moteur de Log comme ``DatabaseLogger`` qui ne suit pas la convention d'utiliser un suffixe ``Log`` pour votre nom de classe, vous devez ajuster votre nom de classe en ``DatabaseLog``. Vous devez aussi éviter les noms de classe comme ``SomeLogLog`` qui inclut le suffixe diff --git a/fr/development/exceptions.rst b/fr/development/exceptions.rst index eb2168f31..c733142e3 100755 --- a/fr/development/exceptions.rst +++ b/fr/development/exceptions.rst @@ -405,7 +405,7 @@ utiliser ``Configure::write('Exception.renderer','AppExceptionRenderer');`` pour choisir une classe qui va rendre les pages d'exception. Par défaut :php:class`ExceptionRenderer` est utilisée. Votre classe de rendu d'exception personnalisée doit être placée dans ``app/Lib/Error``. Ou un -répertoire ``Error``` dans tout chemin bootstrapped Lib. Dans une classe +répertoire ``Error`` dans tout chemin bootstrapped Lib. Dans une classe de rendu d'exception, vous pouvez fournir une gestion spécialisée pour les erreurs spécifiques de l'application:: -- GitLab From dcb380797f5372ef282aea5f21900de6d9b220f7 Mon Sep 17 00:00:00 2001 From: JOTAKI Taisuke Date: Wed, 20 Nov 2013 17:01:25 +0900 Subject: [PATCH 072/458] revise the Japanese translation. I think this "as" means "because". --- ja/tutorials-and-examples/blog/part-two.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/tutorials-and-examples/blog/part-two.rst b/ja/tutorials-and-examples/blog/part-two.rst index d333dc1d3..64a231c64 100644 --- a/ja/tutorials-and-examples/blog/part-two.rst +++ b/ja/tutorials-and-examples/blog/part-two.rst @@ -533,7 +533,7 @@ PostsControllerの ``delete()`` アクションを作るところから始めま
    :php:meth:`~FormHelper::postLink()` を使うと、投稿記事の削除を行うPOSTリクエストをするためのJavascriptを使うリンクが生成されます。 -WEBクローラーが不意にコンテンツ全てを削除できてしまうように、GETリクエストを用いたコンテンツの削除を許可することは危険です。 +WEBクローラーが不意にコンテンツ全てを削除できてしまうので、GETリクエストを用いたコンテンツの削除を許可することは危険です。 .. note:: -- GitLab From 862a8210fe393c793d738c33590d1688343d9174 Mon Sep 17 00:00:00 2001 From: JOTAKI Taisuke Date: Wed, 20 Nov 2013 17:22:10 +0900 Subject: [PATCH 073/458] revise the Japanese word. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why is "love" translated to "女性"? I think "愛" is better here. :-) --- ja/tutorials-and-examples/blog/part-two.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/tutorials-and-examples/blog/part-two.rst b/ja/tutorials-and-examples/blog/part-two.rst index 64a231c64..69a78e523 100644 --- a/ja/tutorials-and-examples/blog/part-two.rst +++ b/ja/tutorials-and-examples/blog/part-two.rst @@ -578,7 +578,7 @@ Cakeのルーティングは、 ``/app/Config/routes.php`` の中にあります まとめ ====== -この方法に乗っ取ったアプリケーションの作成により、平和、賞賛、女性、お金までもが、あなたが考えうる以上にもたらされるでしょう。 +この方法に乗っ取ったアプリケーションの作成により、平和、賞賛、愛、お金までもが、あなたが考えうる以上にもたらされるでしょう。 シンプルですよね。 ですが、気をつけてほしいのは、このチュートリアルは、非常に基本的な点しか扱っていない、ということです。 CakePHPには、もっともっと *多くの* 機能があります。 -- GitLab From e9925cec709fbddf0ff30604ee303a679629b20e Mon Sep 17 00:00:00 2001 From: AD7six Date: Wed, 20 Nov 2013 14:04:22 +0000 Subject: [PATCH 074/458] Ask is defunkt --- en/cakephp-overview/where-to-get-help.rst | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/en/cakephp-overview/where-to-get-help.rst b/en/cakephp-overview/where-to-get-help.rst index 3b9fa9eb1..f24e1b910 100644 --- a/en/cakephp-overview/where-to-get-help.rst +++ b/en/cakephp-overview/where-to-get-help.rst @@ -88,15 +88,13 @@ getting answers to immediate problems. Join other CakePHP users in the following - `CakePHP Google Plus Community `_ -CakePHP Questions -================= +Stackoverflow +============= -`http://ask.cakephp.org/ `_ - -Simply register/login and ask a question. Wait until you've got some answers -and pick the correct answer. You can view, comment and vote on previously asked -and solved questions as well. +`http://stackoverflow.com/ `_ +Tag your questions with ``cakephp`` and the specific version you are using to enable +existing users of stackoverflow to find your questions. .. meta:: :title lang=en: Where to Get Help -- GitLab From 48a393ac9b2b93155e51f6edd9e31ad1777a923a Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Thu, 21 Nov 2013 08:36:32 +0900 Subject: [PATCH 075/458] [ja] Fix grammars by review. --- ja/appendices/2-3-migration-guide.rst | 2 +- ja/appendices/2-4-migration-guide.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ja/appendices/2-3-migration-guide.rst b/ja/appendices/2-3-migration-guide.rst index 015a649d7..fa7753b91 100644 --- a/ja/appendices/2-3-migration-guide.rst +++ b/ja/appendices/2-3-migration-guide.rst @@ -153,7 +153,7 @@ Models ------ - ``Model::find('list')`` は ContainableBehavior で利用する場合、最大包括深度 - もしくは再帰値を元にした ``recursive``をセットするようになりました。 + もしくは再帰値を元にした ``recursive`` をセットするようになりました。 - ``Model::find('first')`` は、ひとつもレコードが見つからなかった場合に、 空の配列を返すようになりました。 diff --git a/ja/appendices/2-4-migration-guide.rst b/ja/appendices/2-4-migration-guide.rst index 50dc91ca9..1011a7821 100644 --- a/ja/appendices/2-4-migration-guide.rst +++ b/ja/appendices/2-4-migration-guide.rst @@ -48,7 +48,7 @@ Constants - ``IMAGES_URL`` 、 ``JS_URL`` 、 ``CSS_URL`` の各定数は非推奨となり、 ``App.imageBaseUrl`` 、 ``App.jsBaseUrl`` 、 ``App.cssBaseUrl`` のコンフィグ変数の利用が推奨されます。 -- ``IMAGES`` 、 ``JS`` 、 ``CSS`` は各定数は非推奨となりました。 +- ``IMAGES`` 、 ``JS`` 、 ``CSS`` の各定数は非推奨となりました。 Object @@ -94,7 +94,7 @@ Models - :php:meth:`Model::save()` 、 :php:meth:`Model::saveField()` 、 :php:meth:`Model::saveAll()` 、 :php:meth:`Model::saveAssociated()` 、 :php:meth:`Model::saveMany()` は 新しく ``counterCache`` オプションを持つようになりました。 - この値を false にセットすることで特定の保存時にカウンタキャッシュを更新を抑制できます。 + この値を false にセットすることで特定の保存時にカウンタキャッシュの更新を抑制できます。 - :php:meth:`Model::clear()` が追加されました。 -- GitLab From 14832df7b491326c8b541828ef8285dc7b985e6c Mon Sep 17 00:00:00 2001 From: okonomi Date: Thu, 21 Nov 2013 09:56:31 +0900 Subject: [PATCH 076/458] correct appendices grammar --- ja/appendices.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/appendices.rst b/ja/appendices.rst index 1633a5c1a..37cdfc3b7 100644 --- a/ja/appendices.rst +++ b/ja/appendices.rst @@ -1,7 +1,7 @@ 付録 #### -付録は2.xで導入された新機能に関する情報と、1.3から2.0への移行の道程を含みます。 +ここでは、2.xで導入された新機能に関する情報と、1.3から2.0への移行手順を解説します。 2.4 移行ガイド =================== -- GitLab From a9c7d4c4c7b56763f2de73e33c090ab71b1af9df Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Fri, 22 Nov 2013 08:37:53 +0900 Subject: [PATCH 077/458] [ja] Follow #896 --- .../blog-auth-example/auth.rst | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ja/tutorials-and-examples/blog-auth-example/auth.rst b/ja/tutorials-and-examples/blog-auth-example/auth.rst index 07a90d424..6e298ad22 100644 --- a/ja/tutorials-and-examples/blog-auth-example/auth.rst +++ b/ja/tutorials-and-examples/blog-auth-example/auth.rst @@ -200,23 +200,25 @@ AuthComponentに認証されていないユーザーがusersのadd関数にア ``app/Model/User.php`` のモデルファイルを開いて、以下のものを追加してください:: // app/Model/User.php - App::uses('AuthComponent', 'Controller/Component'); + App::uses('SimplePasswordHasher', 'Controller/Component/Auth'); + class User extends AppModel { // ... public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { - $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); + $passwordHasher = new SimplePasswordHasher(); + $this->data[$this->alias]['password'] = $passwordHasher->hash($this->data[$this->alias]['password']); } return true; } // ... -これで、ユーザーが保存されるときは毎回、AuthComponentクラスが提供するデフォルトのハッシュ方法を用いてパスワードがハッシュ化されます。 -あとはログイン関数のビューテンプレートファイルだけです。 -以下のものを使ってください: +これで、ユーザーが保存されるときは毎回 SimplePasswordHasher クラスが利用されます。 +あとはログイン関数用のビューテンプレートファイルだけです: + .. code-block:: php @@ -344,6 +346,5 @@ UsersControllerをセキュアにするためには、PostsControllerでした お勧めの参考資料 ---------------- -1. :doc:`/console-and-shells/code-generation-with-bake` 基本的なCRUDコードの生成 +1. :doc:`/console-and-shells/code-generation-with-bake` 基本的なCRUDコードの生成 2. :doc:`/core-libraries/components/authentication`: ユーザーの登録とログイン - -- GitLab From 1cf47fea8f332061258382193daaa06747dbb7ab Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Fri, 22 Nov 2013 21:28:27 +0900 Subject: [PATCH 078/458] [ja] Fix sentence by review --- ja/tutorials-and-examples/blog-auth-example/auth.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ja/tutorials-and-examples/blog-auth-example/auth.rst b/ja/tutorials-and-examples/blog-auth-example/auth.rst index 6e298ad22..24e5de321 100644 --- a/ja/tutorials-and-examples/blog-auth-example/auth.rst +++ b/ja/tutorials-and-examples/blog-auth-example/auth.rst @@ -216,7 +216,8 @@ AuthComponentに認証されていないユーザーがusersのadd関数にア // ... -これで、ユーザーが保存されるときは毎回 SimplePasswordHasher クラスが利用されます。 +これで、ユーザーが保存されるときは毎回 SimplePasswordHasher +クラスを用いてパスワードがハッシュ化されます。 あとはログイン関数用のビューテンプレートファイルだけです: -- GitLab From 62f224beac9bd22bf6b655060e3f619c3cac8f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20J=C3=B8rgensen?= Date: Fri, 22 Nov 2013 23:37:31 +0100 Subject: [PATCH 079/458] Update plugins.rst --- en/plugins.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/en/plugins.rst b/en/plugins.rst index fc5958125..2b25c6832 100644 --- a/en/plugins.rst +++ b/en/plugins.rst @@ -200,6 +200,16 @@ Please refer to the chapter :doc:`/console-and-shells/code-generation-with-bake` if you have any problems with using the command line. +.. Warning:: + + Plugins do not work as namespacing to seperate code. + Due to PHP lacking namespaces in older versions + you cannot have the same class, + or same filename, in your plugins. + Even if it is two different plugins. + So use unique classes and filenames, possible prefixing + the class and filename with the plugin name. + Plugin Controllers ================== -- GitLab From f3a20cd3d1230271154c922e3a11e2427a1e9c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20J=C3=B8rgensen?= Date: Sat, 23 Nov 2013 12:59:44 +0100 Subject: [PATCH 080/458] Fix bad edit of plugins.rst Warning changed to warning. My bad :) --- en/plugins.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/plugins.rst b/en/plugins.rst index 2b25c6832..c1026817f 100644 --- a/en/plugins.rst +++ b/en/plugins.rst @@ -200,7 +200,7 @@ Please refer to the chapter :doc:`/console-and-shells/code-generation-with-bake` if you have any problems with using the command line. -.. Warning:: +.. warning:: Plugins do not work as namespacing to seperate code. Due to PHP lacking namespaces in older versions -- GitLab From b46150beaa733a073763bc3b6dc7a5725cf8594d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20J=C3=B8rgensen?= Date: Sat, 23 Nov 2013 15:00:36 +0100 Subject: [PATCH 081/458] fix spelling error in plugins.rst --- en/plugins.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/plugins.rst b/en/plugins.rst index c1026817f..49310853d 100644 --- a/en/plugins.rst +++ b/en/plugins.rst @@ -202,7 +202,7 @@ have any problems with using the command line. .. warning:: - Plugins do not work as namespacing to seperate code. + Plugins do not work as namespacing to separate code. Due to PHP lacking namespaces in older versions you cannot have the same class, or same filename, in your plugins. -- GitLab From 9f83699606c23d3d4277e1cbd595e363ce4e6fba Mon Sep 17 00:00:00 2001 From: cake17 Date: Mon, 25 Nov 2013 15:20:45 +0100 Subject: [PATCH 082/458] [fr] Follow #900 Ask is defunkt --- fr/cakephp-overview/where-to-get-help.rst | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/fr/cakephp-overview/where-to-get-help.rst b/fr/cakephp-overview/where-to-get-help.rst index 3cdbddd3a..1d6dd0018 100644 --- a/fr/cakephp-overview/where-to-get-help.rst +++ b/fr/cakephp-overview/where-to-get-help.rst @@ -92,19 +92,15 @@ Rejoignez d'autres utilisateurs de CakePHP dans les communautés suivantes. - `CakePHP Facebook Group `_ - `CakePHP Google Plus Community `_ -CakePHP dispose également d'un Groupe Google très actif. -Il peut être une ressource de choix pour trouver des réponses archivées, -des questions fréquemment posées et obtenir des réponses aux problèmes urgents. -Les Questions CakePHP -===================== +Stackoverflow +============= -`http://ask.cakephp.org/ `_ +`http://stackoverflow.com/ `_ -Simplement s'inscrire/se connecter et poser une question. Attendez jusqu'à ce -que vous ayez quelques réponses et choisissez la réponse correcte. Vous pouvez -aussi voir, commenter et voter pour les questions précédemment demandées et -aussi les questions résolues. +Tagge vos questions avec ``cakephp`` et la version sépcifique que vous utilisez +pour permettre aux utilisateurs existant de stackoverflow de trouver vos +questions. .. meta:: -- GitLab From 4db1cb4ce2e3c55be18d12d0c374b51a0613ab18 Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Wed, 27 Nov 2013 08:47:28 +0900 Subject: [PATCH 083/458] [ja] Follow #900 and replace section from Google Group to CakePHP Community --- ja/cakephp-overview/where-to-get-help.rst | 39 ++++++++++++++++------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/ja/cakephp-overview/where-to-get-help.rst b/ja/cakephp-overview/where-to-get-help.rst index 0e8555dc3..2decc2ede 100644 --- a/ja/cakephp-overview/where-to-get-help.rst +++ b/ja/cakephp-overview/where-to-get-help.rst @@ -62,19 +62,36 @@ IRC チャンネル 北アメリカと南アメリカの昼間の時間帯であれば、たいていは開発チームのだれかがそこにいます。 助けが必要な場合でも、同じ地域での知り合いが必要でも、最新のスポーツカーを寄付したいという場合でも、喜んで聞いてくれるはずです。 -Google グループ -=============== +.. _cakephp-official-communities: -`http://groups.google.com/group/cake-php `_ +CakePHP 公式コミュニティ +============================ +CakePHP は Facebook や Google Plus などのよく知られたソーシャルネットワーク上にも +公式グループがあります。 -CakePHP には、非常にアクティブな Google グループがあります。 -過去に話し合われた解決策、よくある質問、直近の問題に対する解答などを見つけることのできる、優れたリソースセンターになるでしょう。(注:日本語では、 http://cakephp.jp もどうぞ。) +そこでは、たくさんの人々が CakePHP プロジェクトのディスカッションをしたり、 +お互いに助けあったり、問題解決をしたり、プロジェクトを作ったり、 +アイデアの交換を行ったりしています。 -CakePHP Questions -================= +また、以前に行なわれた回答や、よくある質問と答え、差し迫った問題に対する回答などが +存在している素晴らしい場所となっています。 -`http://ask.cakephp.org/ `_ +CakePHP ユーザーであれば、以下のコミュニティに参加しましょう。 -シンプルに、登録・ログインして質問を投稿します。 -いくつか質問が返ってくるまで待ち、正確な答えを選び出しましょう。 -既に投稿された、または解決された質問を、見る、コメント、投票をすることができます。 +- `CakePHP Google Group `_ +- `CakePHP Facebook Group `_ +- `CakePHP Google Plus Community `_ + +(訳注: 日本語が主体のコミュニティとしては下記もあります) + +- `cakephp.jp `_ +- `CakePHP JAPAN Facebook Group `_ + + +Stackoverflow +============= + +`http://stackoverflow.com/ `_ + +Stack Overflow の既存ユーザーが質問を見つけやすくするために、質問の際には +``cakephp`` タグと利用中のバージョンを明記して下さい。 -- GitLab From d4e6a7157d88c89f0fec83c55b96b39c20b1cc7a Mon Sep 17 00:00:00 2001 From: Mark Story Date: Tue, 26 Nov 2013 19:48:03 -0500 Subject: [PATCH 084/458] Fix small mistake. The controller action should not be in french. --- fr/tutorials-and-examples/blog/part-two.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst index 9ebcb0855..e3f9cd271 100755 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -597,8 +597,8 @@ ainsi :
    Form->postLink( - 'Delete', - array('action' => 'Supprimer', $post['Post']['id']), + 'Supprimer', + array('action' => 'delete', $post['Post']['id']), array('confirm' => 'Etes-vous sûr ?')); ?> Html->link('Editer', array('action' => 'edit', $post['Post']['id'])); ?> -- GitLab From c897fe7f3aa465011fe50b7f3681d7f3199580de Mon Sep 17 00:00:00 2001 From: Mark Story Date: Wed, 27 Nov 2013 20:18:56 -0500 Subject: [PATCH 085/458] Update migration guide for unsigned int. --- en/appendices/2-5-migration-guide.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/en/appendices/2-5-migration-guide.rst b/en/appendices/2-5-migration-guide.rst index 750661b9a..a2bd3504d 100644 --- a/en/appendices/2-5-migration-guide.rst +++ b/en/appendices/2-5-migration-guide.rst @@ -56,6 +56,13 @@ are combined into one list of listeners based on their priorities and then fired as one set. Global listeners of a given priority are still fired before instance listeners. +Model +===== + +- Unsigned integers are now supported by datasources that provide them (MySQL). + You can set the ``unsigned`` option to true in your schema/fixture files to + start using this feature. + Network ======= -- GitLab From d220e147f8a34357d064d1769d060be46d76e1d1 Mon Sep 17 00:00:00 2001 From: Maggion Emmanuel Date: Thu, 28 Nov 2013 09:22:20 +0100 Subject: [PATCH 086/458] Update exceptions.rst Remove duplicate paragraph, translate few strings and fix markup --- fr/development/exceptions.rst | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/fr/development/exceptions.rst b/fr/development/exceptions.rst index c733142e3..e9688c260 100755 --- a/fr/development/exceptions.rst +++ b/fr/development/exceptions.rst @@ -91,19 +91,15 @@ internes du framework, il y a plusieurs exceptions pour les méthodes HTTP. Utilisé pour faire une Erreur 501 Non Implémentée. -Vous pouvez lancer ces exceptions à partir de vos controllers pour indiquer -les états d'échec, ou les erreurs HTTP. Un exemple d'utilisation des exceptions -HTTP pourraient rendre les pages 404 pour les items qui n'ont pas été trouvés - Vous pouvez lancer ces exceptions à partir de vos controllers pour indiquer les états d'échecs, ou les erreurs HTTP. Un exemple d'utilisation des exceptions HTTP pourrait être le rendu de pages 404 pour les items qui n'ont pas été trouvés:: - public function view ($id) { + public function view($id) { $post = $this->Post->findById($id); if (!$post) { - throw new NotFoundException('N a pas trouvé ce post'); + throw new NotFoundException('Impossible de trouver ce poste'); } $this->set('post', $post); } @@ -226,7 +222,7 @@ d'erreur et enregistrer l'exception. .. _error-views: Exception Renderer -==================s +================== .. php:class:: ExceptionRenderer(Exception $exception) @@ -282,7 +278,7 @@ aussi fournir un template de message qui permet les méthodes natives class MissingWidgetException extends CakeException { - protected $_messageTemplate = 'Seems that %s is missing.'; + protected $_messageTemplate = 'Il semblerait que %s soit manquant.'; } throw new MissingWidgetException(array('widget' => 'Pointy')); @@ -291,7 +287,7 @@ aussi fournir un template de message qui permet les méthodes natives Quand attrapé par le gestionnaire d'exception intégré, vous obtiendriez une variable ``$widget`` dans votre template de vue d'erreur. De plus, si vous attrapez l'exception en chaîne ou utilisez sa méthode ``getMessage()``, -vous auriez ``Il semble que Pointy soit manquant.``. Cela vous permet de +vous auriez ``Il semblerait que Pointy soit manquant.``. Cela vous permet de créer facilement et rapidement vos propres erreurs de développement riche, juste comme CakePHP en interne. @@ -301,7 +297,7 @@ Créer des codes de statut personnalisés Vous pouvez créer des codes de statut HTTP personnalisés en changeant le code utilisé quand vous créez une exception:: - throw new MissingWidgetHelperException('Its not here', 501); + throw new MissingWidgetHelperException('Widget manquant', 501); Va créer un code de réponse ``501``, vous pouvez utiliser le code de statut HTTP que vous souhaitez. En développement, si votre exception n'a pas -- GitLab From 7d2add1f75b724e1dab867c88518091920553491 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Fri, 29 Nov 2013 16:32:29 -0500 Subject: [PATCH 087/458] Allow logout action so logged in users can logout. --- en/tutorials-and-examples/blog-auth-example/auth.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/en/tutorials-and-examples/blog-auth-example/auth.rst b/en/tutorials-and-examples/blog-auth-example/auth.rst index e83028eb5..aeca0fa1d 100644 --- a/en/tutorials-and-examples/blog-auth-example/auth.rst +++ b/en/tutorials-and-examples/blog-auth-example/auth.rst @@ -121,6 +121,7 @@ with CakePHP:: $this->Session->setFlash(__('User was not deleted')); return $this->redirect(array('action' => 'index')); } + } In the same way we created the views for our blog posts or by using the code @@ -191,7 +192,8 @@ the users add function and implement the login and logout action:: public function beforeFilter() { parent::beforeFilter(); - $this->Auth->allow('add'); // Letting users register themselves + // Allow users to register and logout. + $this->Auth->allow('add', 'logout'); } public function login() { -- GitLab From 3e0d2da7676c9d3b7d976212db58d6ec23a66d3a Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Fri, 29 Nov 2013 17:19:29 -0500 Subject: [PATCH 088/458] Add pdf instructions --- README.mdown | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.mdown b/README.mdown index 12353c59b..b29e4a2a8 100644 --- a/README.mdown +++ b/README.mdown @@ -43,10 +43,21 @@ After installing the required packages, you can build the documentation using `M # Populate the search index make populate-index -This will generate all the documentation in an html form. Other output such as 'pdf' and 'htmlhelp' are not fully complete at this time. +This will generate all the documentation in an html form. Other output such as 'htmlhelp' are not fully complete at this time. After making changes to the documentation, you can build the html version of the docs by using `make html` again. This will build only the html files that have had changes made to them. +Building the PDF +---------------- + +Building the PDF is a non-trivial task. + +1. Install Latex - This varies by distribution/OS so refer to your package manager. You should install the full LaTeX package. The basic one requires many additional packages to be installed with `tlmgr` +2. Run `make latex-en`. +3. Run `make pdf-en`. + +At this point the completed PDF should be in build/latex/en/CakePHPCookbook.pdf. + Contributing ------------ -- GitLab From 409b3252d94273caf3b1bf033218a4b62b2cfdb4 Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Mon, 2 Dec 2013 08:34:25 +0900 Subject: [PATCH 089/458] [ja] Follow 7d2add1 --- ja/tutorials-and-examples/blog-auth-example/auth.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ja/tutorials-and-examples/blog-auth-example/auth.rst b/ja/tutorials-and-examples/blog-auth-example/auth.rst index 24e5de321..f0622652f 100644 --- a/ja/tutorials-and-examples/blog-auth-example/auth.rst +++ b/ja/tutorials-and-examples/blog-auth-example/auth.rst @@ -116,6 +116,7 @@ UsersControllerもまた作成しましょう。 $this->Session->setFlash(__('User was not deleted')); $this->redirect(array('action' => 'index')); } + } 以前ビューを作成した方法と同様に、またはコード生成ツールを用いて、ビューを実装します。 @@ -179,7 +180,8 @@ AuthComponentに認証されていないユーザーがusersのadd関数にア public function beforeFilter() { parent::beforeFilter(); - $this->Auth->allow('add'); // ユーザーに自身で登録させる + // ユーザー自身による登録とログアウトを許可する + $this->Auth->allow('add', 'logout'); } public function login() { -- GitLab From 7a95fa3168ef96b19049d65549ac1ebc6c8d1191 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Sun, 1 Dec 2013 19:53:18 -0500 Subject: [PATCH 090/458] Fix overflows on pgs. 17-19. --- en/tutorials-and-examples/blog/part-two.rst | 50 ++++++++++++++++----- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/en/tutorials-and-examples/blog/part-two.rst b/en/tutorials-and-examples/blog/part-two.rst index 0ccb3beaa..e22635cb8 100644 --- a/en/tutorials-and-examples/blog/part-two.rst +++ b/en/tutorials-and-examples/blog/part-two.rst @@ -513,10 +513,20 @@ posts:
    - Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?> + Html->link( + $post['Post']['title'], + array('action' => 'view', $post['Post']['id']) + ); + ?> - Html->link('Edit', array('action' => 'edit', $post['Post']['id'])); ?> + Html->link( + 'Edit', + array('action' => 'edit', $post['Post']['id']) + ); + ?> @@ -538,7 +548,9 @@ Next, let's make a way for users to delete posts. Start with a } if ($this->Post->delete($id)) { - $this->Session->setFlash(__('The post with id: %s has been deleted.', h($id))); + $this->Session->setFlash( + __('The post with id: %s has been deleted.', h($id)) + ); return $this->redirect(array('action' => 'index')); } } @@ -576,15 +588,26 @@ links that allow users to delete posts, however:
    - Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?> + Html->link( + $post['Post']['title'], + array('action' => 'view', $post['Post']['id']) + ); + ?> - Form->postLink( - 'Delete', - array('action' => 'delete', $post['Post']['id']), - array('confirm' => 'Are you sure?')); + Form->postLink( + 'Delete', + array('action' => 'delete', $post['Post']['id']), + array('confirm' => 'Are you sure?') + ); + ?> + Html->link( + 'Edit', array('action' => 'edit', $post['Post']['id']) + ); ?> - Html->link('Edit', array('action' => 'edit', $post['Post']['id'])); ?> @@ -624,9 +647,14 @@ PostsController by creating a routing rule. CakePHP's routing is found in ``/app/Config/routes.php``. You'll want to comment out or remove the line that defines the default root -route. It looks like this:: +route. It looks like this: + +.. code-block:: php - Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); + Router::connect( + '/', + array('controller' => 'pages', 'action' => 'display', 'home') + ); This line connects the URL '/' with the default CakePHP home page. We want it to connect with our own controller, so replace that line -- GitLab From e6d1b6046ffffded6a405a8a3cd2c059606f18f6 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Sun, 1 Dec 2013 20:17:37 -0500 Subject: [PATCH 091/458] Fix overflows on pgs. 33-39. Remove whitespace on respective files. --- en/installation/advanced-installation.rst | 6 ++- en/installation/url-rewriting.rst | 46 +++++++++++++---------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/en/installation/advanced-installation.rst b/en/installation/advanced-installation.rst index e6b2436b9..5d18b7904 100644 --- a/en/installation/advanced-installation.rst +++ b/en/installation/advanced-installation.rst @@ -86,8 +86,10 @@ the autoloader, and work around an issue in Composer's autoloader. In your // Load Composer autoload. require APP . '/Vendor/autoload.php'; - // Remove and re-prepend CakePHP's autoloader as Composer thinks it is the most important. - // See https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b + // Remove and re-prepend CakePHP's autoloader as Composer thinks it is the + // most important. + // See: https://github.com/composer/ + // composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b spl_autoload_unregister(array('App', 'load')); spl_autoload_register(array('App', 'load'), true, true); diff --git a/en/installation/url-rewriting.rst b/en/installation/url-rewriting.rst index 5dcdff302..a25377ea4 100644 --- a/en/installation/url-rewriting.rst +++ b/en/installation/url-rewriting.rst @@ -22,10 +22,10 @@ You may also take a look at http://wiki.apache.org/httpd/DistrosDefaultLayout fo # Each directory to which Apache has access can be configured with respect # to which services and features are allowed and/or disabled in that - # directory (and its subdirectories). + # directory (and its subdirectories). # - # First, we configure the "default" to be a very restrictive set of - # features. + # First, we configure the "default" to be a very restrictive set of + # features. # Options FollowSymLinks @@ -85,10 +85,10 @@ You may also take a look at http://wiki.apache.org/httpd/DistrosDefaultLayout fo RewriteRule ^(.*)$ index.php [QSA,L] - If your CakePHP site still has problems with mod\_rewrite you might - want to try and modify settings for virtualhosts. If on ubuntu, - edit the file /etc/apache2/sites-available/default (location is - distribution dependent). In this file, ensure that + If your CakePHP site still has problems with mod\_rewrite you might + want to try and modify settings for virtualhosts. If on ubuntu, + edit the file /etc/apache2/sites-available/default (location is + distribution dependent). In this file, ensure that ``AllowOverride None`` is changed to ``AllowOverride All``, so you have:: @@ -103,7 +103,7 @@ You may also take a look at http://wiki.apache.org/httpd/DistrosDefaultLayout fo If on Mac OSX, another solution is to use the tool virtualhostx to - make a virtual host to point to your folder. + make a virtual host to point to your folder. For many hosting services (GoDaddy, 1and1), your web server is actually being served from a user directory that already uses @@ -128,7 +128,7 @@ You may also take a look at http://wiki.apache.org/httpd/DistrosDefaultLayout fo The details of those changes will depend on your setup, and can include additional things that are not CakePHP related. Please refer to Apache's online documentation for more information. - + #. (Optional) To improve production setup, you should prevent invalid assets from being parsed by CakePHP. Modify your webroot .htaccess to something like:: @@ -140,13 +140,13 @@ You may also take a look at http://wiki.apache.org/httpd/DistrosDefaultLayout fo RewriteCond %{REQUEST_URI} !^/(app/webroot/)?(img|css|js)/(.*)$ RewriteRule ^(.*)$ index.php [QSA,L] - + The above will simply prevent incorrect assets from being sent to index.php and instead display your webserver's 404 page. - - Additionally you can create a matching HTML 404 page, or use the default + + Additionally you can create a matching HTML 404 page, or use the default built-in CakePHP 404 by adding an ``ErrorDocument`` directive:: - + ErrorDocument 404 /404-not-found Pretty URLs on nginx @@ -170,7 +170,7 @@ you will need PHP running as a FastCGI instance. server { listen 80; server_name example.com; - + # root directive should be global root /var/www/example.com/public/app/webroot/; index index.php; @@ -213,21 +213,27 @@ these steps: - + - + - + - + - + - + -- GitLab From c0ed8f609a74f15244dbe518aaaf1d92ca05dd57 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Sun, 1 Dec 2013 20:50:19 -0500 Subject: [PATCH 092/458] Fix overflows on pgs. 52-60. Remove whitespace on respective files. --- en/controllers.rst | 41 +++++++++++++++++++++++------ en/controllers/request-response.rst | 12 +++++---- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/en/controllers.rst b/en/controllers.rst index 50cf30bce..108039be5 100644 --- a/en/controllers.rst +++ b/en/controllers.rst @@ -334,9 +334,13 @@ Flow Control public function place_order() { // Logic for finalizing order goes here if ($success) { - return $this->redirect(array('controller' => 'orders', 'action' => 'thanks')); + return $this->redirect( + array('controller' => 'orders', 'action' => 'thanks') + ); } - return $this->redirect(array('controller' => 'orders', 'action' => 'confirm')); + return $this->redirect( + array('controller' => 'orders', 'action' => 'confirm') + ); } You can also use a relative or absolute URL as the $url argument:: @@ -364,14 +368,27 @@ Flow Control to a URL like: ``http://www.example.com/orders/confirm/product:pizza/quantity:5`` you can use:: - $this->redirect(array('controller' => 'orders', 'action' => 'confirm', 'product' => 'pizza', 'quantity' => 5)); + $this->redirect(array( + 'controller' => 'orders', + 'action' => 'confirm', + 'product' => 'pizza', + 'quantity' => 5) + ); An example using query strings and hash would look like:: $this->redirect(array( - 'controller' => 'orders', 'action' => 'confirm', '?' => array('product' => 'pizza', 'quantity' => 5), '#' => 'top')); + 'controller' => 'orders', + 'action' => 'confirm', + '?' => array( + 'product' => 'pizza', + 'quantity' => 5 + ), + '#' => 'top') + ); - The generated URL would be: ``http://www.example.com/orders/confirm?product=pizza&quantity=5#top`` + The generated URL would be:: + http://www.example.com/orders/confirm?product=pizza&quantity=5#top .. php:method:: flash(string $message, string|array $url, integer $pause, string $layout) @@ -447,7 +464,9 @@ Other Useful Methods class UserController extends AppController { public function delete($id) { // delete code goes here, and then... - return $this->redirect($this->referer(array('action' => 'index'))); + return $this->redirect( + $this->referer(array('action' => 'index')) + ); } } @@ -565,7 +584,10 @@ Other Useful Methods if (empty($this->request->params['requested'])) { throw new ForbiddenException(); } - return $this->Comment->find('all', array('order' => 'Comment.created DESC', 'limit' => 10)); + return $this->Comment->find( + 'all', + array('order' => 'Comment.created DESC', 'limit' => 10) + ); } } @@ -651,7 +673,10 @@ Other Useful Methods model:: $this->loadModel('Article'); - $recentArticles = $this->Article->find('all', array('limit' => 5, 'order' => 'Article.created DESC')); + $recentArticles = $this->Article->find( + 'all', + array('limit' => 5, 'order' => 'Article.created DESC') + ); $this->loadModel('User', 2); $user = $this->User->read(); diff --git a/en/controllers/request-response.rst b/en/controllers/request-response.rst index f871d4b5a..d8b9d1fb5 100644 --- a/en/controllers/request-response.rst +++ b/en/controllers/request-response.rst @@ -82,7 +82,8 @@ Querystring parameters can be read from using :php:attr:`CakeRequest::$query`:: $this->request->query['page']; // You can also access it via array access - $this->request['url']['page']; // BC accessor, will be deprecated in future versions + // Note: BC accessor, will be deprecated in future versions + $this->request['url']['page']; You can either directly access the query property, or you can use :php:meth:`CakeRequest::query()` to read the URL query array in an error free manner. @@ -97,7 +98,8 @@ Accessing POST data All POST data can be accessed using :php:attr:`CakeRequest::$data`. Any form data that contains a ``data`` prefix, will have that data prefix removed. For example:: - // An input with a name attribute equal to 'data[MyModel][title]' is accessible at + // An input with a name attribute equal to 'data[MyModel][title]' + // is accessible at $this->request->data['MyModel']['title']; You can either directly access the data property, or you can use @@ -294,7 +296,7 @@ CakeRequest API decoding function. Useful when interacting with XML or JSON request body content. Additional parameters for the decoding function can be passed as arguments to input():: - + $this->request->input('json_decode'); .. php:method:: data($name) @@ -631,7 +633,7 @@ The ``Etag`` header (called entity tag) is a string that uniquely identifies the requested resource. It is very much like a checksum of a file; caching will compare checksums to tell whether they match or not. -To take advantage of this header you have to either call the +To take advantage of this header you have to either call the :php:meth:`CakeResponse::checkNotModified()` method manually or to have the :php:class:`RequestHandlerComponent` included in your controller:: @@ -671,7 +673,7 @@ The Vary header --------------- In some cases you might want to serve different content using the same URL. -This is often the case if you have a multilingual page or respond with different +This is often the case if you have a multilingual page or respond with different HTML depending on the browser. Under such circumstances you can use the ``Vary`` header:: $this->response->vary('User-Agent'); -- GitLab From 04462df5cf57e1d628688ccf061e8864b29afd74 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Sun, 1 Dec 2013 21:02:07 -0500 Subject: [PATCH 093/458] Fix overflows on pgs. 62-70. --- en/controllers/request-response.rst | 44 +++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/en/controllers/request-response.rst b/en/controllers/request-response.rst index d8b9d1fb5..8471f9422 100644 --- a/en/controllers/request-response.rst +++ b/en/controllers/request-response.rst @@ -182,10 +182,16 @@ that you can create: Some examples would be:: // Add an environment detector. - $this->request->addDetector('post', array('env' => 'REQUEST_METHOD', 'value' => 'POST')); + $this->request->addDetector( + 'post', + array('env' => 'REQUEST_METHOD', 'value' => 'POST') + ); // Add a pattern value detector. - $this->request->addDetector('iphone', array('env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i')); + $this->request->addDetector( + 'iphone', + array('env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i') + ); // Add an option detector $this->request->addDetector('internalIp', array( @@ -193,10 +199,14 @@ Some examples would be:: 'options' => array('192.168.0.101', '192.168.0.100') )); - // Add a callback detector. Can either be an anonymous function or a regular callable. - $this->request->addDetector('awesome', array('callback' => function ($request) { - return isset($request->awesome); - })); + // Add a callback detector. Can either be an anonymous function + // or a regular callable. + $this->request->addDetector( + 'awesome', + array('callback' => function ($request) { + return isset($request->awesome); + }) + ); ``CakeRequest`` also includes methods like :php:meth:`CakeRequest::domain()`, :php:meth:`CakeRequest::subdomains()` and :php:meth:`CakeRequest::host()` to @@ -459,7 +469,8 @@ to send a file as response:: public function sendFile($id) { $file = $this->Attachment->getFile($id); $this->response->file($file['path']); - //Return response object to prevent controller from trying to render a view + // Return response object to prevent controller from trying to render + // a view return $this->response; } @@ -471,7 +482,10 @@ by using the :php:meth:`CakeResponse::type()` method. If you want you can also force a file to be downloaded instead of being displayed in the browser by specifying the options:: - $this->response->file($file['path'], array('download' => true, 'name' => 'foo')); + $this->response->file( + $file['path'], + array('download' => true, 'name' => 'foo') + ); Sending a string as file ======================== @@ -487,7 +501,8 @@ a pdf or an ics generated on the fly, and serve the generated string as a file b //Optionally force file download $this->response->download('filename_for_download.ics'); - //Return response object to prevent controller from trying to render a view + // Return response object to prevent controller from trying to render + // a view return $this->response; } @@ -501,8 +516,15 @@ can be called with a few different parameter configurations:: $this->response->header('Location', 'http://example.com'); // Set multiple headers - $this->response->header(array('Location' => 'http://example.com', 'X-Extra' => 'My header')); - $this->response->header(array('WWW-Authenticate: Negotiate', 'Content-type: application/pdf')); + $this->response->header(array( + 'Location' => 'http://example.com', + 'X-Extra' => 'My header') + ); + + $this->response->header(array( + 'WWW-Authenticate: Negotiate', + 'Content-type: application/pdf') + ); Setting the same header multiple times will result in overwriting the previous values, just like regular header calls. Headers are not sent when -- GitLab From 5152b2d1fe7bfb24fb4ab7bbdad42a21f774ed95 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Mon, 2 Dec 2013 07:55:55 -0500 Subject: [PATCH 094/458] Fix overflows on pgs. 70-80. --- en/core-libraries/components/pagination.rst | 38 +++++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/en/core-libraries/components/pagination.rst b/en/core-libraries/components/pagination.rst index 1e2d29b52..609f6f936 100644 --- a/en/core-libraries/components/pagination.rst +++ b/en/core-libraries/components/pagination.rst @@ -111,7 +111,10 @@ has not been added already:: You can filter the records by passing conditions as second parameter to the ``paginate()`` function:: - $data = $this->Paginator->paginate('Recipe', array('Recipe.title LIKE' => 'a%')); + $data = $this->Paginator->paginate( + 'Recipe', + array('Recipe.title LIKE' => 'a%') + ); Or you can also set ``conditions`` and other pagination settings array inside your action:: @@ -137,11 +140,13 @@ a behavior attached to your model. Behaviors implementing ``paginate`` and/or normal additional first parameter of ``$model``:: // paginate and paginateCount implemented on a behavior. - public function paginate(Model $model, $conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) { + public function paginate(Model $model, $conditions, $fields, $order, $limit, + $page = 1, $recursive = null, $extra = array()) { // method content } - public function paginateCount(Model $model, $conditions = null, $recursive = 0, $extra = array()) { + public function paginateCount(Model $model, $conditions = null, + $recursive = 0, $extra = array()) { // method body } @@ -168,10 +173,22 @@ from:: /** * Overridden paginate method - group by week, away_team_id and home_team_id */ - public function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) { + public function paginate($conditions, $fields, $order, $limit, $page = 1, + $recursive = null, $extra = array()) { $recursive = -1; $group = $fields = array('week', 'away_team_id', 'home_team_id'); - return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group')); + return $this->find( + 'all', + compact( + 'conditions', + 'fields', + 'order', + 'limit', + 'page', + 'recursive', + 'group' + ) + ); } You also need to override the core ``paginateCount()``, this method @@ -182,8 +199,15 @@ accordingly depending on what database you are using:: /** * Overridden paginateCount method */ - public function paginateCount($conditions = null, $recursive = 0, $extra = array()) { - $sql = "SELECT DISTINCT ON(week, home_team_id, away_team_id) week, home_team_id, away_team_id FROM games"; + public function paginateCount($conditions = null, $recursive = 0, + $extra = array()) { + $sql = "SELECT + DISTINCT ON( + week, home_team_id, away_team_id + ) + week, home_team_id, away_team_id + FROM + games"; $this->recursive = $recursive; $results = $this->query($sql); return count($results); -- GitLab From 3731536d4fd39867fd7e9049ef1dab807829d9a5 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Mon, 2 Dec 2013 08:12:10 -0500 Subject: [PATCH 095/458] Fix overflows on pgs. 81-90. --- .../components/authentication.rst | 21 ++++++++++++++----- en/core-libraries/components/sessions.rst | 18 +++++++++++----- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/en/core-libraries/components/authentication.rst b/en/core-libraries/components/authentication.rst index 34d5996a1..36c7a26e8 100644 --- a/en/core-libraries/components/authentication.rst +++ b/en/core-libraries/components/authentication.rst @@ -169,9 +169,15 @@ working with a login form could look like:: if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); - // Prior to 2.3 use `return $this->redirect($this->Auth->redirect());` + // Prior to 2.3 use + // `return $this->redirect($this->Auth->redirect());` } else { - $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth'); + $this->Session->setFlash( + __('Username or password is incorrect'), + 'default', + array(), + 'auth' + ); } } } @@ -313,7 +319,8 @@ messages AuthComponent uses. In your controller's beforeFilter, or component settings you can use ``authError`` to customize the error used for when authorization fails:: - $this->Auth->authError = "This error shows up with the user tries to access a part of the website that is protected."; + $this->Auth->authError = "This error shows up with the user tries to access a + part of the website that is protected."; .. versionchanged:: 2.4 Sometimes, you want to display the authorization error only after @@ -366,7 +373,9 @@ callback of your model using appropriate password hasher class:: public function beforeSave($options = array()) { if (!$this->id) { $passwordHasher = new SimplePasswordHasher(); - $this->data['User']['password'] = $passwordHasher->hash($this->data['User']['password']); + $this->data['User']['password'] = $passwordHasher->hash( + $this->data['User']['password'] + ); } return true; } @@ -413,7 +422,9 @@ from the normal password hash:: public function beforeSave($options = array()) { // make a password for digest auth. $this->data['User']['digest_hash'] = DigestAuthenticate::password( - $this->data['User']['username'], $this->data['User']['password'], env('SERVER_NAME') + $this->data['User']['username'], + $this->data['User']['password'], + env('SERVER_NAME') ); return true; } diff --git a/en/core-libraries/components/sessions.rst b/en/core-libraries/components/sessions.rst index d257e8e04..0dd3633ee 100644 --- a/en/core-libraries/components/sessions.rst +++ b/en/core-libraries/components/sessions.rst @@ -124,7 +124,7 @@ Creating notification messages echo $this->Session->flash('good'); echo $this->Session->flash('bad'); - The ``$element`` parameter allows you to control which element + The ``$element`` parameter allows you to control which element (located in ``/app/View/Elements``) should be used to render the message in. In the element the message is available as ``$message``. First we set the flash in our controller:: @@ -137,22 +137,30 @@ Creating notification messages
    ``$params`` allows you to pass additional view variables to the - rendered layout. Parameters can be passed affecting the rendered div, for + rendered layout. Parameters can be passed affecting the rendered div, for example adding "class" in the $params array will apply a class to the ``div`` output using ``$this->Session->flash()`` in your layout or view.:: - $this->Session->setFlash('Example message text', 'default', array('class' => 'example_class')); + $this->Session->setFlash( + 'Example message text', + 'default', + array('class' => 'example_class') + ); The output from using ``$this->Session->flash()`` with the above example would be::
    Example message text
    - To use an element from a plugin just specify the plugin in the + To use an element from a plugin just specify the plugin in the ``$params``:: // Will use /app/Plugin/Comment/View/Elements/flash_no_spam.ctp - $this->Session->setFlash('Message!', 'flash_no_spam', array('plugin' => 'Comment')); + $this->Session->setFlash( + 'Message!', + 'flash_no_spam', + array('plugin' => 'Comment') + ); .. note:: By default CakePHP does not HTML escape flash messages. If you are using -- GitLab From 1854d1e1ddd9c39188b439d0b27d32c6745c660a Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Mon, 2 Dec 2013 08:20:50 -0500 Subject: [PATCH 096/458] Fix overflows on pgs. 90-100. --- en/core-libraries/components/authentication.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/en/core-libraries/components/authentication.rst b/en/core-libraries/components/authentication.rst index 36c7a26e8..88e29de96 100644 --- a/en/core-libraries/components/authentication.rst +++ b/en/core-libraries/components/authentication.rst @@ -470,7 +470,10 @@ calling ``$this->Auth->login()`` with the user data you want to 'login':: public function register() { if ($this->User->save($this->request->data)) { $id = $this->User->id; - $this->request->data['User'] = array_merge($this->request->data['User'], array('id' => $id)); + $this->request->data['User'] = array_merge( + $this->request->data['User'], + array('id' => $id) + ); $this->Auth->login($this->request->data['User']); return $this->redirect('/users/home'); } -- GitLab From caee96a1e4d6d71e9a87057925756599510cf946 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Mon, 2 Dec 2013 20:07:32 -0500 Subject: [PATCH 097/458] Add notes on how to make an AllTests suite. Closes cakephp/cakephp#2407 --- en/development/testing.rst | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/en/development/testing.rst b/en/development/testing.rst index 2084f5f30..5c6d43e19 100644 --- a/en/development/testing.rst +++ b/en/development/testing.rst @@ -1127,7 +1127,7 @@ would create ``app/Test/Case/AllModelTest.php``. Put the following in it:: class AllModelTest extends CakeTestSuite { public static function suite() { $suite = new CakeTestSuite('All model tests'); - $suite->addTestDirectory(TESTS . 'Case' . DS . 'Model'); + $suite->addTestDirectory(TESTS . 'Case/Model'); return $suite; } } @@ -1137,10 +1137,23 @@ The code above will group all test cases found in the ``$suite->addTestFile($filename);``. You can recursively add a directory for all tests using:: - $suite->addTestDirectoryRecursive(TESTS . 'Case'); + $suite->addTestDirectoryRecursive(TESTS . 'Case/Model'); -Would recursively add all test cases in the ``app/Test/Case/`` -directory. +Would recursively add all test cases in the ``app/Test/Case/Model`` +directory. You can use test suites to build a suite that runs all your +application's tests:: + + class AllTestsTest extends CakeTestSuite { + public static function suite() { + $suite = new CakeTestSuite('All tests'); + $suite->addTestDirectory(TESTS . 'Case'); + return $suite; + } + } + +You can then run this test on the command line using:: + + $ Console/cake test app AllTests Creating Tests for Plugins ========================== -- GitLab From 478451907aa4405c060eac3f09767377853110c4 Mon Sep 17 00:00:00 2001 From: cake17 Date: Tue, 3 Dec 2013 11:38:04 +0100 Subject: [PATCH 098/458] [fr] Follow 7d2add1f75b724e1dab867c88518091920553491 Allow logout action so logged in users can logout. --- fr/tutorials-and-examples/blog-auth-example/auth.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fr/tutorials-and-examples/blog-auth-example/auth.rst b/fr/tutorials-and-examples/blog-auth-example/auth.rst index 37a623203..d1b50ff8e 100644 --- a/fr/tutorials-and-examples/blog-auth-example/auth.rst +++ b/fr/tutorials-and-examples/blog-auth-example/auth.rst @@ -128,6 +128,8 @@ de génération de code fournis avec CakePHP:: return $this->redirect(array('action' => 'index')); } + } + De la même façon, nous avons crée les vues pour nos posts de blog ou en utilisant l'outil de génération de code, nous exécutons les vues. Dans le cadre de ce tutoriel, nous allons juste montrer le add.ctp: @@ -200,7 +202,8 @@ et de réaliser l'action connexion et deconnexion:: public function beforeFilter() { parent::beforeFilter(); - $this->Auth->allow('add'); // Laissons les users d'enregistrer eux-memes + // Permet aux utilisateurs de s'enregistrer et de se déconnecter + $this->Auth->allow('add', 'logout'); } public function login() { -- GitLab From 0e6f7231b2fbe894ba009981f18bcd58d639ba5f Mon Sep 17 00:00:00 2001 From: cake17 Date: Tue, 3 Dec 2013 11:47:09 +0100 Subject: [PATCH 099/458] [fr] Follow caee96a1e4d6d71e9a87057925756599510cf946 Add notes on how to make an AllTests suite. --- fr/development/testing.rst | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/fr/development/testing.rst b/fr/development/testing.rst index 6e622eb9f..4f912fac3 100755 --- a/fr/development/testing.rst +++ b/fr/development/testing.rst @@ -1184,7 +1184,7 @@ Mettez ce qui suit dedans:: class AllModelTest extends CakeTestSuite { public static function suite() { $suite = new CakeTestSuite('All model tests'); - $suite->addTestDirectory(TESTS . 'Case' . DS . 'Model'); + $suite->addTestDirectory(TESTS . 'Case/Model'); return $suite; } } @@ -1194,10 +1194,23 @@ Le code ci-dessus va grouper tous les cas de test trouvés dans le dossier ``$suite->addTestFile($filename);``. Vous pouvez ajouter de façon récursive un répertoire pour tous les tests en utilisant:: - $suite->addTestDirectoryRecursive(TESTS . 'Case'); + $suite->addTestDirectoryRecursive(TESTS . 'Case/Model'); Ajouterait de façon récursive tous les cas de test dans le répertoire -``app/Test/Case/``. +``app/Test/Case/Model``. Vous pouvez utiliser les suites de test pour +construire une suite qui exécute tous les tests de votre application:: + + class AllTestsTest extends CakeTestSuite { + public static function suite() { + $suite = new CakeTestSuite('All tests'); + $suite->addTestDirectory(TESTS . 'Case'); + return $suite; + } + } + +Vous pouvez ensuite lancer ce test en ligne de commande en utilisant:: + + $ Console/cake test app AllTests Créer des Tests pour les Plugins ================================ -- GitLab From b8fc340d317cdf66dcfdc2dd90f92c60ac391898 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Tue, 3 Dec 2013 08:20:53 -0500 Subject: [PATCH 100/458] Makes PR changes. --- en/controllers.rst | 3 ++- en/controllers/request-response.rst | 8 ++++---- .../components/authentication.rst | 4 ++-- en/core-libraries/components/pagination.rst | 19 ++++++------------- en/installation/advanced-installation.rst | 3 +-- en/installation/url-rewriting.rst | 4 ++-- 6 files changed, 17 insertions(+), 24 deletions(-) diff --git a/en/controllers.rst b/en/controllers.rst index 108039be5..14825cde6 100644 --- a/en/controllers.rst +++ b/en/controllers.rst @@ -388,7 +388,8 @@ Flow Control ); The generated URL would be:: - http://www.example.com/orders/confirm?product=pizza&quantity=5#top + + http://www.example.com/orders/confirm?product=pizza&quantity=5#top .. php:method:: flash(string $message, string|array $url, integer $pause, string $layout) diff --git a/en/controllers/request-response.rst b/en/controllers/request-response.rst index 8471f9422..462309a5a 100644 --- a/en/controllers/request-response.rst +++ b/en/controllers/request-response.rst @@ -518,13 +518,13 @@ can be called with a few different parameter configurations:: // Set multiple headers $this->response->header(array( 'Location' => 'http://example.com', - 'X-Extra' => 'My header') - ); + 'X-Extra' => 'My header' + )); $this->response->header(array( 'WWW-Authenticate: Negotiate', - 'Content-type: application/pdf') - ); + 'Content-type: application/pdf' + )); Setting the same header multiple times will result in overwriting the previous values, just like regular header calls. Headers are not sent when diff --git a/en/core-libraries/components/authentication.rst b/en/core-libraries/components/authentication.rst index 88e29de96..bdf48fc9b 100644 --- a/en/core-libraries/components/authentication.rst +++ b/en/core-libraries/components/authentication.rst @@ -319,8 +319,8 @@ messages AuthComponent uses. In your controller's beforeFilter, or component settings you can use ``authError`` to customize the error used for when authorization fails:: - $this->Auth->authError = "This error shows up with the user tries to access a - part of the website that is protected."; + $this->Auth->authError = "This error shows up with the user tries to access" . + "a part of the website that is protected."; .. versionchanged:: 2.4 Sometimes, you want to display the authorization error only after diff --git a/en/core-libraries/components/pagination.rst b/en/core-libraries/components/pagination.rst index 609f6f936..c7ff19af2 100644 --- a/en/core-libraries/components/pagination.rst +++ b/en/core-libraries/components/pagination.rst @@ -141,12 +141,12 @@ normal additional first parameter of ``$model``:: // paginate and paginateCount implemented on a behavior. public function paginate(Model $model, $conditions, $fields, $order, $limit, - $page = 1, $recursive = null, $extra = array()) { + $page = 1, $recursive = null, $extra = array()) { // method content } - public function paginateCount(Model $model, $conditions = null, - $recursive = 0, $extra = array()) { + public function paginateCount(Model $model, $conditions = null, $recursive = 0, + $extra = array()) { // method body } @@ -174,20 +174,13 @@ from:: * Overridden paginate method - group by week, away_team_id and home_team_id */ public function paginate($conditions, $fields, $order, $limit, $page = 1, - $recursive = null, $extra = array()) { + $recursive = null, $extra = array()) { + $recursive = -1; $group = $fields = array('week', 'away_team_id', 'home_team_id'); return $this->find( 'all', - compact( - 'conditions', - 'fields', - 'order', - 'limit', - 'page', - 'recursive', - 'group' - ) + compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group') ); } diff --git a/en/installation/advanced-installation.rst b/en/installation/advanced-installation.rst index 5d18b7904..16d97f895 100644 --- a/en/installation/advanced-installation.rst +++ b/en/installation/advanced-installation.rst @@ -88,8 +88,7 @@ the autoloader, and work around an issue in Composer's autoloader. In your // Remove and re-prepend CakePHP's autoloader as Composer thinks it is the // most important. - // See: https://github.com/composer/ - // composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b + // See: http://goo.gl/kKVJO7 spl_autoload_unregister(array('App', 'load')); spl_autoload_register(array('App', 'load'), true, true); diff --git a/en/installation/url-rewriting.rst b/en/installation/url-rewriting.rst index a25377ea4..817450924 100644 --- a/en/installation/url-rewriting.rst +++ b/en/installation/url-rewriting.rst @@ -223,8 +223,8 @@ these steps: - + -- GitLab From 9dec60ff95e2b9afb8c38ce6ce6b0720c092d88d Mon Sep 17 00:00:00 2001 From: Maggion Emmanuel Date: Tue, 3 Dec 2013 21:45:10 +0100 Subject: [PATCH 101/458] Fix missing quotes --- en/development/routing.rst | 4 ++-- fr/development/routing.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/en/development/routing.rst b/en/development/routing.rst index e7f9532a1..4efaf258a 100644 --- a/en/development/routing.rst +++ b/en/development/routing.rst @@ -652,7 +652,7 @@ syntax:: 'controller' => 'posts', 'action' => 'index', 'filter' => array( - 'published' => 1 + 'published' => 1, 'frontpage' => 1 ) )); @@ -662,7 +662,7 @@ The parameters are then parsed and stored in your controller's passedArgs variab as an array, just as you sent them to :php:meth:`Router::url`:: $this->passedArgs['filter'] = array( - 'published' => 1 + 'published' => 1, 'frontpage' => 1 ); diff --git a/fr/development/routing.rst b/fr/development/routing.rst index dee3ee2a7..b2302d38c 100644 --- a/fr/development/routing.rst +++ b/fr/development/routing.rst @@ -681,7 +681,7 @@ URLs, vous pouvez utiliser la syntaxe suivante:: 'controller' => 'posts', 'action' => 'index', 'filter' => array( - 'published' => 1 + 'published' => 1, 'frontpage' => 1 ) )); @@ -693,7 +693,7 @@ controller en tableau, de la même façon que vous les envoyez au :php:meth:`Router::url`:: $this->passedArgs['filter'] = array( - 'published' => 1 + 'published' => 1, 'frontpage' => 1 ); -- GitLab From d530801c2805e9f1dd93630aadc5a5f91573d3c3 Mon Sep 17 00:00:00 2001 From: cake17 Date: Tue, 3 Dec 2013 22:46:00 +0100 Subject: [PATCH 102/458] [fr] Follow #920 Fix code line overflows pgs. 17-100 --- fr/controllers.rst | 39 ++++++++++++--- fr/controllers/request-response.rst | 49 ++++++++++++++----- .../components/authentication.rst | 14 ++++-- fr/core-libraries/components/pagination.rst | 28 ++++++++--- fr/core-libraries/components/sessions.rst | 12 ++++- fr/installation/advanced-installation.rst | 5 +- fr/installation/url-rewriting.rst | 18 ++++--- fr/tutorials-and-examples/blog/part-two.rst | 34 ++++++++++--- 8 files changed, 151 insertions(+), 48 deletions(-) diff --git a/fr/controllers.rst b/fr/controllers.rst index e6608a599..b0a2372f3 100644 --- a/fr/controllers.rst +++ b/fr/controllers.rst @@ -352,9 +352,13 @@ Contrôle de Flux public function regler_achats() { // Placez ici la logique pour finaliser l'achat... if ($success) { - return $this->redirect(array('controller' => 'paiements', 'action' => 'remerciements')); + return $this->redirect( + array('controller' => 'paiements', 'action' => 'remerciements') + ); } else { - return $this->redirect(array('controller' => 'paiements', 'action' => 'confirmations')); + return $this->redirect( + array('controller' => 'paiements', 'action' => 'confirmations') + ); } } @@ -386,15 +390,28 @@ Contrôle de Flux ``http://www.example.com/commandes/confirmation/produit:pizza/quantite:5`` vous pouvez utiliser:: - $this->redirect(array('controller' => 'commandes', 'action' => 'confirmation', 'produit' => 'pizza', 'quantite' => 5)); + $this->redirect(array( + 'controller' => 'commandes', + 'action' => 'confirmation', + 'produit' => 'pizza', + 'quantite' => 5 + )); Un example d'utilisation des requêtes en chaînes et hashés ressemblerait à ceci:: $this->redirect(array( - 'controller' => 'commandes', 'action' => 'confirmation', '?' => array('produit' => 'pizza', 'quantite' => 5), '#' => 'top')); - - L'URL généré serait: ``http://www.example.com/commandes/confirmation?produit=pizza&quantite=5#top`` + 'controller' => 'commandes', + 'action' => 'confirmation', + '?' => array( + 'produit' => 'pizza', + 'quantite' => 5 + ), + '#' => 'top' + )); + + L'URL généré serait: + ``http://www.example.com/commandes/confirmation?produit=pizza&quantite=5#top`` .. php:method:: flash(string $message, string $url, integer $pause, string $layout) @@ -594,7 +611,10 @@ Autres Méthodes utiles if (empty($this->request->params['requested'])) { throw new ForbiddenException(); } - return $this->Comment->find('all', array('order' => 'Comment.created DESC', 'limit' => 10)); + return $this->Comment->find( + 'all', + array('order' => 'Comment.created DESC', 'limit' => 10) + ); } } @@ -684,7 +704,10 @@ Autres Méthodes utiles ou un de ses models associés:: $this->loadModel('Article'); - $recentArticles = $this->Article->find('all', array('limit' => 5, 'order' => 'Article.created DESC')); + $recentArticles = $this->Article->find( + 'all', + array('limit' => 5, 'order' => 'Article.created DESC') + ); $this->loadModel('User', 2); $user = $this->User->read(); diff --git a/fr/controllers/request-response.rst b/fr/controllers/request-response.rst index f946c7317..1590eecc6 100644 --- a/fr/controllers/request-response.rst +++ b/fr/controllers/request-response.rst @@ -87,7 +87,8 @@ Les paramètres Querystring peuvent être lus en utilisant $this->request->query['page']; // Vous pouvez aussi y accéder par un tableau - $this->request['url']['page']; // accesseur BC, va être déprécié dans les versions futures + // accesseur BC, va être déprécié dans les versions futures + $this->request['url']['page']; Vous pouvez soit directement accéder à la prorpiété requêtée, soit vous pouvez utiliser :php:meth:`CakeRequest::query()` pour lire l'URL requêtée d'une @@ -103,7 +104,8 @@ Toutes les données POST peuvent être atteintes à travers :php:attr:`CakeRequest::$data`. N'importe quelle forme de tableau qui contient un prefixe ``data``, va avoir sa donnée prefixée retirée. Par exemple:: - // Un input avec un nom attribute égal à 'data[MyModel][title]' est accessible + // Un input avec un nom attribute égal à 'data[MyModel][title]' + // est accessible $this->request->data['MyModel']['title']; Vous pouvez soit accéder directement à la propriété des données, soit vous @@ -193,10 +195,16 @@ pouvez créer: Quelques exemples seraient:: // Ajouter un détecteur d'environment. - $this->request->addDetector('post', array('env' => 'REQUEST_METHOD', 'value' => 'POST')); + $this->request->addDetector( + 'post', + array('env' => 'REQUEST_METHOD', 'value' => 'POST') + ); // Ajouter un détecteur de valeur model. - $this->request->addDetector('iphone', array('env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i')); + $this->request->addDetector( + 'iphone', + array('env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i') + ); // Ajouter un détecteur d'options $this->request->addDetector('internalIp', array( @@ -204,10 +212,14 @@ Quelques exemples seraient:: 'options' => array('192.168.0.101', '192.168.0.100') )); - // Ajouter un détecteur de callback. Peut soit être une fonction anonyme ou un callback régulier. - $this->request->addDetector('awesome', array('callback' => function ($request) { - return isset($request->awesome); - })); + // Ajouter un détecteur de callback. Peut soit être une fonction anonyme + // ou un callback régulier. + $this->request->addDetector( + 'awesome', + array('callback' => function ($request) { + return isset($request->awesome); + }) + ); ``CakeRequest`` inclut aussi des méthodes comme :php:meth:`CakeRequest::domain()`, :php:meth:`CakeRequest::subdomains()` @@ -486,7 +498,8 @@ fichier en réponse:: public function sendFile($id) { $file = $this->Attachment->getFile($id); $this->response->file($file['path']); - //Retourne un objet reponse pour éviter que le controller n'essaie de rendre la vue + //Retourne un objet reponse pour éviter que le controller n'essaie de + // rendre la vue return $this->response; } @@ -500,7 +513,10 @@ d'appeler :php:meth:`CakeResponse::file()` en utilisant la méthode Si vous voulez, vous pouvez aussi forcer un fichier à être téléchargé au lieu d'être affiché dans le navigateur en spécifiant les options:: - $this->response->file($file['path'], array('download' => true, 'name' => 'foo')); + $this->response->file( + $file['path'], + array('download' => true, 'name' => 'foo') + ); Envoyer une chaîne en fichier ============================= @@ -517,7 +533,8 @@ chaîne générée en fichier, vous pouvez faire cela en utilisant:: //Force le téléchargement de fichier en option $this->response->download('filename_for_download.ics'); - //Retourne l'object pour éviter au controller d'essayer de rendre une vue + //Retourne l'object pour éviter au controller d'essayer de rendre + // une vue return $this->response; } @@ -532,8 +549,14 @@ paramètres de configurations:: $this->response->header('Location', 'http://example.com'); // Régler plusieurs en-têtes - $this->response->header(array('Location' => 'http://example.com', 'X-Extra' => 'My header')); - $this->response->header(array('WWW-Authenticate: Negotiate', 'Content-type: application/pdf')); + $this->response->header(array( + 'Location' => 'http://example.com', + 'X-Extra' => 'My header' + )); + $this->response->header(array( + 'WWW-Authenticate: Negotiate', + 'Content-type: application/pdf' + )); Régler le même en-tête de multiples fois entraînera l'écrasement des précédentes valeurs, un peu comme les appels réguliers d'en-tête. Les en-têtes diff --git a/fr/core-libraries/components/authentication.rst b/fr/core-libraries/components/authentication.rst index 80c6e0726..dfecd4ea0 100755 --- a/fr/core-libraries/components/authentication.rst +++ b/fr/core-libraries/components/authentication.rst @@ -185,9 +185,15 @@ Une simple fonction de connexion pourrait ressembler à cela :: if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); - // Avant 2.3, utilisez `return $this->redirect($this->Auth->redirect());` + // Avant 2.3, utilisez + // `return $this->redirect($this->Auth->redirect());` } else { - $this->Session->setFlash(__('Username ou password est incorrect'), 'default', array(), 'auth'); + $this->Session->setFlash( + __('Username ou password est incorrect'), + 'default', + array(), + 'auth' + ); } } } @@ -401,7 +407,9 @@ callback of your model using appropriate password hasher class:: public function beforeSave($options = array()) { if (!$this->id) { $passwordHasher = new SimplePasswordHasher(); - $this->data['User']['password'] = $passwordHasher->hash($this->data['User']['password']); + $this->data['User']['password'] = $passwordHasher->hash( + $this->data['User']['password'] + ); } return true; } diff --git a/fr/core-libraries/components/pagination.rst b/fr/core-libraries/components/pagination.rst index 2b679ac1a..249f0928e 100644 --- a/fr/core-libraries/components/pagination.rst +++ b/fr/core-libraries/components/pagination.rst @@ -116,7 +116,10 @@ il n'a pas déjà été ajouté:: Vous pouvez filtrer les enregistrements en passant des conditions en second paramètre à la fonction ``paginate()``:: - $data = $this->Paginator->paginate('Recipe', array('Recipe.title LIKE' => 'a%')); + $data = $this->Paginator->paginate( + 'Recipe', + array('Recipe.title LIKE' => 'a%') + ); Ou vous pouvez aussi définir des ``conditions`` et d'autres tableaux de configuration de pagination à l'intérieur de votre action:: @@ -143,11 +146,13 @@ implémenter les signatures de méthode définies ci-dessous avec le premier paramètre normal supplémentaire de ``$model``:: // paginate et paginateCount implémentés dans le behavior. - public function paginate(Model $model, $conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) { + public function paginate(Model $model, $conditions, $fields, $order, $limit, + $page = 1, $recursive = null, $extra = array()) { // contenu de la méthode } - public function paginateCount(Model $model, $conditions = null, $recursive = 0, $extra = array()) { + public function paginateCount(Model $model, $conditions = null, + $recursive = 0, $extra = array()) { // corps (body) de la méthode } @@ -175,10 +180,12 @@ dans le model dans lequel vous voulez récupérer des données:: /** * Surcharge de la méthode paginate - groupée par week, away_team_id et home_team_id */ - public function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) { + public function paginate($conditions, $fields, $order, $limit, $page = 1, + $recursive = null, $extra = array()) { $recursive = -1; $group = $fields = array('week', 'away_team_id', 'home_team_id'); - return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group')); + return $this->find('all', compact('conditions', 'fields', 'order', + 'limit', 'page', 'recursive', 'group')); } Vous aurez aussi besoin de surcharger le ``paginateCount()`` du noyau, @@ -190,8 +197,15 @@ utilisez:: /** * Surcharge de la méthode paginateCount */ - public function paginateCount($conditions = null, $recursive = 0, $extra = array()) { - $sql = "SELECT DISTINCT ON(week, home_team_id, away_team_id) week, home_team_id, away_team_id FROM games"; + public function paginateCount($conditions = null, $recursive = 0, + $extra = array()) { + $sql = "SELECT ++ DISTINCT ON( ++ week, home_team_id, away_team_id ++ ) ++ week, home_team_id, away_team_id ++ FROM ++ games"; $this->recursive = $recursive; $results = $this->query($sql); return count($results); diff --git a/fr/core-libraries/components/sessions.rst b/fr/core-libraries/components/sessions.rst index 13cad1501..36be04068 100644 --- a/fr/core-libraries/components/sessions.rst +++ b/fr/core-libraries/components/sessions.rst @@ -145,7 +145,11 @@ Création de messages de notification $params qui appliquera une classe à la div de sortie en utilisant ``$this->Session->flash()`` dans votre layout ou vue.:: - $this->Session->setFlash('Message Exemple', 'default', array('class' => 'classe_exemple')); + $this->Session->setFlash( + 'Message Exemple', + 'default', + array('class' => 'classe_exemple') + ); La sortie en utilisant ``$this->Session->flash()`` avec l'exemple ci-dessus sera:: @@ -156,7 +160,11 @@ Création de messages de notification dans le ``$params``:: // Utilisera /app/Plugin/Comment/View/Elements/flash_no_spam.ctp - $this->Session->setFlash('Message!', 'flash_no_spam', array('plugin' => 'Comment')); + $this->Session->setFlash( + 'Message!', + 'flash_no_spam', + array('plugin' => 'Comment') + ); .. note:: Par défaut, CakePHP n'échappe pas le HTML des messages flash. Si vous diff --git a/fr/installation/advanced-installation.rst b/fr/installation/advanced-installation.rst index 384feac9b..945a602e2 100644 --- a/fr/installation/advanced-installation.rst +++ b/fr/installation/advanced-installation.rst @@ -91,8 +91,9 @@ fichier ``Config/bootstrap.php``, ajoutez ce qui suit:: // Charger l'autoload de composer. require APP . '/Vendor/autoload.php'; - // Retire et re-prepend l'autoloader de CakePHP puisque composer pense que c'est le plus important. - // See https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b + // Retire et re-prepend l'autoloader de CakePHP puisque composer pense que + // c'est le plus important. + // See http://goo.gl/kKVJO7 spl_autoload_unregister(array('App', 'load')); spl_autoload_register(array('App', 'load'), true, true); diff --git a/fr/installation/url-rewriting.rst b/fr/installation/url-rewriting.rst index bd3bc21bd..fa5b09176 100644 --- a/fr/installation/url-rewriting.rst +++ b/fr/installation/url-rewriting.rst @@ -218,21 +218,27 @@ faire, suivez ces étapes: - + - + - + - + - + - + diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst index e3f9cd271..ce6852fd9 100755 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -528,10 +528,16 @@ Vous pouvez maintenant mettre à jour votre vue "index" avec des liens pour
    - Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?> + Html->link( + $post['Post']['title'], + array('action' => 'view', $post['Post']['id']) + ); ?> - Html->link('Editer', array('action' => 'edit', $post['Post']['id'])); ?> + Html->link( + 'Editer', + array('action' => 'edit', $post['Post']['id']) + ); ?> @@ -553,7 +559,9 @@ Posts (PostsController) :: throw new MethodNotAllowedException(); } if ($this->Post->delete($id)) { - $this->Session->setFlash(__('Le post avec id : %s a été supprimé.', h($id))); + $this->Session->setFlash( + __('Le post avec id : %s a été supprimé.', h($id)) + ); return $this->redirect(array('action' => 'index')); } } @@ -578,7 +586,10 @@ ainsi :

    Blog posts

    -

    Html->link('Ajouter un Post', array('action' => 'add')); ?>

    +

    Html->link( + 'Ajouter un Post', + array('action' => 'add') + ); ?>

    @@ -593,7 +604,10 @@ ainsi : - - + + + + + + + + + + + + + + + + :: diff --git a/en/core-libraries/helpers/js.rst b/en/core-libraries/helpers/js.rst index c53bd4be7..570813889 100644 --- a/en/core-libraries/helpers/js.rst +++ b/en/core-libraries/helpers/js.rst @@ -77,7 +77,7 @@ To override the "$" shortcut, use the jQueryObject variable:: $this->Js->JqueryEngine->jQueryObject = '$j'; echo $this->Html->scriptBlock( - 'var $j = jQuery.noConflict();', + 'var $j = jQuery.noConflict();', array('inline' => false) ); // Tell jQuery to go into noconflict mode @@ -144,7 +144,7 @@ Since most methods in JavaScript begin with a selection of elements in the DOM, ``$this->Js->get()`` returns a $this, allowing you to chain the methods using the selection. Method chaining allows you to write shorter, more expressive code:: - + $this->Js->get('#foo')->event('click', $eventCode); Is an example of method chaining. Method chaining is not possible @@ -265,7 +265,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and - ``postfix`` - String appended to the returned data. **Example Use**:: - + $json = $this->Js->object($data); .. php:method:: sortable($options = array()) @@ -297,7 +297,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and detailed information on its options and parameters. **Example Use**:: - + $this->Js->get('#my-list'); $this->Js->sortable(array( 'distance' => 5, @@ -310,10 +310,16 @@ CakePHP core. Whenever you see separate lists for ``Options`` and Assuming you were using the jQuery engine, you would get the following code in your generated JavaScript block - + .. code-block:: javascript - $("#myList").sortable({containment:"parent", distance:5, sort:onSort, start:onStart, stop:onStop}); + $("#myList").sortable({ + containment:"parent", + distance:5, + sort:onSort, + start:onStart, + stop:onStop + }); .. php:method:: request($url, $options = array()) @@ -357,7 +363,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and Set the internal 'selection' to a CSS selector. The active selection is used in subsequent operations until a new selection is made:: - + $this->Js->get('#element'); The ``JsHelper`` now will reference all other element based methods @@ -366,9 +372,9 @@ CakePHP core. Whenever you see separate lists for ``Options`` and .. php:method:: set(mixed $one, mixed $two = null) - Pass variables into JavaScript. Allows you to set variables that will be - output when the buffer is fetched with :php:meth:`JsHelper::getBuffer()` or - :php:meth:`JsHelper::writeBuffer()`. The JavaScript variable used to output + Pass variables into JavaScript. Allows you to set variables that will be + output when the buffer is fetched with :php:meth:`JsHelper::getBuffer()` or + :php:meth:`JsHelper::writeBuffer()`. The JavaScript variable used to output set variables can be controlled with :php:attr:`JsHelper::$setVariable`. .. php:method:: drag($options = array()) @@ -403,7 +409,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and If you were using the jQuery engine the following code would be added to the buffer - + .. code-block:: javascript $("#element").draggable({containment:"#content", drag:onDrag, grid:[10,10], start:onStart, stop:onStop}); @@ -440,7 +446,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and If you were using the jQuery engine the following code would be added to the buffer - + .. code-block:: javascript $("#element").droppable({accept:".items", drop:onDrop, out:onExit, over:onHover}); @@ -489,7 +495,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and If you were using the jQuery engine the following code would be added to the buffer - + .. code-block:: javascript $("#element").slider({change:onChange, max:10, min:0, orientation:"vertical", stop:onComplete, value:2}); @@ -541,13 +547,13 @@ CakePHP core. Whenever you see separate lists for ``Options`` and true) **Example use**:: - + $this->Js->get('#some-link'); $this->Js->event('click', $this->Js->alert('hey you!')); If you were using the jQuery library you would get the following JavaScript code: - + .. code-block:: javascript $('#some-link').bind('click', function (event) { @@ -564,7 +570,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and If you were using the jQuery library you would the following JavaScript code would be added to the buffer. Note that the default browser event is not cancelled: - + .. code-block:: javascript $('#some-link').bind('click', function (event) { @@ -587,7 +593,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and $this->Js->each('$(this).css({color: "red"});'); Using the jQuery engine would create the following JavaScript: - + .. code-block:: javascript $('div.message').each(function () { $(this).css({color: "red"}); }); @@ -661,9 +667,9 @@ CakePHP core. Whenever you see separate lists for ``Options`` and Create an HTML anchor element that has a click event bound to it. Options can include both those for :php:func:`HtmlHelper::link()` and :php:func:`JsHelper::request()`, :php:func:`JsHelper::event()`, ``$options`` - is a :term:`html attributes` array that are appended to the generated - anchor element. If an option is not part of the standard attributes - or ``$htmlAttributes`` it will be passed to :php:func:`JsHelper::request()` + is a :term:`html attributes` array that are appended to the generated + anchor element. If an option is not part of the standard attributes + or ``$htmlAttributes`` it will be passed to :php:func:`JsHelper::request()` as an option. If an id is not supplied, a randomly generated one will be created for each link generated. @@ -759,7 +765,7 @@ example we'll be using jQuery:: Similar to 1.2 you need to tell the ``PaginatorHelper`` that you want to make JavaScript enhanced links instead of plain HTML ones. To do so you use ``options()``:: - + $this->Paginator->options(array( 'update' => '#content', 'evalScripts' => true -- GitLab From 7ef9f51959445f6c8232af527f8bc423ab5ff9c1 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Thu, 5 Dec 2013 08:55:40 -0500 Subject: [PATCH 106/458] Make PR changes. --- en/core-libraries/helpers/form.rst | 6 ++++-- en/core-libraries/helpers/html.rst | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/en/core-libraries/helpers/form.rst b/en/core-libraries/helpers/form.rst index 1ebf2cf99..cf5b2467b 100644 --- a/en/core-libraries/helpers/form.rst +++ b/en/core-libraries/helpers/form.rst @@ -215,10 +215,11 @@ There are a number of options for create(): defaultOptions by declaring the option in the input() call:: echo $this->Form->input('password'); // No div, no label + // has a label element echo $this->Form->input( 'username', array('label' => 'Username') - ); // has a label element + ); Closing the Form ================ @@ -1664,10 +1665,11 @@ inputDefaults. You can override the default options by declaring the option in t input() call:: echo $this->Form->input('password'); // No div, no label with class 'fancy' + // has a label element same defaults echo $this->Form->input( 'username', array('label' => 'Username') - ); // has a label element same defaults + ); Working with SecurityComponent ============================== diff --git a/en/core-libraries/helpers/html.rst b/en/core-libraries/helpers/html.rst index 788065670..99be917b1 100644 --- a/en/core-libraries/helpers/html.rst +++ b/en/core-libraries/helpers/html.rst @@ -883,10 +883,11 @@ methods of the HtmlHelper and how to use them. .. code-block:: html - - + + + :param array $thOptions: An array of :term:`html attributes` for the
    Id
    - Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?> + Html->link( + $post['Post']['title'], + array('action' => 'view', $post['Post']['id']) + ); ?> Form->postLink( @@ -601,7 +615,10 @@ ainsi : array('action' => 'delete', $post['Post']['id']), array('confirm' => 'Etes-vous sûr ?')); ?> - Html->link('Editer', array('action' => 'edit', $post['Post']['id'])); ?> + Html->link( + 'Editer', + array('action' => 'edit', $post['Post']['id']) + ); ?> @@ -643,7 +660,10 @@ Le routage de CakePHP se trouve dans ``/app/Config/routes.php``. Vous devrez commenter ou supprimer la ligne qui définit la route par défaut. Elle ressemble à cela :: - Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); + Router::connect( + '/', + array('controller' => 'pages', 'action' => 'display', 'home') + ); Cette ligne connecte l'URL '/' à la page d'accueil par défaut de CakePHP. Nous voulons que cette URL soit connectée à notre propre controller, remplacez donc -- GitLab From db556935e0b7d12fa3a70f51106b0e50ceef7f6a Mon Sep 17 00:00:00 2001 From: Norio Suzuki Date: Wed, 4 Dec 2013 08:45:46 +0900 Subject: [PATCH 103/458] Convert TAB to Space. --- ja/tutorials-and-examples/blog-auth-example/auth.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/tutorials-and-examples/blog-auth-example/auth.rst b/ja/tutorials-and-examples/blog-auth-example/auth.rst index f0622652f..cddc2a23b 100644 --- a/ja/tutorials-and-examples/blog-auth-example/auth.rst +++ b/ja/tutorials-and-examples/blog-auth-example/auth.rst @@ -180,8 +180,8 @@ AuthComponentに認証されていないユーザーがusersのadd関数にア public function beforeFilter() { parent::beforeFilter(); - // ユーザー自身による登録とログアウトを許可する - $this->Auth->allow('add', 'logout'); + // ユーザー自身による登録とログアウトを許可する + $this->Auth->allow('add', 'logout'); } public function login() { -- GitLab From e11a29fa8e9652be4f842160d213c721c258f0c5 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Wed, 4 Dec 2013 18:36:00 -0500 Subject: [PATCH 104/458] Fix overflows on pgs. 101-150. --- en/controllers/components.rst | 12 +++++++++--- .../components/access-control-lists.rst | 12 ++++++++++-- .../components/request-handling.rst | 6 ++++-- en/views.rst | 17 +++++++++++++---- en/views/media-view.rst | 7 ++++--- en/views/themes.rst | 15 +++++++++------ 6 files changed, 49 insertions(+), 20 deletions(-) diff --git a/en/controllers/components.rst b/en/controllers/components.rst index 6c72c886d..fa5603371 100644 --- a/en/controllers/components.rst +++ b/en/controllers/components.rst @@ -33,7 +33,10 @@ method:: public $components = array( 'Auth' => array( 'authorize' => array('controller'), - 'loginAction' => array('controller' => 'users', 'action' => 'login') + 'loginAction' => array( + 'controller' => 'users', + 'action' => 'login' + ) ), 'Cookie' => array('name' => 'CookieMonster') ); @@ -49,7 +52,10 @@ as:: public function beforeFilter() { $this->Auth->authorize = array('controller'); - $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); + $this->Auth->loginAction = array( + 'controller' => 'users', + 'action' => 'login' + ); $this->Cookie->name = 'CookieMonster'; } @@ -105,7 +111,7 @@ them like so:: class PostsController extends AppController { public $components = array('Session', 'Cookie'); - + public function delete() { if ($this->Post->delete($this->request->data('Post.id')) { $this->Session->setFlash('Post deleted.'); diff --git a/en/core-libraries/components/access-control-lists.rst b/en/core-libraries/components/access-control-lists.rst index c7bc96924..c6693af27 100644 --- a/en/core-libraries/components/access-control-lists.rst +++ b/en/core-libraries/components/access-control-lists.rst @@ -798,8 +798,16 @@ yourself. What we have above is equivalent to this: // 6342 = Legolas // 1564 = Gimli - $this->Acl->deny(array('model' => 'User', 'foreign_key' => 6342), 'Weapons', 'delete'); - $this->Acl->deny(array('model' => 'User', 'foreign_key' => 1564), 'Weapons', 'delete'); + $this->Acl->deny( + array('model' => 'User', 'foreign_key' => 6342), + 'Weapons', + 'delete' + ); + $this->Acl->deny( + array('model' => 'User', 'foreign_key' => 1564), + 'Weapons', + 'delete' + ); .. note:: diff --git a/en/core-libraries/components/request-handling.rst b/en/core-libraries/components/request-handling.rst index 098bebd17..bf9050e14 100644 --- a/en/core-libraries/components/request-handling.rst +++ b/en/core-libraries/components/request-handling.rst @@ -49,12 +49,14 @@ the client and its request. public function beforeFilter() { if ($this->RequestHandler->accepts('html')) { - // Execute code only if client accepts an HTML (text/html) response + // Execute code only if client accepts an HTML (text/html) + // response } elseif ($this->RequestHandler->accepts('xml')) { // Execute XML-only code } if ($this->RequestHandler->accepts(array('xml', 'rss', 'atom'))) { - // Executes if the client accepts any of the above: XML, RSS or Atom + // Executes if the client accepts any of the above: XML, RSS + // or Atom } } } diff --git a/en/views.rst b/en/views.rst index abb0f9bd4..2b481ec2f 100644 --- a/en/views.rst +++ b/en/views.rst @@ -480,8 +480,10 @@ The options supported are 'cache' and 'callbacks'. An example:: "foobar" => "This is passed to the element as $foobar", ), array( - "cache" => "long_view", // uses the "long_view" cache configuration - "callbacks" => true // set to true to have before/afterRender called for the element + // uses the "long_view" cache configuration + "cache" => "long_view", + // set to true to have before/afterRender called for the element + "callbacks" => true ) ); @@ -527,7 +529,11 @@ like the following: .. code-block:: php

    Latest Posts

    - requestAction('posts/index/sort:created/direction:asc/limit:5'); ?> + requestAction( + 'posts/index/sort:created/direction:asc/limit:5' + ); + ?>
    1. @@ -674,7 +680,10 @@ To call any view method use ``$this->method()`` object type and URL. This method is often used by helpers that need to generate unique DOM ID's for elements such as the :php:class:`JsHelper`:: - $uuid = $this->uuid('form', array('controller' => 'posts', 'action' => 'index')); + $uuid = $this->uuid( + 'form', + array('controller' => 'posts', 'action' => 'index') + ); //$uuid contains 'form0425fe3bad' .. php:method:: addScript(string $name, string $content) diff --git a/en/views/media-view.rst b/en/views/media-view.rst index 9ab8df785..efdda41ca 100644 --- a/en/views/media-view.rst +++ b/en/views/media-view.rst @@ -5,7 +5,7 @@ Media Views .. deprecated:: 2.3 Use :ref:`cake-response-file` instead. - + Media views allow you to send binary files to the user. For example, you may wish to have a directory of files outside of the webroot to prevent users from direct linking them. You can use the Media view to pull the file from a special @@ -32,7 +32,7 @@ parameters to specify where your file is located:: } Here's an example of rendering a file whose mime type is not included in the -MediaView's ``$mimeType`` array. We are also using a relative path which will +MediaView's ``$mimeType`` array. We are also using a relative path which will default to your ``app/webroot`` folder:: public function download() { @@ -43,7 +43,8 @@ default to your ``app/webroot`` folder:: 'name' => 'example', 'extension' => 'docx', 'mimeType' => array( - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' + 'docx' => 'application/vnd.openxmlformats-officedocument' . + '.wordprocessingml.document' ), 'path' => 'files' . DS ); diff --git a/en/views/themes.rst b/en/views/themes.rst index 975f0e316..7739d6dba 100644 --- a/en/views/themes.rst +++ b/en/views/themes.rst @@ -45,9 +45,12 @@ handled by :php:class:`Dispatcher`. To improve performance for production environments, it's recommended that you either symlink or copy theme assets into the application's webroot. See below for more information. -To use the new theme webroot create directories like -``app/View/Themed//webroot`` in your theme. The -Dispatcher will handle finding the correct theme assets in your view paths. +To use the new theme webroot create directories like:: + + app/View/Themed//webroot + +in your theme. The Dispatcher will handle finding the correct theme assets in +your view paths. All of CakePHP's built-in helpers are aware of themes and will create the correct paths automatically. Like view files, if a file isn't in the theme @@ -55,12 +58,12 @@ folder, it will default to the main webroot folder:: //When in a theme with the name of 'purple_cupcake' $this->Html->css('main.css'); - + //creates a path like /theme/purple_cupcake/css/main.css - + //and links to - app/View/Themed/PurpleCupcake/webroot/css/main.css + app/View/Themed/PurpleCupcake/webroot/css/main.css Increasing performance of plugin and theme assets ------------------------------------------------- -- GitLab From accdf2b450da64b66d67f81b61032687202fad3b Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Wed, 4 Dec 2013 19:32:10 -0500 Subject: [PATCH 105/458] Fix overflows on pgs. 151-200. --- en/core-libraries/helpers/form.rst | 130 +++++++++++++++++++++-------- en/core-libraries/helpers/html.rst | 97 +++++++++++++++++---- en/core-libraries/helpers/js.rst | 48 ++++++----- 3 files changed, 203 insertions(+), 72 deletions(-) diff --git a/en/core-libraries/helpers/form.rst b/en/core-libraries/helpers/form.rst index 21be04ab2..1ebf2cf99 100644 --- a/en/core-libraries/helpers/form.rst +++ b/en/core-libraries/helpers/form.rst @@ -77,7 +77,8 @@ opening form tag. } // View/Recipes/edit.ctp: - // Since $this->request->data['Recipe']['id'] = 5, we will get an edit form + // Since $this->request->data['Recipe']['id'] = 5, + // we will get an edit form Form->create('Recipe'); ?> Output: @@ -139,7 +140,8 @@ There are a number of options for create(): .. code-block:: html - + When using 'put' or 'delete', your form will be functionally equivalent to a 'post' form, but when submitted, the HTTP request @@ -213,7 +215,10 @@ There are a number of options for create(): defaultOptions by declaring the option in the input() call:: echo $this->Form->input('password'); // No div, no label - echo $this->Form->input('username', array('label' => 'Username')); // has a label element + echo $this->Form->input( + 'username', + array('label' => 'Username') + ); // has a label element Closing the Form ================ @@ -262,7 +267,8 @@ Closing the Form .. code-block:: html -
      +
      +
      See the `API `_ for further details. @@ -342,7 +348,8 @@ field. Internally ``input()`` delegates to other methods in FormHelper. echo $this->Form->input('username'); //text echo $this->Form->input('password'); //password - echo $this->Form->input('approved'); //day, month, year, hour, minute, meridian + echo $this->Form->input('approved'); //day, month, year, hour, minute, + //meridian echo $this->Form->input('quote'); //textarea echo $this->Form->end('Add'); @@ -389,7 +396,10 @@ field. Internally ``input()`` delegates to other methods in FormHelper. $this->set('userGroups', $this->UserGroup->find('list')); // or - $this->set('reallyInappropriateModelNames', $this->ReallyInappropriateModelName->find('list')); + $this->set( + 'reallyInappropriateModelNames', + $this->ReallyInappropriateModelName->find('list') + ); .. note:: @@ -447,8 +457,10 @@ Output: .. code-block:: html - - + + FormHelper uses several field-suffixes internally for datetime input creation. @@ -525,7 +537,8 @@ HTML attributes. The following will cover the options specific to .. code-block:: html -
      +
      @@ -609,7 +622,9 @@ HTML attributes. The following will cover the options specific to following format:: $this->Form->input('Model.field', array( - 'error' => array('attributes' => array('wrap' => 'span', 'class' => 'bzzz')) + 'error' => array( + 'attributes' => array('wrap' => 'span', 'class' => 'bzzz') + ) )); To prevent HTML being automatically escaped in the error message @@ -755,7 +770,10 @@ common options shared by all input methods are as follows: default):: $sizes = array('s' => 'Small', 'm' => 'Medium', 'l' => 'Large'); - echo $this->Form->input('size', array('options' => $sizes, 'default' => 'm')); + echo $this->Form->input( + 'size', + array('options' => $sizes, 'default' => 'm') + ); .. note:: @@ -833,8 +851,10 @@ Options for select, checkbox and radio inputs .. code-block:: html - - + + This can be disabled by setting the ``$options['hiddenField'] = false``:: @@ -844,7 +864,8 @@ Options for select, checkbox and radio inputs .. code-block:: html - + If you want to create multiple blocks of inputs on a form that are all grouped together, you should use this parameter on all inputs @@ -858,20 +879,26 @@ Options for select, checkbox and radio inputs

      Primary Colors

      - + - + - +

      Tertiary Colors

      - + - + - + Disabling the ``'hiddenField'`` on the second input group would @@ -965,7 +992,8 @@ Form Element-Specific Methods .. code-block:: html - + .. php:method:: password(string $fieldName, array $options) @@ -977,7 +1005,8 @@ Form Element-Specific Methods .. code-block:: html - + .. php:method:: hidden(string $fieldName, array $options) @@ -1018,7 +1047,10 @@ Form Element-Specific Methods echo $this->Form->textarea('notes', array('escape' => false); // OR.... - echo $this->Form->input('notes', array('type' => 'textarea', 'escape' => false); + echo $this->Form->input( + 'notes', + array('type' => 'textarea', 'escape' => false) + ); **Options** @@ -1029,7 +1061,10 @@ Form Element-Specific Methods * ``$options['rows'], $options['cols']`` These two keys specify the number of rows and columns:: - echo $this->Form->textarea('textarea', array('rows' => '5', 'cols' => '5')); + echo $this->Form->textarea( + 'textarea', + array('rows' => '5', 'cols' => '5') + ); Output: @@ -1105,10 +1140,13 @@ Form Element-Specific Methods .. code-block:: html - - + + - + If for some reason you don't want the hidden input, setting @@ -1215,7 +1253,11 @@ Form Element-Specific Methods * ``$attributes['multiple']`` If 'multiple' has been set to true for an input that outputs a select, the select will allow multiple selections:: - echo $this->Form->select('Model.field', $options, array('multiple' => true)); + echo $this->Form->select( + 'Model.field', + $options, + array('multiple' => true) + ); Alternatively set 'multiple' to 'checkbox' to output a list of related check boxes:: @@ -1234,13 +1276,16 @@ Form Element-Specific Methods
      - +
      - +
      - +
      @@ -1264,13 +1309,16 @@ Form Element-Specific Methods
      - +
      - +
      - +
      @@ -1284,7 +1332,9 @@ Form Element-Specific Methods the form enctype is set to "multipart/form-data", so start off with a create function such as the following:: - echo $this->Form->create('Document', array('enctype' => 'multipart/form-data')); + echo $this->Form->create('Document', array( + 'enctype' => 'multipart/form-data' + )); // OR echo $this->Form->create('Document', array('type' => 'file')); @@ -1421,7 +1471,10 @@ Creating buttons and submit elements bool and determines whether to HTML entity encode the $title of the button. Defaults to false:: - echo $this->Form->button('Submit Form', array('type' => 'submit', 'escape' => true)); + echo $this->Form->button('Submit Form', array( + 'type' => 'submit', + 'escape' => true + )); .. php:method:: postButton(string $title, mixed $url, array $options = array ()) @@ -1611,7 +1664,10 @@ inputDefaults. You can override the default options by declaring the option in t input() call:: echo $this->Form->input('password'); // No div, no label with class 'fancy' - echo $this->Form->input('username', array('label' => 'Username')); // has a label element same defaults + echo $this->Form->input( + 'username', + array('label' => 'Username') + ); // has a label element same defaults Working with SecurityComponent ============================== diff --git a/en/core-libraries/helpers/html.rst b/en/core-libraries/helpers/html.rst index 0d84043c1..788065670 100644 --- a/en/core-libraries/helpers/html.rst +++ b/en/core-libraries/helpers/html.rst @@ -238,13 +238,17 @@ methods of the HtmlHelper and how to use them. :: echo $this->Html->docType(); - // Outputs: + // Outputs: + // echo $this->Html->docType('html5'); // Outputs: echo $this->Html->docType('html4-trans'); - // Outputs: + // Outputs: + // .. versionchanged:: 2.1 The default doctype is html5 in 2.1. @@ -337,7 +341,11 @@ methods of the HtmlHelper and how to use them. specify attributes for the element and whether or not the ``$title`` should be escaped.:: - echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank')); + echo $this->Html->link( + 'Enter', + '/pages/home', + array('class' => 'button', 'target' => '_blank') + ); Will output: @@ -349,7 +357,11 @@ methods of the HtmlHelper and how to use them. echo $this->Html->link( 'Dashboard', - array('controller' => 'dashboards', 'action' => 'index', 'full_base' => true) + array( + 'controller' => 'dashboards', + 'action' => 'index', + 'full_base' => true + ) ); Will output: @@ -373,7 +385,12 @@ methods of the HtmlHelper and how to use them. .. code-block:: html - Delete + + Delete + Query strings can also be created with ``link()``.:: @@ -399,7 +416,12 @@ methods of the HtmlHelper and how to use them. Html->link( $this->Html->image("recipes/6.jpg", array("alt" => "Brownies")), - array('controller' => 'recipes', 'action' => 'view', 'id' => 6, 'comments' => false) + array( + 'controller' => 'recipes', + 'action' => 'view', + 'id' => 6, + 'comments' => false + ) ); Will output: @@ -493,14 +515,21 @@ methods of the HtmlHelper and how to use them. Html->media( - array('video.mp4', array('src' => 'video.ogg', 'type' => "video/ogg; codecs='theora, vorbis'")), + array( + 'video.mp4', + array( + 'src' => 'video.ogg', + 'type' => "video/ogg; codecs='theora, vorbis'" + ) + ), array('autoplay') ); ?> // Output .. php:method:: tag(string $tag, string $text, array $htmlAttributes) @@ -623,7 +652,8 @@ methods of the HtmlHelper and how to use them. .. code-block:: html - + The first parameter can be an array to include multiple files.:: @@ -833,18 +863,57 @@ methods of the HtmlHelper and how to use them. :: echo $this->Html->tableCells(array( - array('Jul 7th, 2007', array('Best Brownies', array('class' => 'highlight')) , 'Yes'), + array( + 'Jul 7th, 2007', + array( + 'Best Brownies', + array('class' => 'highlight') + ), + 'Yes'), array('Jun 21st, 2007', 'Smart Cookies', 'Yes'), - array('Aug 1st, 2006', 'Anti-Java Cake', array('No', array('id' => 'special'))), + array( + 'Aug 1st, 2006', + 'Anti-Java Cake', + array('No', array('id' => 'special')) + ), )); Output: .. code-block:: html -
    Jul 7th, 2007Best BrowniesYes
    Jun 21st, 2007Smart CookiesYes
    Aug 1st, 2006Anti-Java CakeNo
    Jul 7th, 2007 + Best Brownies + + Yes +
    + Jun 21st, 2007 + + Smart Cookies + + Yes +
    + Aug 1st, 2006 + + Anti-Java Cake + + No +
    Jul 7th, 2007 - Best Brownies - + Jul 7th, 2007 + + Best Brownies Yes -- GitLab From 3e67a514e3cb7b05cd43abe9c4c391965d30fb8d Mon Sep 17 00:00:00 2001 From: ber clausen Date: Thu, 5 Dec 2013 15:06:22 -0200 Subject: [PATCH 107/458] =?UTF-8?q?=E1=BA=80rong=20option.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- en/console-and-shells.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/en/console-and-shells.rst b/en/console-and-shells.rst index 35f8bc1fb..d57c571fe 100644 --- a/en/console-and-shells.rst +++ b/en/console-and-shells.rst @@ -691,9 +691,8 @@ make building subcommand parsers easier, as everything is an array:: ) )); -Inside the parser spec, you can define keys for ``definition``, -``arguments``, ``options``, and ``epilog``. You cannot define -subcommands inside an array style builder. The values for +Inside the parser spec, you can define keys for ``arguments``, ``options``, ``description`` and ``epilog``. You cannot define +``subcommands`` inside an array style builder. The values for arguments, and options, should follow the format that :php:func:`ConsoleOptionParser::addArguments()` and :php:func:`ConsoleOptionParser::addOptions()` use. You can also use buildFromArray on its own, to build an option parser:: -- GitLab From 252600d4ce3dee2f69fe68ab628e15337893cc54 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Thu, 5 Dec 2013 13:26:50 -0500 Subject: [PATCH 108/458] Fix wrapping. --- en/console-and-shells.rst | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/en/console-and-shells.rst b/en/console-and-shells.rst index d57c571fe..cf2416d95 100644 --- a/en/console-and-shells.rst +++ b/en/console-and-shells.rst @@ -691,11 +691,12 @@ make building subcommand parsers easier, as everything is an array:: ) )); -Inside the parser spec, you can define keys for ``arguments``, ``options``, ``description`` and ``epilog``. You cannot define -``subcommands`` inside an array style builder. The values for -arguments, and options, should follow the format that -:php:func:`ConsoleOptionParser::addArguments()` and :php:func:`ConsoleOptionParser::addOptions()` -use. You can also use buildFromArray on its own, to build an option parser:: +Inside the parser spec, you can define keys for ``arguments``, ``options``, +``description`` and ``epilog``. You cannot define ``subcommands`` inside an +array style builder. The values for arguments, and options, should follow the +format that :php:func:`ConsoleOptionParser::addArguments()` and +:php:func:`ConsoleOptionParser::addOptions()` use. You can also use +buildFromArray on its own, to build an option parser:: public function getOptionParser() { return ConsoleOptionParser::buildFromArray(array( -- GitLab From 74aa61d8ce10badba483528a0bc2ba8897a71eee Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Thu, 5 Dec 2013 19:08:02 -0500 Subject: [PATCH 109/458] Fix lines on pgs. 201-220. --- en/core-libraries/helpers/js.rst | 53 +++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/en/core-libraries/helpers/js.rst b/en/core-libraries/helpers/js.rst index 570813889..b7dd2d578 100644 --- a/en/core-libraries/helpers/js.rst +++ b/en/core-libraries/helpers/js.rst @@ -412,7 +412,13 @@ CakePHP core. Whenever you see separate lists for ``Options`` and .. code-block:: javascript - $("#element").draggable({containment:"#content", drag:onDrag, grid:[10,10], start:onStart, stop:onStop}); + $("#element").draggable({ + containment:"#content", + drag:onDrag, + grid:[10,10], + start:onStart, + stop:onStop + }); .. php:method:: drop($options = array()) @@ -449,7 +455,12 @@ CakePHP core. Whenever you see separate lists for ``Options`` and .. code-block:: javascript - $("#element").droppable({accept:".items", drop:onDrop, out:onExit, over:onHover}); + $("#element").droppable({ + accept:".items", + drop:onDrop, + out:onExit, + over:onHover + }); .. note:: @@ -498,7 +509,14 @@ CakePHP core. Whenever you see separate lists for ``Options`` and .. code-block:: javascript - $("#element").slider({change:onChange, max:10, min:0, orientation:"vertical", stop:onComplete, value:2}); + $("#element").slider({ + change:onChange, + max:10, + min:0, + orientation:"vertical", + stop:onComplete, + value:2 + }); .. php:method:: effect($name, $options = array()) @@ -565,7 +583,11 @@ CakePHP core. Whenever you see separate lists for ``Options`` and ``stop`` option to false:: $this->Js->get('#some-link'); - $this->Js->event('click', $this->Js->alert('hey you!'), array('stop' => false)); + $this->Js->event( + 'click', + $this->Js->alert('hey you!'), + array('stop' => false) + ); If you were using the jQuery library you would the following JavaScript code would be added to the buffer. Note that the default @@ -686,7 +708,11 @@ CakePHP core. Whenever you see separate lists for ``Options`` and **Example use**:: - echo $this->Js->link('Page 2', array('page' => 2), array('update' => '#content')); + echo $this->Js->link( + 'Page 2', + array('page' => 2), + array('update' => '#content') + ); Will create a link pointing to ``/page:2`` and updating #content with the response. @@ -811,7 +837,12 @@ indicator effects yourself:
    - Html->image('indicator.gif', array('id' => 'busy-indicator')); ?> + Html->image( + 'indicator.gif', + array('id' => 'busy-indicator') + ); + ?> @@ -828,8 +859,14 @@ with the ``JsHelper``. To do that we need to update our $this->Paginator->options(array( 'update' => '#content', 'evalScripts' => true, - 'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)), - 'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)), + 'before' => $this->Js->get('#busy-indicator')->effect( + 'fadeIn', + array('buffer' => false) + ), + 'complete' => $this->Js->get('#busy-indicator')->effect( + 'fadeOut', + array('buffer' => false) + ), )); This will show/hide the busy-indicator element before and after the -- GitLab From 96f1e13e6b3e486d089460ab1d0169cbe0b4a288 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Thu, 5 Dec 2013 19:17:00 -0500 Subject: [PATCH 110/458] Had wrong file. Fixed the correct file. --- en/core-libraries/helpers/paginator.rst | 52 ++++++++++++++++++++----- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/en/core-libraries/helpers/paginator.rst b/en/core-libraries/helpers/paginator.rst index 0610a8cbe..f69d38c09 100644 --- a/en/core-libraries/helpers/paginator.rst +++ b/en/core-libraries/helpers/paginator.rst @@ -54,13 +54,19 @@ Output: If you are using HTML like images in your links remember to set escaping off:: - echo $this->Paginator->sort('user_id', 'User account', array('escape' => false)); + echo $this->Paginator->sort( + 'user_id', + 'User account', + array('escape' => false) + ); Output: .. code-block:: html - User account + + User account + The direction option can be used to set the default direction for a link. Once a link is active, it will automatically switch directions like normal:: @@ -167,13 +173,22 @@ pages in the paged data set. A simple example would be:: - echo $this->Paginator->prev(' << ' . __('previous'), array(), null, array('class' => 'prev disabled')); + echo $this->Paginator->prev( + ' << ' . __('previous'), + array(), + null, + array('class' => 'prev disabled') + ); If you were currently on the second page of posts, you would get the following: .. code-block:: html - + + + If there were no previous pages you would get: @@ -189,7 +204,11 @@ pages in the paged data set. .. code-block:: html - + You can also disable the wrapping tag:: @@ -199,7 +218,10 @@ pages in the paged data set. .. code-block:: html - + .. versionchanged:: 2.3 For methods: :php:meth:`PaginatorHelper::prev()` and :php:meth:`PaginatorHelper::next()` it @@ -377,7 +399,9 @@ this feature is in :php:class:`PaginatorComponent`, you have some additional control in the view. You can use ``options()`` to indicate that you want other named parameters to be converted:: - $this->Paginator->options(array('convertKeys' => array('your', 'keys', 'here'))); + $this->Paginator->options(array( + 'convertKeys' => array('your', 'keys', 'here') + )); Configuring the PaginatorHelper to use a JavaScript helper ---------------------------------------------------------- @@ -454,8 +478,18 @@ of page navigation, also supplied by the PaginationHelper:: echo $this->Paginator->numbers(); // Shows the next and previous links - echo $this->Paginator->prev('« Previous', null, null, array('class' => 'disabled')); - echo $this->Paginator->next('Next »', null, null, array('class' => 'disabled')); + echo $this->Paginator->prev( + '« Previous', + null, + null, + array('class' => 'disabled') + ); + echo $this->Paginator->next( + 'Next »', + null, + null, + array('class' => 'disabled') + ); // prints X of Y, where X is current page and Y is number of pages echo $this->Paginator->counter(); -- GitLab From 1812b07dbdd2ed94a8ebc35bcc7eada26121cf34 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Thu, 5 Dec 2013 19:34:10 -0500 Subject: [PATCH 111/458] Fix lines on pgs. 221-240. --- en/core-libraries/helpers/rss.rst | 22 ++++++++++++++-------- en/core-libraries/helpers/text.rst | 3 ++- en/core-libraries/helpers/time.rst | 7 ++++++- en/core-utility-libraries/string.rst | 23 +++++++++++++++++------ en/core-utility-libraries/time.rst | 27 +++++++++++++++++++++------ 5 files changed, 60 insertions(+), 22 deletions(-) diff --git a/en/core-libraries/helpers/rss.rst b/en/core-libraries/helpers/rss.rst index 6f6e3d7cb..818985545 100644 --- a/en/core-libraries/helpers/rss.rst +++ b/en/core-libraries/helpers/rss.rst @@ -57,14 +57,20 @@ the same:: public function index() { if ($this->RequestHandler->isRss() ) { - $posts = $this->Post->find('all', array('limit' => 20, 'order' => 'Post.created DESC')); + $posts = $this->Post->find( + 'all', + array('limit' => 20, 'order' => 'Post.created DESC') + ); return $this->set(compact('posts')); } // this is not an Rss request, so deliver // data used by website's interface - $this->paginate['Post'] = array('order' => 'Post.created DESC', 'limit' => 10); - + $this->paginate['Post'] = array( + 'order' => 'Post.created DESC', + 'limit' => 10 + ); + $posts = $this->paginate(); $this->set(compact('posts')); } @@ -85,7 +91,7 @@ An Rss layout is very simple, put the following contents in } if (!isset($channelData['title'])) { $channelData['title'] = $title_for_layout; - } + } $channel = $this->Rss->channel(array(), $channelData, $content_for_layout); echo $this->Rss->document($documentData, $channel); @@ -141,7 +147,7 @@ associative array into an element for each key value pair. foreach ($posts as $post) { $postTime = strtotime($post['Post']['created']); - + $postLink = array( 'controller' => 'posts', 'action' => 'view', @@ -158,7 +164,7 @@ associative array into an element for each key value pair. 'exact' => true, 'html' => true, )); - + echo $this->Rss->item(array(), array( 'title' => $post['Post']['title'], 'link' => $postLink, @@ -255,14 +261,14 @@ Rss Helper API :rtype: string - Transforms an array of data using an optional callback, and maps it to a + Transforms an array of data using an optional callback, and maps it to a set of ```` tags. .. php:method:: time(mixed $time) :rtype: string - Converts a time in any format to an RSS time. See + Converts a time in any format to an RSS time. See :php:meth:`TimeHelper::toRSS()`. diff --git a/en/core-libraries/helpers/text.rst b/en/core-libraries/helpers/text.rst index d4506bd1a..9aa24e11e 100644 --- a/en/core-libraries/helpers/text.rst +++ b/en/core-libraries/helpers/text.rst @@ -25,7 +25,8 @@ truncating long stretches of text. to any options defined in ``$htmlOptions`` (see :php:meth:`HtmlHelper::link()`).:: - $myText = 'For more information regarding our world-famous pastries and desserts, contact info@example.com'; + $myText = 'For more information regarding our world-famous ' . + 'pastries and desserts, contact info@example.com'; $linkedText = $this->Text->autoLinkEmails($myText); Output:: diff --git a/en/core-libraries/helpers/time.rst b/en/core-libraries/helpers/time.rst index 174300229..d103f859e 100644 --- a/en/core-libraries/helpers/time.rst +++ b/en/core-libraries/helpers/time.rst @@ -32,7 +32,12 @@ modifications to allow your users to set their time zone. Now that we know the time zone of the logged in user we can correct the date and time on our posts using the Time Helper:: - echo $this->Time->format('F jS, Y h:i A', $post['Post']['created'], null, $user['User']['time_zone']); + echo $this->Time->format( + 'F jS, Y h:i A', + $post['Post']['created'], + null, + $user['User']['time_zone'] + ); // Will display August 22nd, 2011 11:53 PM for a user in GMT+0 // August 22nd, 2011 03:53 PM for a user in GMT-8 // and August 23rd, 2011 09:53 AM GMT+10 diff --git a/en/core-utility-libraries/string.rst b/en/core-utility-libraries/string.rst index 90ee5f132..6d628fb31 100644 --- a/en/core-utility-libraries/string.rst +++ b/en/core-utility-libraries/string.rst @@ -120,11 +120,19 @@ use the ``String`` class:: Example:: // called as TextHelper - echo $this->Text->highlight($lastSentence, 'using', array('format' => '\1')); + echo $this->Text->highlight( + $lastSentence, + 'using', + array('format' => '\1') + ); // called as String App::uses('String', 'Utility'); - echo String::highlight($lastSentence, 'using', array('format' => '\1')); + echo String::highlight( + $lastSentence, + 'using', + array('format' => '\1') + ); Output:: @@ -205,14 +213,17 @@ use the ``String`` class:: 'ellipsis' => '...', 'exact' => true ) - + .. versionadded:: 2.3 Example:: + $sampleText = 'I packed my bag and in it I put a PSP, a PS3, a TV, ' . + 'a C# program that can divide by zero, death metal t-shirts' + // called as TextHelper echo $this->Text->tail( - 'I packed my bag and in it I put a PSP, a PS3, a TV, a C# program that can divide by zero, death metal t-shirts', + $sampleText, 70, array( 'ellipsis' => '...', @@ -223,7 +234,7 @@ use the ``String`` class:: // called as String App::uses('String', 'Utility'); echo String::tail( - 'I packed my bag and in it I put a PSP, a PS3, a TV, a C# program that can divide by zero, death metal t-shirts', + $sampleText, 70, array( 'ellipsis' => '...', @@ -234,7 +245,7 @@ use the ``String`` class:: Output:: ...a TV, a C# program that can divide by zero, death metal t-shirts - + .. php:method:: excerpt(string $haystack, string $needle, integer $radius=100, string $ellipsis="...") :param string $haystack: The string to search. diff --git a/en/core-utility-libraries/time.rst b/en/core-utility-libraries/time.rst index 1ba8fec13..bc0971aeb 100644 --- a/en/core-utility-libraries/time.rst +++ b/en/core-utility-libraries/time.rst @@ -1,3 +1,4 @@ + CakeTime ######## @@ -61,7 +62,8 @@ Formatting // called via TimeHelper echo $this->Time->dayAsSql('Aug 22, 2011', 'modified'); - // (modified >= '2011-08-22 00:00:00') AND (modified <= '2011-08-22 23:59:59') + // (modified >= '2011-08-22 00:00:00') AND + // (modified <= '2011-08-22 23:59:59') // called as CakeTime App::uses('CakeTime', 'Utility'); @@ -84,7 +86,8 @@ Formatting // called via TimeHelper echo $this->Time->daysAsSql('Aug 22, 2011', 'Aug 25, 2011', 'created'); - // (created >= '2011-08-22 00:00:00') AND (created <= '2011-08-25 23:59:59') + // (created >= '2011-08-22 00:00:00') AND + // (created <= '2011-08-25 23:59:59') // called as CakeTime App::uses('CakeTime', 'Utility'); @@ -243,23 +246,35 @@ Formatting echo $this->Time->timeAgoInWords('Aug 22, 2011'); // on 22/8/11 - echo $this->Time->timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y')); // on August 22nd, 2011 + echo $this->Time->timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y') + ); // called as CakeTime App::uses('CakeTime', 'Utility'); echo CakeTime::timeAgoInWords('Aug 22, 2011'); - echo CakeTime::timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y')); + echo CakeTime::timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y') + ); Use the 'end' option to determine the cutoff point to no longer will use words; default '+1 month':: // called via TimeHelper - echo $this->Time->timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y', 'end' => '+1 year')); + echo $this->Time->timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y', 'end' => '+1 year') + ); // On Nov 10th, 2011 it would display: 2 months, 2 weeks, 6 days ago // called as CakeTime App::uses('CakeTime', 'Utility'); - echo CakeTime::timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y', 'end' => '+1 year')); + echo CakeTime::timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y', 'end' => '+1 year') + ); Use the 'accuracy' option to determine how precise the output should be. You can use this to limit the output:: -- GitLab From ed0b9e55772080a5e00d90568a38c0adb9fbf03f Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Thu, 5 Dec 2013 22:31:23 -0500 Subject: [PATCH 112/458] Fix pgs. 241-300. --- .../associations-linking-models-together.rst | 5 +- en/models/retrieving-your-data.rst | 28 ++++++++--- en/models/saving-your-data.rst | 49 +++++++++++++++---- 3 files changed, 65 insertions(+), 17 deletions(-) diff --git a/en/models/associations-linking-models-together.rst b/en/models/associations-linking-models-together.rst index d67c8d3d3..ceeeafd0b 100644 --- a/en/models/associations-linking-models-together.rst +++ b/en/models/associations-linking-models-together.rst @@ -531,7 +531,10 @@ Using our Image model example, we can specify it like so:: public $belongsTo = array( 'Image' => array( 'counterCache' => true, - 'counterScope' => array('ImageComment.active' => 1) // only count if "ImageComment" is active = 1 + // only count if "ImageComment" is active = 1 + 'counterScope' => array( + 'ImageComment.active' => 1 + ) ) ); } diff --git a/en/models/retrieving-your-data.rst b/en/models/retrieving-your-data.rst index 14c184bd3..35a602627 100644 --- a/en/models/retrieving-your-data.rst +++ b/en/models/retrieving-your-data.rst @@ -25,8 +25,10 @@ optional:: array( 'conditions' => array('Model.field' => $thisValue), //array of conditions 'recursive' => 1, //int - 'fields' => array('Model.field1', 'DISTINCT Model.field2'), //array of field names - 'order' => array('Model.created', 'Model.field3 DESC'), //string or array defining order + //array of field names + 'fields' => array('Model.field1', 'DISTINCT Model.field2'), + //string or array defining order + 'order' => array('Model.created', 'Model.field3 DESC'), 'group' => array('Model.field'), //fields to GROUP BY 'limit' => n, //int 'page' => n, //int @@ -384,7 +386,10 @@ return the row before and after the one you request. Below is a simple :: public function some_function() { - $neighbors = $this->Article->find('neighbors', array('field' => 'id', 'value' => 3)); + $neighbors = $this->Article->find( + 'neighbors', + array('field' => 'id', 'value' => 3) + ); } You can see in this example the two required elements of the @@ -563,8 +568,11 @@ your ``AppModel``, which should fix pagination count: */ protected function _findCount($state, $query, $results = array()) { if ($state === 'before') { - if (isset($query['type']) && isset($this->findMethods[$query['type']])) { - $query = $this->{'_find' . ucfirst($query['type'])}('before', $query); + if (isset($query['type']) && + isset($this->findMethods[$query['type']])) { + $query = $this->{ + '_find' . ucfirst($query['type']) + }('before', $query); if (!empty($query['fields']) && is_array($query['fields'])) { if (!preg_match('/^count/i', current($query['fields']))) { unset($query['fields']); @@ -766,8 +774,12 @@ found returns false. $this->Post->id = 22; echo $this->Post->field('name'); // echo the name for row id 22 - echo $this->Post->field('name', array('created <' => date('Y-m-d H:i:s')), 'created DESC'); // echo the name of the last created instance + echo $this->Post->field( + 'name', + array('created <' => date('Y-m-d H:i:s')), + 'created DESC' + ); :php:meth:`Model::read()` ========================= @@ -849,7 +861,9 @@ To do a NOT IN(...) match to find posts where the title is not in the given set of values:: array( - "NOT" => array("Post.title" => array("First post", "Second post", "Third post")) + "NOT" => array( + "Post.title" => array("First post", "Second post", "Third post") + ) ) Adding additional filters to the conditions is as simple as adding diff --git a/en/models/saving-your-data.rst b/en/models/saving-your-data.rst index 8190aa9d7..52fd89489 100644 --- a/en/models/saving-your-data.rst +++ b/en/models/saving-your-data.rst @@ -75,7 +75,7 @@ single fields, in an ActiveRecord approach. You can also use )); $this->Post->save(); -The above would update the title and published fields and save the +The above would update the title and published fields and save the record to the database. :php:meth:`Model::clear()` @@ -225,7 +225,7 @@ year, the update call might look something like:: ); -The ``$fields`` array accepts SQL expressions. Literal values should be +The ``$fields`` array accepts SQL expressions. Literal values should be quoted manually using :php:meth:`DboSource::value()`. For example if one of your model methods was calling ``updateAll()`` you would do the following:: @@ -297,7 +297,10 @@ To save also associated data with ``$options['deep'] = true`` (since 2.1), the t array('title' => 'title 2'), ); $data = array( - array('Article' => array('title' => 'title 1'), 'Assoc' => array('field' => 'value')), + array( + 'Article' => array('title' => 'title 1'), + 'Assoc' => array('field' => 'value') + ), array('Article' => array('title' => 'title 2')), ); $Model->saveMany($data, array('deep' => true)); @@ -306,8 +309,12 @@ Keep in mind that if you want to update a record instead of creating a new one you just need to add the primary key index to the data row:: $data = array( - array('Article' => array('title' => 'New article')), // This creates a new row - array('Article' => array('id' => 2, 'title' => 'title 2')), // This updates an existing row + array( + // This creates a new row + 'Article' => array('title' => 'New article')), + array( + // This updates an existing row + 'Article' => array('id' => 2, 'title' => 'title 2')), ); @@ -392,7 +399,10 @@ the data array should be like this:: 'Article' => array('title' => 'My first article'), 'Comment' => array( array('body' => 'Comment 1', 'user_id' => 1), - array('body' => 'Save a new user as well', 'User' => array('first' => 'mad', 'last' => 'coder')), + array( + 'body' => 'Save a new user as well', + 'User' => array('first' => 'mad', 'last' => 'coder') + ), ), ); @@ -548,7 +558,10 @@ a look at the following code.:: public $uses = array('CourseMembership'); public function index() { - $this->set('courseMembershipsList', $this->CourseMembership->find('all')); + $this->set( + 'courseMembershipsList', + $this->CourseMembership->find('all') + ); } public function add() { @@ -640,8 +653,26 @@ then the two meta-fields for the CourseMembership, e.g.:: // View/CourseMemberships/add.ctp Form->create('CourseMembership'); ?> - Form->input('Student.id', array('type' => 'text', 'label' => 'Student ID', 'default' => 1)); ?> - Form->input('Course.id', array('type' => 'text', 'label' => 'Course ID', 'default' => 1)); ?> + Form->input( + 'Student.id', + array( + 'type' => 'text', + 'label' => 'Student ID', + 'default' => 1 + ) + ); + ?> + Form->input( + 'Course.id', + array( + 'type' => 'text', + 'label' => 'Course ID', + 'default' => 1 + ) + ); + ?> Form->input('CourseMembership.days_attended'); ?> Form->input('CourseMembership.grade'); ?> -- GitLab From d2feced3bfd14c3b5bc2ff0bc6e397d80c31766e Mon Sep 17 00:00:00 2001 From: Brian Porter Date: Thu, 5 Dec 2013 22:24:47 -0600 Subject: [PATCH 113/458] Added version change warning about baked tests in 2.5. See also: https://github.com/cakephp/cakephp/issues/2437 --- en/console-and-shells/code-generation-with-bake.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/en/console-and-shells/code-generation-with-bake.rst b/en/console-and-shells/code-generation-with-bake.rst index 989f5ed4d..d3afc06c8 100644 --- a/en/console-and-shells/code-generation-with-bake.rst +++ b/en/console-and-shells/code-generation-with-bake.rst @@ -60,6 +60,10 @@ command line:: $ cake bake all +.. versionchanged:: 2.5 + Test files produced by ``bake test`` include calls to `PHPunit's markTestIncomplete() `_ to draw attention to empty test methods. Before 2.5, empty tests pass silently. + + Modify default HTML produced by "baked" templates ================================================= -- GitLab From dc6c4e63b480e69b9d50b85cff5cb9fb7c3eceff Mon Sep 17 00:00:00 2001 From: cake17 Date: Fri, 6 Dec 2013 11:52:43 +0100 Subject: [PATCH 114/458] [fr] Follow #924 & 252600d4ce3dee2f69fe68ab628e15337893cc54 Fix wrapping. --- fr/console-and-shells.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fr/console-and-shells.rst b/fr/console-and-shells.rst index e31d8765d..6910f17f8 100644 --- a/fr/console-and-shells.rst +++ b/fr/console-and-shells.rst @@ -748,9 +748,9 @@ puisque tout est un tableau:: ) )); -A l'intérieur du parser spec, vous pouvez définir les clés pour ``definition``, -``arguments``, ``options``, et ``epilog``. Vous ne pouvez pas définir les -sous-commandes dans un constructeur de type tableau. Les valeurs pour les +A l'intérieur du parser spec, vous pouvez définir les clés pour `arguments``, +``options``, ``description`` et ``epilog``. Vous ne pouvez pas définir les +``sous-commandes`` dans un constructeur de type tableau. Les valeurs pour les arguments, et les options, doivent suivre le format que :php:func:`ConsoleOptionParser::addArguments()` et :php:func:`ConsoleOptionParser::addOptions()` utilisent. Vous pouvez aussi -- GitLab From 13c13378e22854f74a2378be63c6c8b8a754a82a Mon Sep 17 00:00:00 2001 From: cake17 Date: Fri, 6 Dec 2013 12:39:05 +0100 Subject: [PATCH 115/458] [fr] Follow #923 Fix code line overflows pgs 101-200 --- fr/controllers/components.rst | 12 +++- .../components/access-control-lists.rst | 18 +++-- .../components/request-handling.rst | 6 +- fr/core-libraries/helpers/form.rst | 70 ++++++++++++------- fr/core-libraries/helpers/html.rst | 54 ++++++++++---- fr/core-libraries/helpers/js.rst | 16 +++-- fr/views.rst | 23 ++++-- fr/views/media-view.rst | 3 +- fr/views/themes.rst | 12 ++-- 9 files changed, 145 insertions(+), 69 deletions(-) diff --git a/fr/controllers/components.rst b/fr/controllers/components.rst index dc1a4873e..0bab76f5a 100644 --- a/fr/controllers/components.rst +++ b/fr/controllers/components.rst @@ -35,7 +35,10 @@ de vos controllers:: public $components = array( 'Auth' => array( 'authorize' => array('controller'), - 'loginAction' => array('controller' => 'users', 'action' => 'login') + 'loginAction' => array( + 'controller' => 'users', + 'action' => 'login' + ) ), 'Cookie' => array('name' => 'CookieMonster') ); @@ -49,7 +52,10 @@ comme ceci:: public function beforeFilter() { $this->Auth->authorize = array('controller'); - $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); + $this->Auth->loginAction = array( + 'controller' => 'users', + 'action' => 'login' + ); $this->Cookie->name = 'CookieMonster'; } @@ -105,7 +111,7 @@ controller, vous pouvez y accéder comme ceci:: class PostsController extends AppController { public $components = array('Session', 'Cookie'); - + public function delete() { if ($this->Post->delete($this->request->data('Post.id')) { $this->Session->setFlash('Post deleted.'); diff --git a/fr/core-libraries/components/access-control-lists.rst b/fr/core-libraries/components/access-control-lists.rst index 16b12165d..620534688 100644 --- a/fr/core-libraries/components/access-control-lists.rst +++ b/fr/core-libraries/components/access-control-lists.rst @@ -530,8 +530,8 @@ le faisons toujours : public function touteslesActions() { $aro =& $this->Acl->Aro; - //Ici ce sont toutes les informations sur le tableau de notre groupe que nous - //pouvons itérer comme ceci + // Ici ce sont toutes les informations sur le tableau de notre groupe + // que nous pouvons itérer comme ceci $groups = array( 0 => array( 'alias' => 'guerriers' @@ -807,8 +807,16 @@ AROs ci-dessus, mais vous pourriez utiliser votre propre syntaxe model/clé // 6342 = Legolas // 1564 = Gimli - $this->Acl->deny(array('model' => 'Utilisateur', 'foreign_key' => 6342), 'Armes', 'delete'); - $this->Acl->deny(array('model' => 'Utilisateur', 'foreign_key' => 1564), 'Armes', 'delete'); + $this->Acl->deny( + array('model' => 'User', 'foreign_key' => 6342), + 'Weapons', + 'delete' + ); + $this->Acl->deny( + array('model' => 'User', 'foreign_key' => 1564), + 'Weapons', + 'delete' + ); .. note:: @@ -816,7 +824,7 @@ AROs ci-dessus, mais vous pourriez utiliser votre propre syntaxe model/clé chaîne délimitée par des slashs ('/utilisateurs/salaries/developpeurs'). L'adressage d'un nœud en utilisant la syntaxe model/clé étrangère nécessite un tableau avec deux paramètres : - ``array('model' => 'Utilisateur', 'foreign_key' => 8282)``. + ``array('model' => 'User', 'foreign_key' => 8282)``. La prochaine section nous aidera à valider notre configuration, en utilisant le component Acl pour contrôler les permissions que nous venons de définir. diff --git a/fr/core-libraries/components/request-handling.rst b/fr/core-libraries/components/request-handling.rst index 23d93d41f..8d17b82b6 100644 --- a/fr/core-libraries/components/request-handling.rst +++ b/fr/core-libraries/components/request-handling.rst @@ -49,9 +49,11 @@ contenu que le client accepte. Par exemple:: public function beforeFilter () { if ($this->RequestHandler->accepts('html')) { - // Ce code est exécuté uniquement si le client accepte les réponses HTML (text/html) + // Ce code est exécuté uniquement si le client accepte + // les réponses HTML (text/html) } elseif ($this->RequestHandler->accepts('xml')) { - // exécuté seulement si le client accepte seulement les réponse XML + // executé seulement si le client accepte seulement + // les réponse XML } if ($this->RequestHandler->accepts(array('xml', 'rss', 'atom'))) { // Executé si le client accepte l'un des suivants: XML, RSS ou Atom diff --git a/fr/core-libraries/helpers/form.rst b/fr/core-libraries/helpers/form.rst index c56d1a4d8..9bca4e7b7 100644 --- a/fr/core-libraries/helpers/form.rst +++ b/fr/core-libraries/helpers/form.rst @@ -81,8 +81,9 @@ pleinement avantage du Helper Form (Helper Formulaire) est } // View/Recipes/edit.ctp: - // Puisque $this->request->data['Recipe']['id'] = 5, nous aurons un formulaire d'édition - echo $this->Form->create('Recipe'); + // Puisque $this->request->data['Recipe']['id'] = 5, + // nous aurons un formulaire d'édition + Form->create('Recipe'); ?> Affichera: @@ -146,7 +147,8 @@ Il y plusieurs options pour create(): .. code-block:: html - + Quand vous utilisez 'put' ou 'delete', votre formulaire aura un fonctionnement équivalent à un formulaire de type 'post', @@ -224,8 +226,10 @@ Il y plusieurs options pour create(): redéfinir le defaultOptions en déclarant l'option dans l'appel input():: - echo $this->Form->input('password'); // Pas de div, Pas de label - echo $this->Form->input('username', array('label' => 'Username')); // a un élément label + // Pas de div, Pas de label + echo $this->Form->input('password'); + // a un élément label + echo $this->Form->input('username', array('label' => 'Username')); Fermer le Formulaire ==================== @@ -408,7 +412,10 @@ ce champ. En interne ``input()`` délègue aux autre méthode du FormHelper. $this->set('userGroups', $this->UserGroup->find('list')); // ou bien - $this->set('reallyInappropriateModelNames', $this->ReallyInappropriateModelName->find('list')); + $this->set( + 'reallyInappropriateModelNames', + $this->ReallyInappropriateModelName->find('list') + ); .. note:: @@ -472,8 +479,11 @@ Affichera: .. code-block:: html - - + + + Le Helper Form utilise plusieurs suffixes de champ en interne pour la création de champ input datetime. @@ -506,16 +516,16 @@ comme les attributs html. Ce qui suit va couvrir les options spécifiques de Affichera: - .. code-block:: html + .. code-block:: html -
    - - -
    - +
    + + +
    + * ``$options['div']`` Utilisez cette option pour définir les attributs de la div contentant l'input. En utilisant une valeur chaîne configurera le nom @@ -552,10 +562,11 @@ comme les attributs html. Ce qui suit va couvrir les options spécifiques de .. code-block:: html -
    - - -
    +
    + + +
    Désactiver le rendu de la div :: @@ -1299,13 +1310,16 @@ Les options de Datetime
    - +
    - +
    - +
    @@ -1320,12 +1334,14 @@ Les options de Datetime enctype du formulaire est définit a "multipart/form-data", donc commençons avec une fonction create comme ci-dessous:: - echo $this->Form->create('Document', array('enctype' => 'multipart/form-data')); + echo $this->Form->create('Document', array( + 'enctype' => 'multipart/form-data' + )); // OU echo $this->Form->create('Document', array('type' => 'file')); - Ensuite ajoutons l'une ou l'autre des deux lignes dans le fichier de vue de votre - formulaire:: + Ensuite ajoutons l'une ou l'autre des deux lignes dans le fichier de + vue de votre formulaire:: echo $this->Form->input('Document.submittedfile', array( 'between' => '
    ', diff --git a/fr/core-libraries/helpers/html.rst b/fr/core-libraries/helpers/html.rst index 475a15625..23201bc95 100644 --- a/fr/core-libraries/helpers/html.rst +++ b/fr/core-libraries/helpers/html.rst @@ -248,13 +248,17 @@ couvrira les méthodes du Helper Html et comment les utiliser. :: echo $this->Html->docType(); - // Affichera: + // Sortie: + // echo $this->Html->docType('html5'); - // Affichera: + // Sortie: echo $this->Html->docType('html4-trans'); - // Affichera: + // Sortie: + // .. versionchanged:: 2.1 La valeur par défaut de doctype est HTML5 avec la version 2.1. @@ -348,7 +352,11 @@ couvrira les méthodes du Helper Html et comment les utiliser. pour spécifier les attributs des éléments et si le ``$title`` devra ou non être échappé.:: - echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank')); + echo $this->Html->link( + 'Enter', + '/pages/home', + array('class' => 'button', 'target' => '_blank') + ); Affichera: @@ -360,7 +368,11 @@ couvrira les méthodes du Helper Html et comment les utiliser. echo $this->Html->link( 'Dashboard', - array('controller' => 'dashboards', 'action' => 'index', 'full_base' => true) + array( + 'controller' => 'dashboards', + 'action' => 'index', + 'full_base' => true + ) ); Affichera: @@ -410,7 +422,12 @@ couvrira les méthodes du Helper Html et comment les utiliser. Html->link( $this->Html->image("recipes/6.jpg", array("alt" => "Brownies")), - array('controller' => 'recipes', 'action' => 'view', 'id' => 6, 'comments' => false) + array( + 'controller' => 'recipes', + 'action' => 'view', + 'id' => 6, + 'comments' => false + ) ); Affichera: @@ -488,30 +505,37 @@ couvrira les méthodes du Helper Html et comment les utiliser. Retourne une balise formatée audio/video:: - .. code-block:: php + .. code-block:: php Html->media('audio.mp3'); ?> - // Affichera + // Sortie Html->media('video.mp4', array( 'fullBase' => true, - 'text' => 'Texte de remplacement' + 'text' => 'Fallback text' )); ?> - // Affichera - + // Sortie + - Html->media( - array('video.mp4', array('src' => 'video.ogg', 'type' => "video/ogg; codecs='theora, vorbis'")), + Html->media( + array( + 'video.mp4', + array( + 'src' => 'video.ogg', + 'type' => "video/ogg; codecs='theora, vorbis'" + ) + ), array('autoplay') ); ?> - // Affichera + // Sortie .. php:method:: tag(string $tag, string $text, array $htmlAttributes) diff --git a/fr/core-libraries/helpers/js.rst b/fr/core-libraries/helpers/js.rst index 3583e3852..64f1e9e08 100644 --- a/fr/core-libraries/helpers/js.rst +++ b/fr/core-libraries/helpers/js.rst @@ -77,7 +77,7 @@ Pour redéfinir le raccourci "$", utilisez la variable jQueryObject:: $this->Js->JqueryEngine->jQueryObject = '$j'; echo $this->Html->scriptBlock( - 'var $j = jQuery.noConflict();', + 'var $j = jQuery.noConflict();', array('inline' => false) ); // Demande à jQuery de se placer dans un mode noconflict @@ -148,7 +148,7 @@ avec une sélection d'éléments dans le DOM, ``$this->Js->get()`` retourne un $this, vous permettent d'enchaîner les méthodes en utilisant la selection. Le chaînage de méthode vous permet d'écrire moins, et de rendre votre code plus expressif .:: - + $this->Js->get('#foo')->event('click', $eventCode); Est un exemple de chaînage de méthode. Le chaînage de méthode @@ -319,10 +319,16 @@ méthode. En imaginant que vous étiez en train d'utiliser le moteur Jquery, vous devriez avoir le code suivant dans votre block Javascript généré. - + .. code-block:: javascript - $("#maListe").sortable({containment:"parent", distance:5, sort:onSort, start:onStart, stop:onStop}); + $("#myList").sortable({ + containment:"parent", + distance:5, + sort:onSort, + start:onStart, + stop:onStop + }); .. php:method:: request($url, $options = array()) @@ -729,7 +735,7 @@ méthode. .. php:method:: value($value) - Converti une variable native PHP d'un type dans une représentation + Convertit une variable native PHP d'un type dans une représentation JSON équivalente. Échappe une valeur de chaîne dans une chaîne compatible JSON. Les caractère UTF-8 seront échappés . diff --git a/fr/views.rst b/fr/views.rst index db1f8e14e..9bef870e2 100644 --- a/fr/views.rst +++ b/fr/views.rst @@ -482,8 +482,10 @@ l'element. Les options supoortés sont 'cache' et 'callbacks'. Un exemple:: "foobar" => "Ceci est passé à l'element via $foobar", ), array( - "cache" => "long_view", // utilise la configuration de cache "long_view" - "callbacks" => true // défini à true pour avoir before/afterRender appelé pour l'element + // utilise la configuration de cache "long_view" + "cache" => "long_view", + // défini à true pour avoir before/afterRender appelé pour l'element + "callbacks" => true ) ); @@ -526,11 +528,17 @@ Et ensuite dans l'element, nous pouvons accéder au model des posts paginés. Pour obtenir les cinq derniers posts dans une liste ordonnée, nous ferions ce qui suit:: +.. code-block:: php +

    Derniers Posts

    - requestAction('posts/index/sort:created/direction:asc/limit:5'); ?> + requestAction( + 'posts/index/sort:created/direction:asc/limit:5' + ); + ?>
      -
    1. +
    @@ -685,8 +693,11 @@ Pour appeler toute méthode de view, utilisez ``$this->method()`` qui ont besoin de générer un ID de DOM unique pour les elements comme le :php:class:`JsHelper`:: - $uuid = $this->uuid('form', array('controller' => 'posts', 'action' => 'index')); - //$uuid contient 'form0425fe3bad' + $uuid = $this->uuid( + 'form', + array('controller' => 'posts', 'action' => 'index') + ); + //$uuid contains 'form0425fe3bad' .. php:method:: addScript(string $name, string $content) diff --git a/fr/views/media-view.rst b/fr/views/media-view.rst index a4356767c..3fd9110c0 100644 --- a/fr/views/media-view.rst +++ b/fr/views/media-view.rst @@ -45,7 +45,8 @@ chemin relatif qui va être par défaut dans votre dossier ``app/webroot``:: 'name' => 'example', 'extension' => 'docx', 'mimeType' => array( - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' + 'docx' => 'application/vnd.openxmlformats-officedocument' . + '.wordprocessingml.document' ), 'path' => 'files' . DS ); diff --git a/fr/views/themes.rst b/fr/views/themes.rst index add3930b3..78aaa1579 100644 --- a/fr/views/themes.rst +++ b/fr/views/themes.rst @@ -50,10 +50,12 @@ production, il est recommandé, soit que vous fassiez un lien symbolique, soit que vous copiez les assets du thème dans le webroot de application. Voir ci-dessous pour plus d'informations. -Pour utiliser le nouveau thème, créez des répertoires de type -``app/View/Themed//webroot`` dans votre thème. -Le Dispatcher se chargera de trouver les assets du thème corrects dans vos -chemins de vue. +Pour utiliser le nouveau webroot du thème, créez des répertoires comme:: + +``app/View/Themed//webroot`` + +dans votre thème. Le Dispatcher se chargera de trouver les assets du thème +corrects dans vos chemins de vue. Tous les helpers integrés dans CakePHP ont intégrés l'existence des thèmes et vont créer des chemins d'accès corrects automatiquement. Comme pour les @@ -90,4 +92,4 @@ cakephp. .. meta:: :title lang=fr: Thèmes - :keywords lang=fr: environnements de production,dossier du thème,fichiers layout,requêtes de développement,fonctions de callback,structure de dossier,vue par défaut,dispatcher,lien symbolique,cas de base,layouts,assets,cakephp,thèmes,avantage + :keywords lang=fr: environnements de production,dossier du thème,fichiers layout,requêtes de développement,fonctions de callback,structure de dossier,vue par défaut,dispatcher,lien symbolique,cas de base,layouts,assets,cakephp,thèmes,themes,avantage -- GitLab From bc2ec99b93f31198c64b420e3d4544d9a6c29eea Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Sat, 7 Dec 2013 12:31:40 -0500 Subject: [PATCH 116/458] Fix overflows on pgs. 301-350. --- en/core-libraries/behaviors/translate.rst | 6 +- en/core-libraries/behaviors/tree.rst | 110 ++++++++++++++---- en/models/callback-methods.rst | 29 +++-- en/models/data-validation.rst | 14 ++- .../validating-data-from-the-controller.rst | 10 +- 5 files changed, 129 insertions(+), 40 deletions(-) diff --git a/en/core-libraries/behaviors/translate.rst b/en/core-libraries/behaviors/translate.rst index cadcda78f..357a61fb6 100644 --- a/en/core-libraries/behaviors/translate.rst +++ b/en/core-libraries/behaviors/translate.rst @@ -186,7 +186,8 @@ where the key is the translatable field and the value is the fake association name.:: $this->Post->bindTranslation(array('title' => 'titleTranslation')); - $this->Post->find('all', array('recursive' => 1)); // need at least recursive 1 for this to work. + // need at least recursive 1 for this to work. + $this->Post->find('all', array('recursive' => 1)); With this setup the result of your find() should look something like this:: @@ -243,7 +244,8 @@ your controller or you can define it directly in the model. public function add() { if (!empty($this->request->data)) { - $this->Post->locale = 'de_de'; // we are going to save the german version + // we are going to save the german version + $this->Post->locale = 'de_de'; $this->Post->create(); if ($this->Post->save($this->request->data)) { return $this->redirect(array('action' => 'index')); diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index a76766416..1e97b3cb8 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -59,21 +59,66 @@ data in it:: PRIMARY KEY (id) ); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(1, 'My Categories', NULL, 1, 30); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(2, 'Fun', 1, 2, 15); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(3, 'Sport', 2, 3, 8); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(4, 'Surfing', 3, 4, 5); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(5, 'Extreme knitting', 3, 6, 7); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(6, 'Friends', 2, 9, 14); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(7, 'Gerald', 6, 10, 11); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(8, 'Gwendolyn', 6, 12, 13); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(9, 'Work', 1, 16, 29); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(10, 'Reports', 9, 17, 22); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(11, 'Annual', 10, 18, 19); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(12, 'Status', 10, 20, 21); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(13, 'Trips', 9, 23, 28); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(14, 'National', 13, 24, 25); - INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) VALUES(15, 'International', 13, 26, 27); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (1, 'My Categories', NULL, 1, 30); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (2, 'Fun', 1, 2, 15); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (3, 'Sport', 2, 3, 8); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (4, 'Surfing', 3, 4, 5); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (5, 'Extreme knitting', 3, 6, 7); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (6, 'Friends', 2, 9, 14); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (7, 'Gerald', 6, 10, 11); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (8, 'Gwendolyn', 6, 12, 13); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (9, 'Work', 1, 16, 29); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (10, 'Reports', 9, 17, 22); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (11, 'Annual', 10, 18, 19); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (12, 'Status', 10, 20, 21); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (13, 'Trips', 9, 23, 28); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (14, 'National', 13, 24, 25); + INSERT INTO + `categories` (`id`, `name`, `parent_id`, `lft`, `rght`) + VALUES + (15, 'International', 13, 26, 27); For the purpose of checking that everything is setup correctly, we can create a test method and output the contents of our category @@ -82,7 +127,12 @@ tree to see what it looks like. With a simple controller:: class CategoriesController extends AppController { public function index() { - $data = $this->Category->generateTreeList(null, null, null, '   '); + $data = $this->Category->generateTreeList( + null, + null, + null, + '   ' + ); debug($data); die; } } @@ -243,7 +293,10 @@ following code:: // pseudo controller code $this->Category->id = 5; // id of Extreme fishing - $newParentId = $this->Category->field('id', array('name' => 'Other People\'s Categories')); + $newParentId = $this->Category->field( + 'id', + array('name' => 'Other People\'s Categories') + ); $this->Category->save(array('parent_id' => $newParentId)); As would be expected the structure would be modified to: @@ -367,7 +420,8 @@ are a few more tree-orientated permutations at your disposal. $allChildren = $this->Category->children(); // a flat array with 11 items // Only return direct children - $directChildren = $this->Category->children(1, true); // a flat array with 2 items + $directChildren = $this->Category->children(1, true); // a flat array with + // 2 items .. note:: @@ -461,10 +515,18 @@ are a few more tree-orientated permutations at your disposal. // contents of $parents array( - [0] => array('Category' => array('id' => 1, 'name' => 'My Categories', ..)), - [1] => array('Category' => array('id' => 9, 'name' => 'Work', ..)), - [2] => array('Category' => array('id' => 13, 'name' => 'Trips', ..)), - [3] => array('Category' => array('id' => 15, 'name' => 'International', ..)), + [0] => array( + 'Category' => array('id' => 1, 'name' => 'My Categories', ..) + ), + [1] => array( + 'Category' => array('id' => 9, 'name' => 'Work', ..) + ), + [2] => array( + 'Category' => array('id' => 13, 'name' => 'Trips', ..) + ), + [3] => array( + 'Category' => array('id' => 15, 'name' => 'International', ..) + ), ) @@ -495,7 +557,9 @@ Advanced Usage if ($delta > 0) { $this->Category->moveDown($this->Category->id, abs($delta)); } else { - $this->Session->setFlash('Please provide the number of positions the field should be moved down.'); + $this->Session->setFlash( + 'Please provide the number of positions the field should be moved down.' + ); } return $this->redirect(array('action' => 'index')); diff --git a/en/models/callback-methods.rst b/en/models/callback-methods.rst index 38552877e..8de5a8eb6 100644 --- a/en/models/callback-methods.rst +++ b/en/models/callback-methods.rst @@ -74,7 +74,9 @@ formatting:: public function afterFind($results, $primary = false) { foreach ($results as $key => $val) { if (isset($val['Event']['begindate'])) { - $results[$key]['Event']['begindate'] = $this->dateFormatAfterFind($val['Event']['begindate']); + $results[$key]['Event']['begindate'] = $this->dateFormatAfterFind( + $val['Event']['begindate'] + ); } } return $results; @@ -125,9 +127,16 @@ changed very easily. Use the code below in the appropriate model. :: public function beforeSave($options = array()) { - if (!empty($this->data['Event']['begindate']) && !empty($this->data['Event']['enddate'])) { - $this->data['Event']['begindate'] = $this->dateFormatBeforeSave($this->data['Event']['begindate']); - $this->data['Event']['enddate'] = $this->dateFormatBeforeSave($this->data['Event']['enddate']); + if (!empty($this->data['Event']['begindate']) && + !empty($this->data['Event']['enddate']) + ) { + + $this->data['Event']['begindate'] = $this->dateFormatBeforeSave( + $this->data['Event']['begindate'] + ); + $this->data['Event']['enddate'] = $this->dateFormatBeforeSave( + $this->data['Event']['enddate'] + ); } return true; } @@ -174,9 +183,12 @@ on this record will also be deleted. :: // using app/Model/ProductCategory.php - // In the following example, do not let a product category be deleted if it still contains products. - // A call of $this->Product->delete($id) from ProductsController.php has set $this->id . - // Assuming 'ProductCategory hasMany Product', we can access $this->Product in the model. + // In the following example, do not let a product category be deleted if it + // still contains products. + // A call of $this->Product->delete($id) from ProductsController.php has set + // $this->id . + // Assuming 'ProductCategory hasMany Product', we can access $this->Product + // in the model. public function beforeDelete($cascade = true) { $count = $this->Product->find("count", array( "conditions" => array("product_category_id" => $this->id) @@ -198,7 +210,8 @@ in this callback method. :: - // perhaps after deleting a record from the database, you also want to delete an associated file + // perhaps after deleting a record from the database, you also want to delete + // an associated file public function afterDelete() { $file = new File($this->data['SomeModel']['file_path']); $file->delete(); diff --git a/en/models/data-validation.rst b/en/models/data-validation.rst index 1f1b00145..fe9c378e7 100644 --- a/en/models/data-validation.rst +++ b/en/models/data-validation.rst @@ -124,10 +124,12 @@ general usage pattern adding a rule for a single field:: public $validate = array( 'fieldName1' => array( - 'rule' => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...) + // or: array('ruleName', 'param1', 'param2' ...) + 'rule' => 'ruleName', 'required' => true, 'allowEmpty' => false, - 'on' => 'create', // or: 'update' + // or: 'update' + 'on' => 'create', 'message' => 'Your Error Message' ) ); @@ -431,7 +433,8 @@ stored in $this->data member variable:: public $validate = array( 'slug' => array( 'rule' => 'alphaNumericDashUnderscore', - 'message' => 'Slug can only be letters, numbers, dash and underscore' + 'message' => 'Slug can only be letters,' . + ' numbers, dash and underscore' ) ); @@ -876,7 +879,10 @@ with usage examples. public $validate = array( 'image' => array( - 'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')), + 'rule' => array( + 'extension', + array('gif', 'jpeg', 'png', 'jpg') + ), 'message' => 'Please supply a valid image.' ) ); diff --git a/en/models/data-validation/validating-data-from-the-controller.rst b/en/models/data-validation/validating-data-from-the-controller.rst index b6434a8f4..b678eb3f7 100644 --- a/en/models/data-validation/validating-data-from-the-controller.rst +++ b/en/models/data-validation/validating-data-from-the-controller.rst @@ -58,7 +58,9 @@ actually saving. To validate multiple models, the following approach should be used:: - if ($this->ModelName->saveAll($this->request->data, array('validate' => 'only'))) { + if ($this->ModelName->saveAll( + $this->request->data, array('validate' => 'only') + )) { // validates } else { // does not validate @@ -67,9 +69,11 @@ used:: If you have validated data before save, you can turn off validation to avoid second check:: - if ($this->ModelName->saveAll($this->request->data, array('validate' => false))) { + if ($this->ModelName->saveAll( + $this->request->data, array('validate' => false) + )) { // saving without validation - } + } .. meta:: -- GitLab From fcfac98dbee4426a45e2f49ce5f89e2fbea0182f Mon Sep 17 00:00:00 2001 From: Lionel Chan Date: Mon, 9 Dec 2013 16:19:56 +0800 Subject: [PATCH 117/458] adding callbacks into saveMany `callbacks` is supported in saveMany too --- en/models/saving-your-data.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/en/models/saving-your-data.rst b/en/models/saving-your-data.rst index 52fd89489..f6c7c8e1e 100644 --- a/en/models/saving-your-data.rst +++ b/en/models/saving-your-data.rst @@ -266,6 +266,8 @@ options may be used: Should be set to false if database/table does not support transactions. * ``fieldList``: Equivalent to the $fieldList parameter in Model::save() * ``deep``: (since 2.1) If set to true, also associated data is saved, see also saveAssociated +* ``callbacks`` Set to false to disable callbacks. Using 'before' or 'after' + will enable only those callbacks. * ``counterCache`` (since 2.4) Boolean to control updating of counter caches (if any) For saving multiple records of single model, $data needs to be a -- GitLab From a8985060793e6f22347d67a68ccd29fc5a2f513e Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Mon, 9 Dec 2013 08:16:11 -0500 Subject: [PATCH 118/458] Fix overflows on lines. 350-400. --- en/core-libraries/behaviors/tree.rst | 20 ++++++--- en/core-libraries/collections.rst | 30 +++++++++----- en/core-libraries/events.rst | 15 +++++-- en/core-utility-libraries/app.rst | 28 ++++++++++--- .../additional-methods-and-properties.rst | 3 +- en/models/datasources.rst | 15 ++++--- en/models/model-attributes.rst | 3 +- en/models/virtual-fields.rst | 41 +++++++++++++++---- 8 files changed, 113 insertions(+), 42 deletions(-) diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index 1e97b3cb8..216736f21 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -558,7 +558,8 @@ Advanced Usage $this->Category->moveDown($this->Category->id, abs($delta)); } else { $this->Session->setFlash( - 'Please provide the number of positions the field should be moved down.' + 'Please provide the number of positions the field should be' . + 'moved down.' ); } @@ -587,7 +588,10 @@ Advanced Usage if ($delta > 0) { $this->Category->moveUp($this->Category->id, abs($delta)); } else { - $this->Session->setFlash('Please provide a number of positions the category should be moved up.'); + $this->Session->setFlash( + 'Please provide a number of positions the category should' . + 'be moved up.' + ); } return $this->redirect(array('action' => 'index')); @@ -670,10 +674,14 @@ Advanced Usage not change the parent of any node.:: $model->reorder(array( - 'id' => , //id of record to use as top node for reordering, default: $Model->id - 'field' => , //which field to use in reordering, default: $Model->displayField - 'order' => , //direction to order, default: 'ASC' - 'verify' => //whether or not to verify the tree before reorder, default: true + //id of record to use as top node for reordering, default: $Model->id + 'id' => , + //which field to use in reordering, default: $Model->displayField + 'field' => , + //direction to order, default: 'ASC' + 'order' => , + //whether or not to verify the tree before reorder, default: true + 'verify' => )); .. note:: diff --git a/en/core-libraries/collections.rst b/en/core-libraries/collections.rst index fdbfdcb12..db6e6921a 100644 --- a/en/core-libraries/collections.rst +++ b/en/core-libraries/collections.rst @@ -3,7 +3,7 @@ Collections Components, Helpers, Behaviors and Tasks all share a similar structure and set of behaviors. For 2.0, they were given a unified API for interacting with -collections of similar objects. The collection objects in CakePHP, give you +collections of similar objects. The collection objects in CakePHP, give you a uniform way to interact with several different kinds of objects in your application. @@ -32,7 +32,10 @@ used to alias objects in a collection. This allows you to have component names that do not reflect the classnames, which can be helpful when extending core components:: - $this->Auth = $this->Components->load('Auth', array('className' => 'MyCustomAuth')); + $this->Auth = $this->Components->load( + 'Auth', + array('className' => 'MyCustomAuth') + ); $this->Auth->user(); // Actually using MyCustomAuth::user(); The inverse of loading an object, is unloading it. Unloaded objects are removed @@ -79,8 +82,8 @@ Using the ``break`` and ``breakOn`` options you can cancel a callback loop midway similar to stopping event propagation in JavaScript:: $this->Behaviors->trigger( - 'beforeFind', - array($this, $query), + 'beforeFind', + array($this, $query), array('break' => true, 'breakOn' => false) ); @@ -97,7 +100,7 @@ on that object unless the ``triggerDisabled`` option is used:: // Disable the HtmlHelper $this->Helpers->disable('Html'); - + // Re-enable the helper later on $this->Helpers->enable('Html'); @@ -124,14 +127,16 @@ Here's how you can specify priority at declaration time:: class SomeController { public $components = array( 'Foo', //Foo gets default priority 10 - 'Bar' => array('priority' => 9) //Bar's callbacks are triggered before Foo's + //Bar's callbacks are triggered before Foo's + 'Bar' => array('priority' => 9) ); - public $helpers = array( - 'Cache' => array('priority' => 12), //Cache's callbacks will be triggered last + public $helpers = array( + //Cache's callbacks will be triggered last + 'Cache' => array('priority' => 12), 'Asset', - 'Utility' //Utility has priority 10 same as Asset and its callbacks are trigger - //after Asset's + 'Utility' //Utility has priority 10 same as Asset and its callbacks + //are triggered after Asset's ); } @@ -145,7 +150,10 @@ Here's how you can specify priority at declaration time:: When dynamically loading objects to a collection you can specify the priority like this:: - $this->MyComponent = $this->Components->load('MyComponent', array('priority' => 9)); + $this->MyComponent = $this->Components->load( + 'MyComponent', + array('priority' => 9) + ); You can also change priorities at run time using the ``ObjectCollection::setPriority()`` function:: diff --git a/en/core-libraries/events.rst b/en/core-libraries/events.rst index 989311304..69265a551 100644 --- a/en/core-libraries/events.rst +++ b/en/core-libraries/events.rst @@ -194,7 +194,10 @@ function to do so:: // Anonymous functions require PHP 5.3+ $this->Order->getEventManager()->attach(function($event) { - CakeLog::write('info', 'A new order was placed with id: ' . $event->subject()->id); + CakeLog::write( + 'info', + 'A new order was placed with id: ' . $event->subject()->id + ); }, 'Model.Order.afterPlace'); In addition to anonymous functions you can use any other callable type that PHP @@ -338,7 +341,10 @@ operation from occurring. To check if an event was stopped, you call the ``isStopped()`` method in the event object:: public function place($order) { - $event = new CakeEvent('Model.Order.beforePlace', $this, array('order' => $order)); + $event = new CakeEvent( + 'Model.Order.beforePlace', + $this, array('order' => $order) + ); $this->getEventManager()->dispatch($event); if ($event->isStopped()) { return false; @@ -378,7 +384,10 @@ directly or returning the value in the callback itself:: // Using the event result public function place($order) { - $event = new CakeEvent('Model.Order.beforePlace', $this, array('order' => $order)); + $event = new CakeEvent( + 'Model.Order.beforePlace', + $this, array('order' => $order) + ); $this->getEventManager()->dispatch($event); if (!empty($event->result['order'])) { $order = $event->result['order']; diff --git a/en/core-utility-libraries/app.rst b/en/core-utility-libraries/app.rst index 8a37d36c4..5866c66b2 100644 --- a/en/core-utility-libraries/app.rst +++ b/en/core-utility-libraries/app.rst @@ -76,7 +76,8 @@ from:: // Load the class Comment in app/Plugin/PluginName/Model/Comment.php App::uses('Comment', 'PluginName.Model'); - // Load the class CommentComponent in app/Plugin/PluginName/Controller/Component/CommentComponent.php + // Load the class CommentComponent in + // app/Plugin/PluginName/Controller/Component/CommentComponent.php App::uses('CommentComponent', 'PluginName.Controller/Component'); @@ -146,7 +147,9 @@ Adding paths for App to find packages in App::build(array('Model' => array('/path/to/models/')), App::RESET); //will setup multiple search paths for helpers - App::build(array('View/Helper' => array('/path/to/helpers/', '/another/path/'))); + App::build(array( + 'View/Helper' => array('/path/to/helpers/', '/another/path/') + )); If reset is set to true, all loaded plugins will be forgotten and they will @@ -315,7 +318,8 @@ the same conventions as loading other files:: To load classes in subdirectories, you'll need to add those paths with ``App::build()``:: - // Load the class ClassInSomePackage in app/Vendor/SomePackage/ClassInSomePackage.php + // Load the class ClassInSomePackage in + // app/Vendor/SomePackage/ClassInSomePackage.php App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'SomePackage'))); App::uses('ClassInSomePackage', 'Vendor'); @@ -344,18 +348,30 @@ To load **app/Vendor/some.name.php**:: To load **app/Vendor/services/well.named.php**:: - App::import('Vendor', 'WellNamed', array('file' => 'services' . DS . 'well.named.php')); + App::import( + 'Vendor', + 'WellNamed', + array('file' => 'services' . DS . 'well.named.php') + ); To load **app/Plugin/Awesome/Vendor/services/well.named.php**:: - App::import('Vendor', 'Awesome.WellNamed', array('file' => 'services' . DS . 'well.named.php')); + App::import( + 'Vendor', + 'Awesome.WellNamed', + array('file' => 'services' . DS . 'well.named.php') + ); It wouldn't make a difference if your vendor files are inside your /vendors directory. CakePHP will automatically find it. To load **vendors/vendorName/libFile.php**:: - App::import('Vendor', 'aUniqueIdentifier', array('file' => 'vendorName' . DS . 'libFile.php')); + App::import( + 'Vendor', + 'aUniqueIdentifier', + array('file' => 'vendorName' . DS . 'libFile.php') + ); App Init/Load/Shutdown Methods ============================== diff --git a/en/models/additional-methods-and-properties.rst b/en/models/additional-methods-and-properties.rst index 5864e2fa8..a0ae35ca2 100644 --- a/en/models/additional-methods-and-properties.rst +++ b/en/models/additional-methods-and-properties.rst @@ -14,7 +14,8 @@ the fat model. class Example extends AppModel { public function getRecent() { $conditions = array( - 'created BETWEEN (curdate() - interval 7 day) and (curdate() - interval 0 day))' + 'created BETWEEN (curdate() - interval 7 day)' . + ' and (curdate() - interval 0 day))' ); return $this->find('all', compact('conditions')); } diff --git a/en/models/datasources.rst b/en/models/datasources.rst index 7395dfcc4..13b383ddb 100644 --- a/en/models/datasources.rst +++ b/en/models/datasources.rst @@ -50,7 +50,7 @@ Methods that must be implemented for all CRUD methods: - ``listSources($data = null)`` - ``calculate($model, $func, $params)`` - At least one of: - + - ``create(Model $model, $fields = null, $values = null)`` - ``read(Model $model, $queryData = array(), $recursive = null)`` - ``update(Model $model, $fields = null, $values = null, $conditions = null)`` @@ -166,7 +166,8 @@ based API. We'll call it ``FarAwaySource`` and we'll put it in /** * Implement the R in CRUD. Calls to ``Model::find()`` arrive here. */ - public function read(Model $model, $queryData = array(), $recursive = null) { + public function read(Model $model, $queryData = array(), + $recursive = null) { /** * Here we do the actual count as instructed by our calculate() * method above. We could either check the remote source or some @@ -180,7 +181,10 @@ based API. We'll call it ``FarAwaySource`` and we'll put it in * Now we get, decode and return the remote data. */ $queryData['conditions']['apiKey'] = $this->config['apiKey']; - $json = $this->Http->get('http://example.com/api/list.json', $queryData['conditions']); + $json = $this->Http->get( + 'http://example.com/api/list.json', + $queryData['conditions'] + ); $res = json_decode($json, true); if (is_null($res)) { $error = json_last_error(); @@ -210,7 +214,8 @@ based API. We'll call it ``FarAwaySource`` and we'll put it in * set arrive here. Depending on the remote source you can just call * ``$this->create()``. */ - public function update(Model $model, $fields = null, $values = null, $conditions = null) { + public function update(Model $model, $fields = null, $values = null, + $conditions = null) { return $this->create($model, $fields, $values); } @@ -255,7 +260,7 @@ We can retrieve data from our remote source using the familiar model methods:: .. tip:: - Using find types other than ``'all'`` can have unexpected results if the + Using find types other than ``'all'`` can have unexpected results if the result of your ``read`` method is not a numerically indexed array. Similarly we can save a new message:: diff --git a/en/models/model-attributes.rst b/en/models/model-attributes.rst index 5ab27544d..b14e8ad79 100644 --- a/en/models/model-attributes.rst +++ b/en/models/model-attributes.rst @@ -76,7 +76,8 @@ setting CakePHP to use an existing database table. Example usage:: class Example extends AppModel { - public $primaryKey = 'example_id'; // example_id is the field name in the database + // example_id is the field name in the database + public $primaryKey = 'example_id'; } diff --git a/en/models/virtual-fields.rst b/en/models/virtual-fields.rst index 2d9b6c80e..41360a280 100644 --- a/en/models/virtual-fields.rst +++ b/en/models/virtual-fields.rst @@ -51,8 +51,10 @@ the first parameter. By setting the second parameter of `hasField()` to true, virtualFields will also be checked when checking if a model has a field. Using the example field above:: - $this->User->hasField('name'); // Will return false, as there is no concrete field called name - $this->User->hasField('name', true); // Will return true as there is a virtual field called name + // Will return false, as there is no concrete field called name + $this->User->hasField('name'); + // Will return true as there is a virtual field called name + $this->User->hasField('name', true); Model::isVirtualField() ----------------------- @@ -71,7 +73,8 @@ This method can be used to access the SQL expression that comprises a virtual field. If no argument is supplied it will return all virtual fields in a Model:: - $this->User->getVirtualField('name'); //returns 'CONCAT(User.first_name, ' ', User.last_name)' + //returns 'CONCAT(User.first_name, ' ', User.last_name)' + $this->User->getVirtualField('name'); Model::find() and virtual fields -------------------------------- @@ -109,7 +112,9 @@ best to define the virtualFields in your model's constructor:: public function __construct($id = false, $table = null, $ds = null) { parent::__construct($id, $table, $ds); - $this->virtualFields['name'] = sprintf('CONCAT(%s.first_name, " ", %s.last_name)', $this->alias, $this->alias); + $this->virtualFields['name'] = sprintf( + 'CONCAT(%s.first_name, " ", %s.last_name)', $this->alias, $this->alias + ); } This will allow your virtualFields to work for any alias you give a @@ -118,13 +123,22 @@ model. Virtual fields in SQL queries ============================= -Using functions in direct SQL queries will prevent data from being returned in the same array as your model's data. +Using functions in direct SQL queries will prevent data from being returned in the same array as your model's data. For example this:: - $this->Timelog->query("SELECT project_id, SUM(id) as TotalHours FROM timelogs AS Timelog GROUP BY project_id;"); + $this->Timelog->query( + "SELECT + project_id, SUM(id) as TotalHours + FROM + timelogs + AS + Timelog + GROUP BY + project_id;" + ); would return something like this:: - + Array ( [0] => Array @@ -151,7 +165,16 @@ If that were to occur, ``0`` would be returned in the TotalHours column:: In addition to adding the virtual field we also need to alias our column using the form of ``MyModel__MyField`` like this:: - $this->Timelog->query("SELECT project_id, SUM(id) as Timelog__TotalHours FROM timelogs AS Timelog GROUP BY project_id;"); + $this->Timelog->query( + "SELECT + project_id, SUM(id) as Timelog__TotalHours + FROM + timelogs + AS + Timelog + GROUP BY + project_id;" + ); Running the query again after specifying the virtual field should result in a cleaner grouping of values:: @@ -167,7 +190,7 @@ cleaner grouping of values:: ) ) ) - + Limitations of virtualFields ============================ -- GitLab From beaad6d8ef4c603051ab2a6e8d78948f3ad54221 Mon Sep 17 00:00:00 2001 From: cake17 Date: Mon, 9 Dec 2013 14:59:32 +0100 Subject: [PATCH 119/458] [fr] Follow #925 Fix code line overflows pgs 201-300 --- en/models/retrieving-your-data.rst | 8 +- fr/core-libraries/helpers/js.rst | 75 +++++++++++++++---- fr/core-libraries/helpers/paginator.rst | 38 ++++++++-- fr/core-libraries/helpers/rss.rst | 14 +++- fr/core-libraries/helpers/text.rst | 5 +- fr/core-libraries/helpers/time.rst | 7 +- fr/core-utility-libraries/string.rst | 23 ++++-- fr/core-utility-libraries/time.rst | 28 +++++-- .../associations-linking-models-together.rst | 5 +- fr/models/retrieving-your-data.rst | 46 ++++++++---- fr/models/saving-your-data.rst | 51 ++++++++++--- 11 files changed, 229 insertions(+), 71 deletions(-) diff --git a/en/models/retrieving-your-data.rst b/en/models/retrieving-your-data.rst index 35a602627..ed7887292 100644 --- a/en/models/retrieving-your-data.rst +++ b/en/models/retrieving-your-data.rst @@ -386,10 +386,10 @@ return the row before and after the one you request. Below is a simple :: public function some_function() { - $neighbors = $this->Article->find( - 'neighbors', - array('field' => 'id', 'value' => 3) - ); + $neighbors = $this->Article->find( + 'neighbors', + array('field' => 'id', 'value' => 3) + ); } You can see in this example the two required elements of the diff --git a/fr/core-libraries/helpers/js.rst b/fr/core-libraries/helpers/js.rst index 64f1e9e08..d3f541e7e 100644 --- a/fr/core-libraries/helpers/js.rst +++ b/fr/core-libraries/helpers/js.rst @@ -264,8 +264,9 @@ méthode. .. php:method:: object($data, $options = array()) - Sérialise ``$data`` vers JSON. Cette méthode est un proxy pour ``json_encode()`` - avec quelques fonctionnalités supplémentaires ajoutée avec le paramètre ``$options``. + Sérialise ``$data`` vers JSON. Cette méthode est un proxy pour + ``json_encode()`` avec quelques fonctionnalités supplémentaires ajoutée + avec le paramètre ``$options``. **Options:** @@ -423,7 +424,13 @@ méthode. .. code-block:: javascript - $("#element").draggable({containment:"#content", drag:onDrag, grid:[10,10], start:onStart, stop:onStop}); + $("#element").draggable({ + containment:"#content", + drag:onDrag, + grid:[10,10], + start:onStart, + stop:onStop + }); .. php:method:: drop($options = array()) @@ -460,7 +467,12 @@ méthode. .. code-block:: javascript - $("#element").droppable({accept:".items", drop:onDrop, out:onExit, over:onHover}); + $("#element").droppable({ + accept:".items", + drop:onDrop, + out:onExit, + over:onHover + }); .. note:: @@ -511,7 +523,14 @@ méthode. .. code-block:: javascript - $("#element").slider({change:onChange, max:10, min:0, orientation:"vertical", stop:onComplete, value:2}); + $("#element").slider({ + change:onChange, + max:10, + min:0, + orientation:"vertical", + stop:onComplete, + value:2 + }); .. php:method:: effect($name, $options = array()) @@ -578,7 +597,11 @@ méthode. ``stop`` à false:: $this->Js->get('#some-link'); - $this->Js->event('click', $this->Js->alert('saperlipopette!'), array('stop' => false)); + $this->Js->event( + 'click', + $this->Js->alert('saperlipopette!'), + array('stop' => false) + ); Si vous employiez la librairie jQuery vous devriez avoir le code Javascript suivant ajouté au buffer. Notez que l'événement du navigateur @@ -663,10 +686,16 @@ méthode. Va créé un bouton submit et un événement onclick attaché. L'événement click sera bufferisé par défaut.:: - echo $this->Js->submit('Save', array('update' => '#content', 'div' => false, 'type' => 'json', 'async' => false)); + echo $this->Js->submit('Save', array( + 'update' => '#content', + 'div' => false, + 'type' => 'json', + 'async' => false + )); Montre comment vous pouvez combiner les options de - :php:func:`FormHelper::submit()` et :php:func:`Helper Js::request()` à l'utilisation des submits. + :php:func:`FormHelper::submit()` et :php:func:`Helper Js::request()` à + l'utilisation des submits. .. php:method:: link($title, $url = null, $options = array()) @@ -693,7 +722,11 @@ méthode. **Exemple d'utilisation**:: - echo $this->Js->link('Page 2', array('page' => 2), array('update' => '#content')); + echo $this->Js->link( + 'Page 2', + array('page' => 2), + array('update' => '#content') + ); Va créé un lien pointant vers ``/page:2`` et mettre à jour #content avec la réponse. @@ -707,6 +740,9 @@ méthode. )); // Créé le HTML suivant + + .. code-block:: html + Page 2 .. php:method:: serializeForm($options = array()) @@ -804,17 +840,24 @@ Ajouter des effets et des transitions Depuis que `indicator`` n'est plus supporté, vous devez ajouter les effets d'indicator vous même.:: +.. code-block:: php + Html->script('jquery'); ?> - //plus de trucs ici. + //more stuff here.
    - Html->image('indicator.gif', array('id' => 'busy-indicator')); ?> + Html->image( + 'indicator.gif', + array('id' => 'busy-indicator') + ); + ?> @@ -832,8 +875,14 @@ avec le ``Helper Js``. Pour faire cela, nous avons besoin de mettre $this->Paginator->options(array( 'update' => '#content', 'evalScripts' => true, - 'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)), - 'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)), + 'before' => $this->Js->get('#busy-indicator')->effect( + 'fadeIn', + array('buffer' => false) + ), + 'complete' => $this->Js->get('#busy-indicator')->effect( + 'fadeOut', + array('buffer' => false) + ), )); Ceci montrera/cachera l'élément 'indicateur occupé' avant et après diff --git a/fr/core-libraries/helpers/paginator.rst b/fr/core-libraries/helpers/paginator.rst index 5f0bc90f6..7356d0165 100644 --- a/fr/core-libraries/helpers/paginator.rst +++ b/fr/core-libraries/helpers/paginator.rst @@ -58,13 +58,19 @@ Sortie: Si vous utilisez du HTML comme des images dans vos liens rappelez-vous de paramétrer l'échappement:: - echo $this->Paginator->sort('user_id', 'User account', array('escape' => false)); + echo $this->Paginator->sort( + 'user_id', + 'User account', + array('escape' => false) + ); Sortie: .. code-block:: html - User account + + User account + L'option de direction peut être utilisée pour paramétrer la direction par défaut pour un lien. Une fois qu'un lien est activé, il changera @@ -179,14 +185,23 @@ ou suivant, première et dernière pages dans le jeu de données paginées. Un simple exemple serait:: - echo $this->Paginator->prev(' << ' . __('previous'), array(), null, array('class' => 'prev disabled')); + echo $this->Paginator->prev( + ' << ' . __('previous'), + array(), + null, + array('class' => 'prev disabled') + ); Si vous étiez actuellement sur la secondes pages des posts (articles), vous obtenez le résultat suivant: .. code-block:: html - + + + Si il n'y avait pas de page précédente vous obtenez: @@ -202,7 +217,11 @@ ou suivant, première et dernière pages dans le jeu de données paginées. .. code-block:: html - + Vous pouvez aussi désactiver la balise enroulante:: @@ -212,7 +231,10 @@ ou suivant, première et dernière pages dans le jeu de données paginées. .. code-block:: html - + .. versionchanged:: 2.3 Pour les méthodes: :php:meth:`PaginatorHelper::prev()` et @@ -406,7 +428,9 @@ que la principale option de configuration pour cette fonctionnalité est dans les vues. Vous pouvez utiliser `options()`` pour indiquer que vous voulez la conversion d'autres paramètres nommés:: - $this->Paginator->options(array('convertKeys' => array('your', 'keys', 'here'))); + $this->Paginator->options(array( + 'convertKeys' => array('your', 'keys', 'here') + )); Configurer le Helper Paginator pour utiliser le Helper Javascript ----------------------------------------------------------------- diff --git a/fr/core-libraries/helpers/rss.rst b/fr/core-libraries/helpers/rss.rst index 86c0b3bf5..607fb3509 100644 --- a/fr/core-libraries/helpers/rss.rst +++ b/fr/core-libraries/helpers/rss.rst @@ -59,13 +59,19 @@ le même:: public function index() { if ($this->RequestHandler->isRss() ) { - $posts = $this->Post->find('all', array('limit' => 20, 'order' => 'Post.created DESC')); + $posts = $this->Post->find( + 'all', + array('limit' => 20, 'order' => 'Post.created DESC') + ); return $this->set(compact('posts')); } // ceci n'est pas une requête RSS // donc on retourne les données utilisées par l'interface du site web - $this->paginate['Post'] = array('order' => 'Post.created DESC', 'limit' => 10); + $this->paginate['Post'] = array( + 'order' => 'Post.created DESC', + 'limit' => 10 + ); $posts = $this->paginate(); $this->set(compact('posts')); @@ -143,7 +149,7 @@ pour chaque pair de valeur de clé. foreach ($posts as $post) { $postTime = strtotime($post['Post']['created']); - + $postLink = array( 'controller' => 'posts', 'action' => 'view', @@ -160,7 +166,7 @@ pour chaque pair de valeur de clé. 'exact' => true, 'html' => true, )); - + echo $this->Rss->item(array(), array( 'title' => $post['Post']['title'], 'link' => $postLink, diff --git a/fr/core-libraries/helpers/text.rst b/fr/core-libraries/helpers/text.rst index c002b7541..cb3f0d7c4 100644 --- a/fr/core-libraries/helpers/text.rst +++ b/fr/core-libraries/helpers/text.rst @@ -26,8 +26,9 @@ longues étendues de texte. les options définies dans ``$htmlOptions`` (regardez :php:meth:`HtmlHelper::link()`).:: - $my_text = 'Pour plus d'informations sur nos pâtes et desserts fameux, contactez info@example.com'; - $linked_text = $this->Text->autoLinkEmails($my_text); + $myText = 'Pour plus d'informations sur nos pâtes et desserts fameux, + contactez info@example.com'; + $linkedText = $this->Text->autoLinkEmails($myText); Sortie:: diff --git a/fr/core-libraries/helpers/time.rst b/fr/core-libraries/helpers/time.rst index 5a62aedee..2fe8270a7 100644 --- a/fr/core-libraries/helpers/time.rst +++ b/fr/core-libraries/helpers/time.rst @@ -34,7 +34,12 @@ nécessaires pour permettre à vos utilisateurs de définir leur time zone. Maintenant que nous connaissons le time zone de l'utilisateur connecté, nous pouvons corriger la date et le temps de nos posts en utilisant le Helper Time:: - echo $this->Time->format('F jS, Y h:i A', $post['Post']['created'], null, $user['User']['time_zone']); + echo $this->Time->format( + 'F jS, Y h:i A', + $post['Post']['created'], + null, + $user['User']['time_zone'] + ); // Affichera August 22nd, 2011 11:53 PM pour un utilisateur dans GMT+0 // August 22nd, 2011 03:53 PM pour un utilisateur dans GMT-8 // et August 23rd, 2011 09:53 AM GMT+10 diff --git a/fr/core-utility-libraries/string.rst b/fr/core-utility-libraries/string.rst index d708ad92e..8f397883a 100644 --- a/fr/core-utility-libraries/string.rst +++ b/fr/core-utility-libraries/string.rst @@ -125,11 +125,19 @@ d'une ``View``, utilisez la classe ``String``:: Exemple:: // appelé avec TextHelper - echo $this->Text->highlight($last_sentence, 'using', array('format' => '\1')); + echo $this->Text->highlight( + $lastSentence, + 'using', + array('format' => '\1') + ); // appelé avec String App::uses('String', 'Utility'); - echo String::highlight($last_sentence, 'using', array('format' => '\1')); + echo String::highlight( + $lastSentence, + 'using', + array('format' => '\1') + ); Sortie:: @@ -215,9 +223,12 @@ d'une ``View``, utilisez la classe ``String``:: Exemple:: + $sampleText = 'I packed my bag and in it I put a PSP, a PS3, a TV, ' . + 'a C# program that can divide by zero, death metal t-shirts' + // appelé avec TextHelper echo $this->Text->tail( - 'I packed my bag and in it I put a PSP, a PS3, a TV, a C# program that can divide by zero, death metal t-shirts', + $sampleText, 70, array( 'ellipsis' => '...', @@ -228,7 +239,7 @@ d'une ``View``, utilisez la classe ``String``:: // appelé avec String App::uses('String', 'Utility'); echo String::tail( - 'I packed my bag and in it I put a PSP, a PS3, a TV, a C# program that can divide by zero, death metal t-shirts', + $sampleText, 70, array( 'ellipsis' => '...', @@ -256,11 +267,11 @@ d'une ``View``, utilisez la classe ``String``:: être montrés dans le document résultant.:: // appelé avec TextHelper - echo $this->Text->excerpt($last_paragraph, 'method', 50, '...'); + echo $this->Text->excerpt($lastParagraph, 'method', 50, '...'); // appelé avec String App::uses('String', 'Utility'); - echo String::excerpt($last_paragraph, 'method', 50, '...'); + echo String::excerpt($lastParagraph, 'method', 50, '...'); Sortie:: diff --git a/fr/core-utility-libraries/time.rst b/fr/core-utility-libraries/time.rst index 117b36043..813592290 100644 --- a/fr/core-utility-libraries/time.rst +++ b/fr/core-utility-libraries/time.rst @@ -62,7 +62,8 @@ Formatage // Appelé avec TimeHelper echo $this->Time->dayAsSql('Aug 22, 2011', 'modified'); - // (modified >= '2011-08-22 00:00:00') AND (modified <= '2011-08-22 23:59:59') + // (modified >= '2011-08-22 00:00:00') AND + // (modified <= '2011-08-22 23:59:59') // Appelé avec CakeTime App::uses('CakeTime', 'Utility'); @@ -86,7 +87,8 @@ Formatage // Appelé avec TimeHelper echo $this->Time->daysAsSql('Aug 22, 2011', 'Aug 25, 2011', 'created'); - // (created >= '2011-08-22 00:00:00') AND (created <= '2011-08-25 23:59:59') + // (created >= '2011-08-22 00:00:00') AND + // (created <= '2011-08-25 23:59:59') // Appelé avec CakeTime App::uses('CakeTime', 'Utility'); @@ -252,25 +254,37 @@ Formatage // Appelé avec TimeHelper echo $this->Time->timeAgoInWords('Aug 22, 2011'); // on 22/8/11 - - echo $this->Time->timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y')); + // on August 22nd, 2011 + echo $this->Time->timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y') + ); // Appelé avec CakeTime App::uses('CakeTime', 'Utility'); echo CakeTime::timeAgoInWords('Aug 22, 2011'); - echo CakeTime::timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y')); + echo CakeTime::timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y') + ); Utilisez l'option 'end' pour déterminer le point de cutoff pour ne plus utiliser de mots; par défaut à '+1 month':: // Appelé avec TimeHelper - echo $this->Time->timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y', 'end' => '+1 year')); + echo $this->Time->timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y', 'end' => '+1 year') + ); // On Nov 10th, 2011 it would display: 2 months, 2 weeks, 6 days ago // Appelé avec CakeTime App::uses('CakeTime', 'Utility'); - echo CakeTime::timeAgoInWords('Aug 22, 2011', array('format' => 'F jS, Y', 'end' => '+1 year')); + echo CakeTime::timeAgoInWords( + 'Aug 22, 2011', + array('format' => 'F jS, Y', 'end' => '+1 year') + ); Utilisez l'option 'accuracy' pour déterminer la précision de la sortie. Vous pouvez utiliser ceci pour limiter la sortie:: diff --git a/fr/models/associations-linking-models-together.rst b/fr/models/associations-linking-models-together.rst index 4b3a7ebf9..3cf9d6c15 100644 --- a/fr/models/associations-linking-models-together.rst +++ b/fr/models/associations-linking-models-together.rst @@ -541,7 +541,10 @@ cela:: public $belongsTo = array( 'Image' => array( 'counterCache' => true, - 'counterScope' => array('ImageComment.active' => 1) // compte seulement si "ImageComment" est active = 1 + // compte seulement si "ImageComment" est active = 1 + 'counterScope' => array( + 'ImageComment.active' => 1 + ) ) ); } diff --git a/fr/models/retrieving-your-data.rst b/fr/models/retrieving-your-data.rst index f23e263e1..8624c42ef 100644 --- a/fr/models/retrieving-your-data.rst +++ b/fr/models/retrieving-your-data.rst @@ -26,15 +26,19 @@ formes de find et il a les clés suivantes disponibles par défaut - qui sont toutes optionnelles:: array( - 'conditions' => array('Model.field' => $cetteValeur), //tableau de conditions + //tableau de conditions + 'conditions' => array('Model.field' => $cetteValeur), 'recursive' => 1, //int - 'fields' => array('Model.champ1', 'DISTINCT Model.champ2'), //tableau de champs nommés - 'order' => array('Model.created', 'Model.champ3 DESC'), //chaîne de caractère ou tableau définissant order + //tableau de champs nommés + 'fields' => array('Model.champ1', 'DISTINCT Model.champ2'), + //chaîne de caractère ou tableau définissant order + 'order' => array('Model.created', 'Model.champ3 DESC'), 'group' => array('Model.champ'), //champs en GROUP BY 'limit' => n, //int 'page' => n, //int 'offset' => n, //int - 'callbacks' => true //autres valeurs possible sont false, 'before', 'after' + //autres valeurs possibles sont false, 'before', 'after' + 'callbacks' => true ) Il est possible également, d'ajouter et d'utiliser d'autres paramètres, dont @@ -384,8 +388,11 @@ Ci-dessous, un exemple simple (code du controller): :: - public function une_function() { - $neighbors = $this->Article->find('neighbors', array('field' => 'id', 'value' => 3)); + public function some_function() { + $neighbors = $this->Article->find( + 'neighbors', + array('field' => 'id', 'value' => 3) + ); } Vous pouvez voir dans cet exemple, les deux éléments requis par le @@ -565,21 +572,23 @@ régler le compte de pagination: class AppModel extends Model { /** - * Retire la clé 'fields' du compte de la requête find personnalisée - * quand c'est un tableau, comme il cassera entièrement l'appel - * Model::_findCount() call + * Removes 'fields' key from count query on custom finds when it is an array, + * as it will completely break the Model::_findCount() call * - * @param string $state Soit "before" soit "after" + * @param string $state Either "before" or "after" * @param array $query * @param array $results - * @return int Le nombre d'enregistrements trouvés, ou false + * @return int The number of records found, or false * @access protected * @see Model::find() */ protected function _findCount($state, $query, $results = array()) { if ($state === 'before') { - if (isset($query['type']) && isset($this->findMethods[$query['type']])) { - $query = $this->{'_find' . ucfirst($query['type'])}('before', $query); + if (isset($query['type']) && + isset($this->findMethods[$query['type']])) { + $query = $this->{ + '_find' . ucfirst($query['type']) + }('before', $query); if (!empty($query['fields']) && is_array($query['fields'])) { if (!preg_match('/^count/i', current($query['fields']))) { unset($query['fields']); @@ -591,6 +600,7 @@ régler le compte de pagination: } } + ?> .. versionchanged:: 2.2 @@ -785,8 +795,12 @@ Si aucun enregistrement correspondant n'est trouvé cela retournera false. $this->Post->id = 22; echo $this->Post->field('name'); // affiche le nom pour la ligne avec l'id 22 - echo $this->Post->field('name', array('created <' => date('Y-m-d H:i:s')), 'created DESC'); // affiche le nom de la dernière instance créée + echo $this->Post->field( + 'name', + array('created <' => date('Y-m-d H:i:s')), + 'created DESC' + ); :php:meth:`Model::read()` ========================= @@ -872,7 +886,9 @@ Faire un NOT IN(...) correspond à trouver les posts dont le titre n'est pas dans le jeu de données passé:: array( - "NOT" => array("Post.titre" => array("Premier post", "Deuxième post", "Troisième post")) + "NOT" => array( + "Post.titre" => array("First post", "Second post", "Third post") + ) ) Ajouter des filtres supplémentaires aux conditions est aussi simple que diff --git a/fr/models/saving-your-data.rst b/fr/models/saving-your-data.rst index d4f0bedeb..9866c30d8 100644 --- a/fr/models/saving-your-data.rst +++ b/fr/models/saving-your-data.rst @@ -316,11 +316,14 @@ Pour sauvegarder les données associées avec ``$options['deep'] = true`` $data = array( array('title' => 'title 1', 'Assoc' => array('field' => 'value')), array('title' => 'title 2'), - ) + ); $data = array( - array('Article' => array('title' => 'title 1'), 'Assoc' => array('field' => 'value')), + array( + 'Article' => array('title' => 'title 1'), + 'Assoc' => array('field' => 'value') + ), array('Article' => array('title' => 'title 2')), - ) + ); $Model->saveMany($data, array('deep' => true)); Gardez à l'esprit que si vous souhaitez mettre à jour un enregistrement au lieu @@ -328,8 +331,10 @@ d'en créer un nouveau, vous devez juste ajouter en index la clé primaire à la ligne de donnée:: array( - array('Article' => array('title' => 'New article')), // Ceci crée une nouvelle ligne - array('Article' => array('id' => 2, 'title' => 'title 2')), // Ceci met à jour une ligne existante + // Ceci crée une nouvelle ligne + array('Article' => array('title' => 'New article')), + // Ceci met à jour une ligne existante + array('Article' => array('id' => 2, 'title' => 'title 2')), ) @@ -423,9 +428,12 @@ ceci:: 'Article' => array('title' => 'My first article'), 'Comment' => array( array('body' => 'Comment 1', 'user_id' => 1), - array('body' => 'Sauvegarder aussi un nouveau user', 'User' => array('first' => 'mad', 'last' => 'coder')) + array( + 'body' => 'Save a new user as well', + 'User' => array('first' => 'mad', 'last' => 'coder') + ), ), - ) + ); Et sauvegarder cette donnée avec:: @@ -587,7 +595,10 @@ validées. Jettez un oeil au code suivant.:: public $uses = array('CourseMembership'); public function index() { - $this->set('courseMembershipsList', $this->CourseMembership->find('all')); + $this->set( + 'courseMembershipsList', + $this->CourseMembership->find('all') + ); } public function add() { @@ -678,9 +689,27 @@ et ensuite les deux meta-champs pour CourseMembership, par ex.:: // View/CourseMemberships/add.ctp - create('CourseMembership'); ?> - Form->input('Student.id', array('type' => 'text', 'label' => 'Student ID', 'default' => 1)); ?> - Form->input('Course.id', array('type' => 'text', 'label' => 'Course ID', 'default' => 1)); ?> + Form->create('CourseMembership'); ?> + Form->input( + 'Student.id', + array( + 'type' => 'text', + 'label' => 'Student ID', + 'default' => 1 + ) + ); + ?> + Form->input( + 'Course.id', + array( + 'type' => 'text', + 'label' => 'Course ID', + 'default' => 1 + ) + ); + ?> Form->input('CourseMembership.days_attended'); ?> Form->input('CourseMembership.grade'); ?> -- GitLab From d2c6ce0fa6c9d10eb180772b79012d13a413641e Mon Sep 17 00:00:00 2001 From: cake17 Date: Mon, 9 Dec 2013 15:01:42 +0100 Subject: [PATCH 120/458] [fr] Follow #928 adding callbacks into saveMany --- fr/models/saving-your-data.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fr/models/saving-your-data.rst b/fr/models/saving-your-data.rst index 9866c30d8..ba1df7015 100644 --- a/fr/models/saving-your-data.rst +++ b/fr/models/saving-your-data.rst @@ -284,6 +284,8 @@ une fois. Les options suivantes peuvent être utilisées: * ``fieldList``: Equivalent au paramètre $fieldList dans Model::save() * ``deep``: (since 2.1) Si défini à true, les données associées sont aussi sauvegardées, regardez aussi saveAssociated. +* ``callbacks`` Défini à false pour désactiver les callbacks. En utilisant + 'before' ou 'after' va activer seulement ces callbacks. * ``counterCache`` (depuis 2.4) Booléen pour contrôler la mise à jour des counter caches (si il y en a). -- GitLab From 868d6125c7187be90f4dd3837cbbdaae7dacfe84 Mon Sep 17 00:00:00 2001 From: Erica Pisani Date: Mon, 9 Dec 2013 18:00:09 -0500 Subject: [PATCH 121/458] Fix code overflows in the Console and Shells section. --- en/console-and-shells.rst | 21 +++++++++++++-------- en/console-and-shells/cron-jobs.rst | 5 +++-- en/core-libraries/components/pagination.rst | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/en/console-and-shells.rst b/en/console-and-shells.rst index cf2416d95..e99b21076 100644 --- a/en/console-and-shells.rst +++ b/en/console-and-shells.rst @@ -679,9 +679,9 @@ make building subcommand parsers easier, as everything is an array:: 'help' => __('Check the permissions between an ACO and ARO.'), 'parser' => array( 'description' => array( - __("Use this command to grant ACL permissions. Once executed, the ARO "), - __("specified (and its children, if any) will have ALLOW access to the"), - __("specified ACO action (and the ACO's children, if any).") + __("Use this command to grant ACL permissions. Once executed, the "), + __("ARO specified (and its children, if any) will have ALLOW access "), + __("to the specified ACO action (and the ACO's children, if any).") ), 'arguments' => array( 'aro' => array('help' => __('ARO to check.'), 'required' => true), @@ -701,9 +701,9 @@ buildFromArray on its own, to build an option parser:: public function getOptionParser() { return ConsoleOptionParser::buildFromArray(array( 'description' => array( - __("Use this command to grant ACL permissions. Once executed, the ARO "), - __("specified (and its children, if any) will have ALLOW access to the"), - __("specified ACO action (and the ACO's children, if any).") + __("Use this command to grant ACL permissions. Once executed, the "), + __("ARO specified (and its children, if any) will have ALLOW access "), + __("to the specified ACO action (and the ACO's children, if any).") ), 'arguments' => array( 'aro' => array('help' => __('ARO to check.'), 'required' => true), @@ -753,7 +753,10 @@ would look like: bake fixture Generate fixtures for use with the test suite. You can use `bake fixture all` to bake all fixtures. - Omitting all arguments and options will enter into an interactive mode. + + Omitting all arguments and options will enter into an interactive + mode. +
    elements + + Creates a row of table header cells to be placed inside of + tags.:: + + echo $this->Html->tableHeaders(array('Date', 'Title', 'Active')); + + Output: + + .. code-block:: html + + + + + + + + :: + + echo $this->Html->tableHeaders( + array('Date','Title','Active'), + array('class' => 'status'), + array('class' => 'product_table') + ); + + Output: + + .. code-block:: html + + + + + + + + .. versionchanged:: 2.2 + ``tableHeaders()`` now accepts attributes per cell, see below. + + As of 2.2 you can set attributes per column, these are used instead of the + defaults provided in the ``$thOptions``:: + + echo $this->Html->tableHeaders(array( + 'id', + array('Name' => array('class' => 'highlight')), + array('Date' => array('class' => 'sortable')) + )); + + Output: + + .. code-block:: html + + + + + + + +.. php:method:: tableCells(array $data, array $oddTrOptions = null, array $evenTrOptions = null, $useCount = false, $continueOddEven = true) + + :param array $data: A two dimensional array with data for the rows. + :param array $oddTrOptions: An array of :term:`html attributes` for the odd 's. + :param array $evenTrOptions: An array of :term:`html attributes` for the even 's. + :param boolean $useCount: Adds class "column-$i". + :param boolean $continueOddEven: If false, will use a non-static $count variable, + so that the odd/even count is reset to zero just for that call. + + Creates table cells, in rows, assigning attributes differently + for odd- and even-numbered rows. Wrap a single table cell within an + array() for specific + + + + :: + + echo $this->Html->tableCells(array( + array( + 'Jul 7th, 2007', + array( + 'Best Brownies', + array('class' => 'highlight') + ), + 'Yes'), + array('Jun 21st, 2007', 'Smart Cookies', 'Yes'), + array( + 'Aug 1st, 2006', + 'Anti-Java Cake', + array('No', array('id' => 'special')) + ), + )); + + Output: + + .. code-block:: html + + + + + + + + + + + + + + + + + + :: + + echo $this->Html->tableCells( + array( + array('Red', 'Apple'), + array('Orange', 'Orange'), + array('Yellow', 'Banana'), + ), + array('class' => 'darker') + ); + + Output: + + .. code-block:: html + + + + + +.. php:method:: url(mixed $url = NULL, boolean $full = false) + + :param mixed $url: A :term:`routing array`. + :param mixed $full: Either a boolean to indicate whether or not the base path should + be included on an array of options for :php:meth:`Router::url()` + + Returns a URL pointing to a combination of controller and action. + If $url is empty, it returns the REQUEST\_URI, otherwise it + generates the URL for the controller and action combo. If full is + true, the full base URL will be prepended to the result:: + + echo $this->Html->url(array( + "controller" => "posts", + "action" => "view", + "bar" + )); + + // Output + /posts/view/bar + + Here are a few more usage examples: + + URL with named parameters:: + + echo $this->Html->url(array( + "controller" => "posts", + "action" => "view", + "foo" => "bar" + )); + + // Output + /posts/view/foo:bar + + URL with extension:: + + echo $this->Html->url(array( + "controller" => "posts", + "action" => "list", + "ext" => "rss" + )); + + // Output + /posts/list.rss + + URL (starting with '/') with the full base URL prepended:: + + echo $this->Html->url('/posts', true); + + // Output + http://somedomain.com/posts + + URL with GET params and named anchor:: + + echo $this->Html->url(array( + "controller" => "posts", + "action" => "search", + "?" => array("foo" => "bar"), + "#" => "first" + )); + + // Output + /posts/search?foo=bar#first + + For further information check + `Router::url `_ + in the API. + +.. php:method:: useTag(string $tag) + + Returns a formatted existent block of ``$tag``:: + + $this->Html->useTag( + 'form', + 'http://example.com', + array('method' => 'post', 'class' => 'myform') + ); + + Output: + + .. code-block:: html + + + +Changing the tags output by HtmlHelper +====================================== + +.. php:method:: loadConfig(mixed $configFile, string $path = null) + + The built-in tag sets for :php:class:`HtmlHelper` are XHTML compliant, + however if you need to generate HTML for HTML5 you will need to + create and load a new tags config file containing the tags you'd + like to use. To change the tags used create ``app/Config/html5_tags.php`` + containing:: + + $config = array('tags' => array( + 'css' => '', + 'style' => '%s', + 'charset' => '', + 'javascriptblock' => '%s', + 'javascriptstart' => '', + // ... + )); + + You can then load this tag set by calling + ``$this->Html->loadConfig('html5_tags');`` + +Creating breadcrumb trails with HtmlHelper +========================================== + +.. php:method:: getCrumbs(string $separator = '»', string $startText = false) + + CakePHP has the built-in ability to automatically create a + breadcrumb trail in your app. To set this up, first add something + similar to the following in your layout template:: + + echo $this->Html->getCrumbs(' > ', 'Home'); + + The ``$startText`` option can also accept an array. This gives more control + over the generated first link:: + + echo $this->Html->getCrumbs(' > ', array( + 'text' => $this->Html->image('home.png'), + 'url' => array('controller' => 'pages', 'action' => 'display', 'home'), + 'escape' => false + )); + + Any keys that are not ``text`` or ``url`` will be passed to + :php:meth:`~HtmlHelper::link()` as the ``$options`` parameter. + + .. versionchanged:: 2.1 + The ``$startText`` parameter now accepts an array. + +.. php:method:: addCrumb(string $name, string $link = null, mixed $options = null) + + Now, in your view you'll want to add the following to start the + breadcrumb trails on each of the pages:: + + $this->Html->addCrumb('Users', '/users'); + $this->Html->addCrumb('Add User', '/users/add'); + + This will add the output of "**Home > Users > Add User**" in your + layout where getCrumbs was added. + +.. php:method:: getCrumbList(array $options = array(), mixed $startText) + + :param array $options: An array of :term:`html attributes` for the + containing ``
      `` element. Can also contain the 'separator', + 'firstClass' and 'lastClass' options. + :param string|array $startText: The text or element that precedes the ul. + + Returns breadcrumbs as a (x)html list. + + This method uses :php:meth:`HtmlHelper::tag()` to generate list and its + elements. Works similar to :php:meth:`~HtmlHelper::getCrumbs()`, so it uses + options which every crumb was added with. You can use the ``$startText`` + parameter to provide the first breadcrumb link/text. This is useful when + you always want to include a root link. This option works the same as the + ``$startText`` option for :php:meth:`~HtmlHelper::getCrumbs()`. + + .. versionchanged:: 2.1 + The ``$startText`` parameter was added. + + .. versionchanged:: 2.3 + The 'separator', 'firstClass' and 'lastClass' options were added. + + +.. meta:: + :title lang=en: HtmlHelper + :description lang=en: The role of the HtmlHelper in CakePHP is to make HTML-related options easier, faster, and more resilient to change. + :keywords lang=en: html helper,cakephp css,cakephp script,content type,html image,html link,html tag,script block,script start,html url,cakephp style,cakephp crumbs diff --git a/sr/core-libraries/helpers/js.rst b/sr/core-libraries/helpers/js.rst new file mode 100644 index 000000000..b7dd2d578 --- /dev/null +++ b/sr/core-libraries/helpers/js.rst @@ -0,0 +1,881 @@ +JsHelper +######## + +.. php:class:: JsHelper(View $view, array $settings = array()) + +Since the beginning CakePHP's support for JavaScript has been with +Prototype/Scriptaculous. While we still think these are +excellent JavaScript libraries, the community has been asking for +support for other libraries. Rather than drop Prototype in favour +of another JavaScript library. We created an Adapter based helper, +and included 3 of the most requested libraries. +Prototype/Scriptaculous, Mootools/Mootools-more, and jQuery/jQuery +UI. While the API is not as expansive as the previous +AjaxHelper we feel that the adapter based solution allows for a +more extensible solution giving developers the power and +flexibility they need to address their specific application needs. + +JavaScript Engines form the backbone of the new JsHelper. A +JavaScript engine translates an abstract JavaScript element into +concrete JavaScript code specific to the JavaScript library being +used. In addition they create an extensible system for others to +use. + + +Using a specific JavaScript engine +================================== + +First of all download your preferred JavaScript library and place +it in ``app/webroot/js`` + +Then you must include the library in your page. To include it in +all pages, add this line to the section of +``app/View/Layouts/default.ctp`` (copy this file from +``lib/Cake/View/Layouts/default.ctp`` if you have not created your +own):: + + echo $this->Html->script('jquery'); // Include jQuery library + +Replace ``jquery`` with the name of your library file (.js will be +added to the name). + +By default scripts are cached, and you must explicitly print out +the cache. To do this at the end of each page, include this line +just before the ending ```` tag:: + + echo $this->Js->writeBuffer(); // Write cached scripts + +.. warning:: + + You must include the library in your page and print the cache for + the helper to function. + +JavaScript engine selection is declared when you include the helper +in your controller:: + + public $helpers = array('Js' => array('Jquery')); + +The above would use the Jquery Engine in the instances of JsHelper +in your views. If you do not declare a specific engine, the jQuery +engine will be used as the default. As mentioned before, there are +three engines implemented in the core, but we encourage the +community to expand the library compatibility. + +Using jQuery with other libraries +--------------------------------- + +The jQuery library, and virtually all of its plugins are +constrained within the jQuery namespace. As a general rule, +"global" objects are stored inside the jQuery namespace as well, so +you shouldn't get a clash between jQuery and any other library +(like Prototype, MooTools, or YUI). + +That said, there is one caveat: +**By default, jQuery uses "$" as a shortcut for "jQuery"** + +To override the "$" shortcut, use the jQueryObject variable:: + + $this->Js->JqueryEngine->jQueryObject = '$j'; + echo $this->Html->scriptBlock( + 'var $j = jQuery.noConflict();', + array('inline' => false) + ); + // Tell jQuery to go into noconflict mode + +Using the JsHelper inside customHelpers +--------------------------------------- + +Declare the JsHelper in the ``$helpers`` array in your +customHelper:: + + public $helpers = array('Js'); + +.. note:: + + It is not possible to declare a JavaScript engine inside a custom + helper. Doing that will have no effect. + +If you are willing to use an other JavaScript engine than the +default, do the helper setup in your controller as follows:: + + public $helpers = array( + 'Js' => array('Prototype'), + 'CustomHelper' + ); + + +.. warning:: + + Be sure to declare the JsHelper and its engine **on top** of the + ``$helpers`` array in your controller. + +The selected JavaScript engine may disappear (replaced by the +default) from the JsHelper object in your helper, if you miss to do +so and you will get code that does not fit your JavaScript +library. + +Creating a JavaScript Engine +============================ + +JavaScript engine helpers follow normal helper conventions, with a +few additional restrictions. They must have the ``Engine`` suffix. +``DojoHelper`` is not good, ``DojoEngineHelper`` is correct. +Furthermore, they should extend ``JsBaseEngineHelper`` in order to +leverage the most of the new API. + +JavaScript engine usage +======================= + +The ``JsHelper`` provides a few methods, and acts as a facade for +the the Engine helper. You should not directly access the Engine +helper except in rare occasions. Using the facade features of the +``JsHelper`` allows you to leverage the buffering and method +chaining features built-in; (method chaining only works in PHP5). + +The ``JsHelper`` by default buffers almost all script code +generated, allowing you to collect scripts throughout the view, +elements and layout, and output it in one place. Outputting +buffered scripts is done with ``$this->Js->writeBuffer();`` this +will return the buffer contents in a script tag. You can disable +buffering wholesale with the ``$bufferScripts`` property or setting +``buffer => false`` in methods taking ``$options``. + +Since most methods in JavaScript begin with a selection of elements +in the DOM, ``$this->Js->get()`` returns a $this, allowing you to +chain the methods using the selection. Method chaining allows you +to write shorter, more expressive code:: + + $this->Js->get('#foo')->event('click', $eventCode); + +Is an example of method chaining. Method chaining is not possible +in PHP4 and the above sample would be written like:: + + $this->Js->get('#foo'); + $this->Js->event('click', $eventCode); + +Common options +-------------- + +In attempts to simplify development where JavaScript libraries can change, +a common set of options is supported by ``JsHelper``, these common +options will be mapped out to the library specific options +internally. If you are not planning on switching JavaScript +libraries, each library also supports all of its native callbacks +and options. + +Callback wrapping +----------------- + +By default all callback options are wrapped with the an anonymous +function with the correct arguments. You can disable this behavior +by supplying the ``wrapCallbacks = false`` in your options array. + +Working with buffered scripts +----------------------------- + +One drawback to previous implementation of 'Ajax' type features was +the scattering of script tags throughout your document, and the +inability to buffer scripts added by elements in the layout. The +new JsHelper if used correctly avoids both of those issues. It is +recommended that you place ``$this->Js->writeBuffer()`` at the +bottom of your layout file above the ```` tag. This will +allow all scripts generated in layout elements to be output in one +place. It should be noted that buffered scripts are handled +separately from included script files. + +.. php:method:: writeBuffer($options = array()) + +Writes all JavaScript generated so far to a code block or caches +them to a file and returns a linked script. + +**Options** + +- ``inline`` - Set to true to have scripts output as a script + block inline if ``cache`` is also true, a script link tag will be + generated. (default true) +- ``cache`` - Set to true to have scripts cached to a file and + linked in (default false) +- ``clear`` - Set to false to prevent script cache from being + cleared (default true) +- ``onDomReady`` - wrap cached scripts in domready event (default + true) +- ``safe`` - if an inline block is generated should it be wrapped + in (default true) + +Creating a cache file with ``writeBuffer()`` requires that +``webroot/js`` be world writable and allows a browser to cache +generated script resources for any page. + +.. php:method:: buffer($content) + +Add ``$content`` to the internal script buffer. + +.. php:method:: getBuffer($clear = true) + +Get the contents of the current buffer. Pass in false to not clear +the buffer at the same time. + +**Buffering methods that are not normally buffered** + +Some methods in the helpers are buffered by default. The engines +buffer the following methods by default: + +- event +- sortable +- drag +- drop +- slider + +Additionally you can force any other method in JsHelper to use the +buffering. By appending an boolean to the end of the arguments you +can force other methods to go into the buffer. For example the +``each()`` method does not normally buffer:: + + $this->Js->each('alert("whoa!");', true); + +The above would force the ``each()`` method to use the buffer. +Conversely if you want a method that does buffer to not buffer, you +can pass a ``false`` in as the last argument:: + + $this->Js->event('click', 'alert("whoa!");', false); + +This would force the event function which normally buffers to +return its result. + +Other Methods +============= + +The core JavaScript Engines provide the same feature set across all +libraries, there is also a subset of common options that are +translated into library specific options. This is done to provide +end developers with as unified an API as possible. The following +list of methods are supported by all the Engines included in the +CakePHP core. Whenever you see separate lists for ``Options`` and +``Event Options`` both sets of parameters are supplied in the +``$options`` array for the method. + +.. php:method:: object($data, $options = array()) + + Serializes ``$data`` into JSON. This method is a proxy for ``json_encode()`` + with a few extra features added via the ``$options`` parameter. + + **Options:** + + - ``prefix`` - String prepended to the returned data. + - ``postfix`` - String appended to the returned data. + + **Example Use**:: + + $json = $this->Js->object($data); + +.. php:method:: sortable($options = array()) + + Sortable generates a JavaScript snippet to make a set of elements + (usually a list) drag and drop sortable. + + The normalized options are: + + **Options** + + - ``containment`` - Container for move action + - ``handle`` - Selector to handle element. Only this element will + start sort action. + - ``revert`` - Whether or not to use an effect to move sortable + into final position. + - ``opacity`` - Opacity of the placeholder + - ``distance`` - Distance a sortable must be dragged before + sorting starts. + + **Event Options** + + - ``start`` - Event fired when sorting starts + - ``sort`` - Event fired during sorting + - ``complete`` - Event fired when sorting completes. + + Other options are supported by each JavaScript library, and you + should check the documentation for your JavaScript library for more + detailed information on its options and parameters. + + **Example Use**:: + + $this->Js->get('#my-list'); + $this->Js->sortable(array( + 'distance' => 5, + 'containment' => 'parent', + 'start' => 'onStart', + 'complete' => 'onStop', + 'sort' => 'onSort', + 'wrapCallbacks' => false + )); + + Assuming you were using the jQuery engine, you would get the + following code in your generated JavaScript block + + .. code-block:: javascript + + $("#myList").sortable({ + containment:"parent", + distance:5, + sort:onSort, + start:onStart, + stop:onStop + }); + +.. php:method:: request($url, $options = array()) + + Generate a JavaScript snippet to create an ``XmlHttpRequest`` or + 'AJAX' request. + + **Event Options** + + - ``complete`` - Callback to fire on complete. + - ``success`` - Callback to fire on success. + - ``before`` - Callback to fire on request initialization. + - ``error`` - Callback to fire on request failure. + + **Options** + + - ``method`` - The method to make the request with defaults to GET + in more libraries + - ``async`` - Whether or not you want an asynchronous request. + - ``data`` - Additional data to send. + - ``update`` - Dom id to update with the content of the response. + - ``type`` - Data type for response. 'json' and 'html' are + supported. Default is html for most libraries. + - ``evalScripts`` - Whether or not
    DateTitleActive
    DateTitleActive
    idNameDate
    -attributes. :: + + echo $this->Html->tableCells(array( + array('Jul 7th, 2007', 'Best Brownies', 'Yes'), + array('Jun 21st, 2007', 'Smart Cookies', 'Yes'), + array('Aug 1st, 2006', 'Anti-Java Cake', 'No'), + )); + + Output: + + .. code-block:: html + +
    Jul 7th, 2007Best BrowniesYes
    Jun 21st, 2007Smart CookiesYes
    Aug 1st, 2006Anti-Java CakeNo
    + Jul 7th, 2007 + + Best Brownies + + Yes +
    + Jun 21st, 2007 + + Smart Cookies + + Yes +
    + Aug 1st, 2006 + + Anti-Java Cake + + No +
    RedApple
    OrangeOrange
    YellowBanana