Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge remote-tracking branch 'upstream/master'

  • Loading branch information...
commit 6b3379fb769e7da06f07db414b9e4ae7ced3c711 2 parents 5bf528a + 049235d
Kevin Masaryk kmasaryk authored
2  en/appendices/new-features-in-cakephp-2-1.rst
View
@@ -193,7 +193,7 @@ it in ``engine`` key::
// Utility/MyAwesomeStringClass.php
class MyAwesomeStringClass extends String {
// my truncate is better than yours
- public function static truncate($text, $length = 100, $options = array()) {
+ public static function truncate($text, $length = 100, $options = array()) {
return null;
}
}
194 en/console-and-shells/schema-management-and-migrations.rst
View
@@ -100,6 +100,200 @@ correct datasource, lest they fallback to their default datasources::
// Do things with articles.
}
+Writing CakePHP Schema by Hand
+==============================
+
+The CakeSchema class is the base class for all database schemas. Each schema
+class is able to generate a set of tables. The schema shell console class
+``SchemaShell`` in the ``lib/Cake/Console/Command`` directory interprets command
+line, and base schema class can read from the database, or generate the database
+table.
+
+CakeSchema can now locate, read and write schema files to plugins. The
+SchemaShell also exposes this functionality.
+
+CakeSchema also supports ``tableParameters``. Table Parameters are non column
+specific table information such as collation, charset, comments, and table
+engine type. Each Dbo implements the tableParameters they support.
+
+Example
+-------
+
+Here is a full example from the acl class ::
+
+ /**
+ * ACO - Access Control Object - Something that is wanted
+ */
+ public $acos = array(
+ 'id' => array(
+ 'type' => 'integer',
+ 'null' => false,
+ 'default' => null,
+ 'length' => 10,
+ 'key' => 'primary'
+ ),
+ 'parent_id' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'model' => array('type' => 'string', 'null' => true),
+ 'foreign_key' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'alias' => array('type' => 'string', 'null' => true),
+ 'lft' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'rght' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1))
+ );
+
+
+Columns
+-------
+Each column is encoded as a key value associative array.
+The field name is the key of the field, the value is another array with some of
+the following attributes.
+
+Example column ::
+
+ 'id' => array(
+ 'type' => 'integer',
+ 'null' => false,
+ 'default' => null,
+ 'length' => 10,
+ 'key' => 'primary'
+ ),
+
+key
+ The ``primary`` key defines the primary key index.
+
+null
+ Is the field nullable?
+
+default
+ What is the default value of the field?
+
+limit
+ The limit of the type of the field.
+
+length
+ What is the length of the field?
+
+type
+ One of the following types
+
+ * integer
+ * date
+ * time
+ * datetime
+ * timestamp
+ * boolean
+ * biginteger
+ * float
+ * string
+ * text
+ * binary
+
+
+Table key `indexes`
+===================
+The key name `indexes` is put in the table array instead of a field name.
+
+column
+ This is either a single column name or an array of columns.
+
+ e.g. Single ::
+
+ 'indexes' => array(
+ 'PRIMARY' => array(
+ 'column' => 'id',
+ 'unique' => 1
+ )
+ )
+
+ e.g. Multiple ::
+
+ 'indexes' => array(
+ 'AB_KEY' => array(
+ 'column' => array(
+ 'a_id',
+ 'b_id'),
+ 'unique' => 1
+ )
+ )
+
+
+unique
+ If the index is unique, set this to 1, otherwise 0.
+
+
+Table key `tableParameters`
+===========================
+
+tableParameters are supported only in MySQL.
+
+You can use tableParameters to set a variety of MySQL specific settings.
+
+
+- ``engine`` Control the storage engine used for your tables.
+- ``charset`` Control the character set used for tables.
+- ``encoding`` Control the encoding used for tables.
+
+In addition to tableParameters MySQL dbo's implement
+``fieldParameters``. ``fieldParameters`` allow you to control MySQL
+specific settings per column.
+
+
+- ``charset`` Set the character set used for a column
+- ``encoding`` Set the encoding used for a column
+
+See below for examples on how to use table and field parameters in
+your schema files.
+
+**Using tableParameters in schema files**
+
+You use ``tableParameters`` just as you would any other key in a
+schema file. Much like ``indexes``::
+
+ var $comments => array(
+ 'id' => array(
+ 'type' => 'integer',
+ 'null' => false,
+ 'default' => 0,
+ 'key' => 'primary'
+ ),
+ 'post_id' => array('type' => 'integer', 'null' => false, 'default' => 0),
+ 'comment' => array('type' => 'text'),
+ 'indexes' => array(
+ 'PRIMARY' => array('column' => 'id', 'unique' => true),
+ 'post_id' => array('column' => 'post_id'),
+ ),
+ 'tableParameters' => array(
+ 'engine' => 'InnoDB',
+ 'charset' => 'latin1',
+ 'collate' => 'latin1_general_ci'
+ )
+ );
+
+is an example of a table using ``tableParameters`` to set some
+database specific settings. If you use a schema file that contains
+options and features your database does not implement, those
+options will be ignored.
+
Migrations with CakePHP schema shell
====================================
2  en/core-libraries/components/security-component.rst
View
@@ -144,7 +144,7 @@ Form tampering prevention
=========================
By default ``SecurityComponent`` prevents users from tampering with forms. It
-does this by working with FormHelper and tracking which files are in a form. It
+does this by working with FormHelper and tracking which fields are in a form. It
also keeps track of the values of hidden input elements. All of this data is
combined and turned into a hash. When a form is submitted, SecurityComponent
will use the POST data to build the same structure and compare the hash.
3  en/core-utility-libraries/hash.rst
View
@@ -625,7 +625,8 @@ Attribute Matching Types
.. php:staticmethod:: apply(array $data, $path, $function)
- Apply a callback to a set of extracted values using $function. The function will get the extracted values as the first argument.
+ Apply a callback to a set of extracted values using $function. The function
+ will get the extracted values as the first argument.
.. php:staticmethod:: sort(array $data, $path, $dir, $type = 'regular')
1  en/models/retrieving-your-data.rst
View
@@ -40,6 +40,7 @@ It's also possible to add and use other parameters, as is made use
of by some find types, behaviors and of course possibly with your
own model methods.
+If your find operation fails to match any records you will get an empty array.
.. _model-find-first:
2  en/tutorials-and-examples/blog-auth-example/auth.rst
View
@@ -366,7 +366,7 @@ and add the following content::
// The owner of a post can edit and delete it
if (in_array($this->action, array('edit', 'delete'))) {
- $postId = $this->request->params['pass'][0];
+ $postId = (int) $this->request->params['pass'][0];
if ($this->Post->isOwnedBy($postId, $user['id'])) {
return true;
}
2  en/views/themes.rst
View
@@ -79,7 +79,7 @@ directories in ``app/webroot`` with paths matching those used by CakePHP.
- ``app/Plugin/DebugKit/webroot/js/my_file.js`` becomes
``app/webroot/debug_kit/js/my_file.js``
- ``app/View/Themed/Navy/webroot/css/navy.css`` becomes
- ``app/webroot/theme/Navy/css/navy.css``
+ ``app/webroot/themed/Navy/css/navy.css``
.. meta::
2  fr/appendices/new-features-in-cakephp-2-1.rst
View
@@ -213,7 +213,7 @@ classe dans votre dossier ``APP/Utility``, par exemple:
// Utility/MyAwesomeStringClass.php
class MyAwesomeStringClass extends String {
// mon truchement est meilleur que les votres
- public function static truncate($text, $length = 100, $options = array()) {
+ public static function truncate($text, $length = 100, $options = array()) {
return null;
}
}
206 fr/console-and-shells/schema-management-and-migrations.rst
View
@@ -1,8 +1,8 @@
Gestion des Schémas et migrations
#################################
-Le shell Schema fournit une fonctionnalité pour créer des objets, des dumps sql
-et pour créer et restaurer des vues instantanées de votre base de données.
+Le shell Schema permet de créer des objets, des dumps sql et de créer et
+restaurer des vues instantanées de votre base de données.
Générer et utiliser les fichiers Schema
=======================================
@@ -93,8 +93,8 @@ peut être désactivé en configurant
}
Si vous utilisez les models dans vos callbacks, assurez-vous de les initialiser
-avec la bonne source de données, pour ne pas qu'ils fallback sur leurs sources
-de données par défaut::
+avec la bonne source de données, pour ne pas qu'ils s'exécutent sur leurs
+sources de données par défaut::
public function before($event = array()) {
$articles = ClassRegistry::init('Articles', array(
@@ -103,6 +103,204 @@ de données par défaut::
// Do things with articles.
}
+Ecrire un Schema CakePHP à la main
+==================================
+
+La classe CakeSchema est la classe de base pour tous les schémas de base de
+données. Chaque classe schema est capable de générer un ensemble de tables. La
+classe de console shell schema ``SchemaShell`` dans le repertoire
+``lib/Cake/Console/Command`` interprète la ligne de commande, et la classe
+schema de base peut lire la base de données, ou générer la table de la base de
+données.
+
+CakeSchema peut maintenant localiser, lire et écrire les fichiers schema pour
+les plugins. SchemaShell permet aussi cette fonctionnalité.
+
+CakeSchema supporte aussi ``tableParameters``. Les paramètres de Table sont
+les informations non spécifiques aux colonnes de la table comme collation,
+charset, comments, et le le type de moteur de la table. Chaque Dbo implémente
+le tableParameters qu'ils supportent.
+
+Exemple
+-------
+
+Voici un exemple complet à partir de la classe acl ::
+
+ /**
+ * ACO - Access Control Object - Quelque chose qui est souhaité
+ */
+ public $acos = array(
+ 'id' => array(
+ 'type' => 'integer',
+ 'null' => false,
+ 'default' => null,
+ 'length' => 10,
+ 'key' => 'primary'
+ ),
+ 'parent_id' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'model' => array('type' => 'string', 'null' => true),
+ 'foreign_key' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'alias' => array('type' => 'string', 'null' => true),
+ 'lft' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'rght' => array(
+ 'type' => 'integer',
+ 'null' => true,
+ 'default' => null,
+ 'length' => 10
+ ),
+ 'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1))
+ );
+
+
+Colonnes
+--------
+Chaque colonne est encodée comme un tableau associatif avec clé et valeur.
+Le nom du champ est la clé du champ, la valeur est un autre tableau avec
+certains des attributs suivants.
+
+Exemple de colonne ::
+
+ 'id' => array(
+ 'type' => 'integer',
+ 'null' => false,
+ 'default' => null,
+ 'length' => 10,
+ 'key' => 'primary'
+ ),
+
+key
+ La clé ``primary`` définit l'index de clé primaire.
+
+null
+ Est-ce que le champ peut être null?
+
+default
+ Quel est la valeur par défaut du champ?
+
+limit
+ La limit du type de champ.
+
+length
+ Quelle est la longueur du champ?
+
+type
+ Un des types suivants
+
+ * integer
+ * date
+ * time
+ * datetime
+ * timestamp
+ * boolean
+ * biginteger
+ * float
+ * string
+ * text
+ * binary
+
+
+La clé de Table `indexes`
+=========================
+Le nom de clé `indexes` est mise dans le tableau de table plutôt que dans celui
+d'un nom de champ.
+
+column
+ C'est soit un nom de colonne unique, soit un tableau de colonnes.
+
+ par exemple Unique ::
+
+ 'indexes' => array(
+ 'PRIMARY' => array(
+ 'column' => 'id',
+ 'unique' => 1
+ )
+ )
+
+ par exemple Multiple ::
+
+ 'indexes' => array(
+ 'AB_KEY' => array(
+ 'column' => array(
+ 'a_id',
+ 'b_id'),
+ 'unique' => 1
+ )
+ )
+
+
+unique
+ Si l'index est unique, définissez ceci à 1, sinon à 0.
+
+
+La clé de Table `tableParameters`
+=================================
+
+tableParameters sont supportés uniquement dans MySQL.
+
+Vous pouvez utiliser tableParameters pour définir un ensemble de paramètres
+spécifiques à MySQL.
+
+
+- ``engine`` Controle le moteur de stockage utilisé pour vos tables.
+- ``charset`` Controle le character set utilisé pour les tables.
+- ``encoding`` Controle l'encodage utilisé pour les tables.
+
+En plus du tableParameters de MySQL, dbo's implémente ``fieldParameters``.
+``fieldParameters`` vous permet de contrôler les paramètres spécifiques à MySQL
+par colonne.
+
+
+- ``charset`` Définit le character set utilisé pour une colonne
+- ``encoding`` Définit l'encodage utilisé pour une colonne
+
+Regardez ci-dessous pour des exemples sur la façon d'utiliser les paramètres
+de table et de champ dans vos fichiers de schema.
+
+**Utilisation de tableParameters dans les fichiers de schema**
+
+Vous utilisez ``tableParameters`` comme vous le feriez avec toute autre clé dans
+un fichier de schema. Un peu comme les ``indexes``::
+
+ var $comments => array(
+ 'id' => array(
+ 'type' => 'integer',
+ 'null' => false,
+ 'default' => 0,
+ 'key' => 'primary'
+ ),
+ 'post_id' => array('type' => 'integer', 'null' => false, 'default' => 0),
+ 'comment' => array('type' => 'text'),
+ 'indexes' => array(
+ 'PRIMARY' => array('column' => 'id', 'unique' => true),
+ 'post_id' => array('column' => 'post_id'),
+ ),
+ 'tableParameters' => array(
+ 'engine' => 'InnoDB',
+ 'charset' => 'latin1',
+ 'collate' => 'latin1_general_ci'
+ )
+ );
+
+est un exemple d'une table utilisant ``tableParameters`` pour définir quelques
+parmaètres spécifiques de base de données. Si vous utilisez un fichier de
+schema qui contient des options et des fonctionnalités que votre base de données
+n'intègre pas, ces options seront ignorées.
+
Migrations avec le shell schema de CakePHP
==========================================
2  fr/core-libraries/components/security-component.rst
View
@@ -153,7 +153,7 @@ Prévention de la falsification de formulaire
Par défaut le component Security ``SecurityComponent`` prévient les
utilisateurs de la falsification de formulaire. Il fait cela en travaillant
-avec le Helper Form et en traquant quels fichiers sont dans un formulaire. il
+avec le Helper Form et en traquant quels champs sont dans un formulaire. il
assure le suivi des éléments d'entrée cachés. Toutes ces données sont combinées
et hachées. Quand un formulaire est soumis, le component de sécurité utilisera
les données POSTé pour construire la même structure et comparer le hachage.
9 fr/models/retrieving-your-data.rst
View
@@ -1,8 +1,8 @@
Récupérer vos données
#####################
-Comme mentionné avant, un des rôles de la couche Model est d'obtenir les
-données à partir de multiples types de stockage. La classe Model de CakePHP
+Comme mentionné précédemment, un des rôles de la couche Model est d'obtenir les
+données à partir de plusieurs types de stockage. La classe Model de CakePHP
est livrée avec quelques fonctions qui vous aident à chercher ces données, à
les trier, les paginer, et les filtrer. La fonction la plus courante que
vous utiliserez dans les models est :php:meth:`Model::find()`.
@@ -41,10 +41,13 @@ toutes optionnelles::
'callbacks' => true
)
-Il est possible également, d'ajouter et d'utiliser d'autres paramètres, dont
+Il est également possible d'ajouter et d'utiliser d'autres paramètres, dont
il est fait usage dans quelques types de find, dans des behaviors
(comportements) et, bien sûr, dans vos propres méthodes de model.
+Si votre opération de find n'arrive pas à récupérer des données, vous aurez
+un tableau vide.
+
.. _model-find-first:
find('first')
2  fr/tutorials-and-examples/blog-auth-example/auth.rst
View
@@ -361,7 +361,7 @@ l'édition des posts si l'auteur ne correspond pas. Ouvrez le fichier
// Le propriétaire du post peut l'éditer et le supprimer
if (in_array($this->action, array('edit', 'delete'))) {
- $postId = $this->request->params['pass'][0];
+ $postId = (int) $this->request->params['pass'][0];
if ($this->Post->isOwnedBy($postId, $user['id'])) {
return true;
}
2  fr/views/themes.rst
View
@@ -87,7 +87,7 @@ cakephp.
- ``app/Plugin/DebugKit/webroot/js/my_file.js`` devient
``app/webroot/DebugKit/js/my_file.js``.
- ``app/View/Themed/Navy/webroot/css/navy.css`` devient
- ``app/webroot/theme/Navy/css/navy.css``.
+ ``app/webroot/themed/Navy/css/navy.css``.
.. meta::
2  ja/tutorials-and-examples/blog-auth-example/auth.rst
View
@@ -318,7 +318,7 @@ PostsControllerに追加しようとしているルールは投稿の作成を
// 投稿のオーナーは編集や削除ができる
if (in_array($this->action, array('edit', 'delete'))) {
- $postId = $this->request->params['pass'][0];
+ $postId = (int) $this->request->params['pass'][0];
if ($this->Post->isOwnedBy($postId, $user['id'])) {
return true;
}
2  ja/views/themes.rst
View
@@ -71,7 +71,7 @@ CakePHPによって使われている ``app/webroot`` のパスに一致する
- ``app/Plugin/DebugKit/webroot/js/my_file.js``
``app/webroot/debug_kit/js/my_file.js`` になります。
- ``app/View/Themed/Navy/webroot/css/navy.css``
- ``app/webroot/theme/Navy/css/navy.css`` になります。
+ ``app/webroot/themed/Navy/css/navy.css`` になります。
.. meta::
2  pt/tutorials-and-examples/blog-auth-example/auth.rst
View
@@ -334,7 +334,7 @@ e adicione o seguinte conteúdo::
return true;
}
if (in_array($this->action, array('edit', 'delete'))) {
- $postId = $this->request->params['pass'][0];
+ $postId = (int) $this->request->params['pass'][0];
return $this->Post->isOwnedBy($postId, $user['id']);
}
}
Please sign in to comment.
Something went wrong with that request. Please try again.