diff --git a/Makefile b/Makefile index f73e8bdd73..9b092d1ab8 100644 --- a/Makefile +++ b/Makefile @@ -8,10 +8,10 @@ ES_HOST = .PHONY: all clean html latexpdf epub htmlhelp website website-dirs # Languages that can be built. -LANGS = en es fr ja pt ru ro sr zh +LANGS = en es fr ja pt zh -# pdflatex does not like ja or ru for some reason. -PDF_LANGS = en es fr pt ro +# pdflatex does not like ja for some reason. +PDF_LANGS = en es fr pt DEST = website diff --git a/README.mdown b/README.mdown index 7e1fbe5336..04e56c86a2 100644 --- a/README.mdown +++ b/README.mdown @@ -10,12 +10,12 @@ You can read all of the documentation within as its just in plain text files, ma * Make * Python -* Sphinx +* Sphinx 1.2.* (currently the make commands will not work with 1.3.* versions and up) * PhpDomain for sphinx You can install sphinx using: - easy_install sphinx + easy_install sphinx==1.2.3 You can install the phpdomain using: diff --git a/config/all.py b/config/all.py index a1eb0c2e38..f7e670bb19 100644 --- a/config/all.py +++ b/config/all.py @@ -291,7 +291,7 @@ epub_use_index = False # Languages available. -languages = ['en', 'pt', 'es', 'ja', 'ru', 'fr', 'zh_CN'] +languages = ['en', 'pt', 'es', 'ja', 'fr', 'zh_CN'] # The GitHub branch name for this version of the docs branch = 'master' diff --git a/en/Makefile b/en/Makefile index 9d2fee1833..5f2aeec9aa 100644 --- a/en/Makefile +++ b/en/Makefile @@ -1,5 +1,4 @@ # Makefile for Sphinx documentation -# # You can set these variables from the command line. SPHINXOPTS = diff --git a/en/appendices.rst b/en/appendices.rst index a2d173a4aa..1f39623941 100644 --- a/en/appendices.rst +++ b/en/appendices.rst @@ -4,6 +4,14 @@ Appendices Appendices contain information regarding the new features introduced in 2.x, and the migration path from 1.3 to 2.0. +2.6 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-6-migration-guide + 2.5 Migration Guide =================== @@ -71,7 +79,6 @@ General Information .. toctree:: :maxdepth: 1 - appendices/cakephp-development-process appendices/glossary diff --git a/en/appendices/2-0-migration-guide.rst b/en/appendices/2-0-migration-guide.rst index 4e079c23f8..e8e8be5df6 100644 --- a/en/appendices/2-0-migration-guide.rst +++ b/en/appendices/2-0-migration-guide.rst @@ -92,7 +92,8 @@ lowercased Folders: * webroot htaccess (URL Rewriting) -=============================================== +======================== + In your ``app/webroot/.htaccess`` replace line ``RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]`` with ``RewriteRule ^(.*)$ index.php [QSA,L]`` AppController / AppModel / AppHelper / AppShell @@ -1019,8 +1020,8 @@ The testsuite shell has been refactored to use the PHPUnit cli tool. It now supports all the command line options supported by PHPUnit. ``cake testsuite help`` will show you a list of all possible modifiers. -Models -====== +Model +===== Model relationships are now lazy loaded. You can run into a situation where assigning a value to a nonexistent model property will throw errors:: diff --git a/en/appendices/2-6-migration-guide.rst b/en/appendices/2-6-migration-guide.rst new file mode 100644 index 0000000000..2401ebc9b2 --- /dev/null +++ b/en/appendices/2-6-migration-guide.rst @@ -0,0 +1,158 @@ +2.6 Migration Guide +################### + +CakePHP 2.6 is a fully API compatible upgrade from 2.5. This page outlines +the changes and improvements made in 2.6. + +Basics.php +========== + +- ``stackTrace()`` has been added as a convenience wrapper function for ``Debugger::trace()``. + It directly echos just as ``debug()`` does. But only if debug level is on. +- New i18n functions have been added. The new functions allow you to include + message context which allows you disambiguate possibly confusing message + strings. For example 'read' can mean multiple things in english depending on + the context. The new ``__x``, ``__xn``, ``__dx``, ``__dxn``, ``__dxc``, + ``__dxcn``, and ``__xc`` functions provide access to the new features. + +Cache +===== + +RedisEngine +----------- + +- The ``RedisEngine`` now has a default prefix of ``Inflector::slug(APP_DIR)``. + +Console +======= + +ConsoleOptionParser +------------------- + +- ``ConsoleOptionParser::removeSubcommand()`` was added. + +Shell +----- + +- ``overwrite()`` has been added to allow generating progress bars or to avoid outputting + too many lines by replacing text that has been already outputted to the screen. + +Controller +========== + +AuthComponent +------------- + +- ``AuthComponent`` had the ``userFields`` option added. +- AuthComponent now triggers an ``Auth.afterIdentify`` event after a user has + been identified and logged in. The event will contain the logged in user as + data. + +Behavior +======== + +AclBehavior +----------- + +- ``Model::parentNode()`` now gets the type (Aro, Aco) passed as first argument: ``$model->parentNode($type)``. + +Datasource +========== + +Mysql +----- + +- The ``RLIKE`` wildcard operator has been added to allow regular expression pattern lookups this way. +- Schema migrations with MySQL now support an ``after`` key when adding + a column. This key allows you to specify which column the new one should be + added after. + + +Model +===== + +Model +----- + +- ``Model::save()`` had the ``atomic`` option back-ported from 3.0. +- ``Model::afterFind()`` now always uses a consistent format for afterFind(). + When ``$primary`` is false, the results will always be located under + ``$data[0]['ModelName']``. You can set the ``useConsistentAfterFind`` property + to false on your models to restore the original behavior. + +Network +======= + +CakeRequest +----------- + +- ``CakeRequest::param()`` can now read values using :ref:`hash-path-syntax` + like ``data()``. +- ``CakeRequest:setInput()`` was added. + +HttpSocket +---------- + +- ``HttpSocket::head()`` was added. +- You can now use the ``protocol`` option to override the specific protocol to + use when making a request. + + +I18n +==== + +- Configure value ``I18n.preferApp`` can now be used to control the order of translations. + If set to true it will prefer the app translations over any plugins' ones. + + +Utility +======= + +CakeTime +-------- + +- ``CakeTime::timeAgoInWords()`` now supports ``strftime()`` compatible absolute + date formats. This helps make localizing formatted times easier. + +Hash +---- + +- ``Hash::get()`` now raises an exception when the path argument is invalid. +- ``Hash::nest()`` now raises an exception when the nesting operation results in + no data. + + +Validation +---------- + +- ``Validation::between`` has been deprecated, you should use + :php:meth:`Validation::lengthBetween` instead. +- ``Validation::ssn`` has been deprecated and can be provided as standalone/plugin solution. + + +View +==== + +HtmlHelper +---------- + +- :php:meth:`HtmlHelper::css()` had the ``once`` option added. It works the same + as the ``once`` option for ``HtmlHelper::script()``. The default value is + ``false`` to maintain backwards compatibility. +- The ``$confirmMessage`` argument of :php:meth:`HtmlHelper::link()` has been + deprecated. You should instead use key ``confirm`` in ``$options`` to specify + the message. + +FormHelper +---------- + +- The ``$confirmMessage`` argument of :php:meth:`FormHelper::postLink()` has been + deprecated. You should instead use key ``confirm`` in ``$options`` to specify + the message. +- The ``maxlength`` attribute will now also be applied to textareas, when the corresponding + DB field is of type varchar, as per HTML specs. + +PaginatorHelper +--------------- + +- :php:meth:`PaginatorHelper::meta()` has been added to output the meta-links (rel prev/next) for a paginated result set. diff --git a/en/appendices/new-features-in-cakephp-1-3.rst b/en/appendices/new-features-in-cakephp-1-3.rst index 109e7f5668..4a5b77b017 100644 --- a/en/appendices/new-features-in-cakephp-1-3.rst +++ b/en/appendices/new-features-in-cakephp-1-3.rst @@ -1,5 +1,5 @@ New features in CakePHP 1.3 --------------------------------- +--------------------------- CakePHP 1.3 introduced a number of new features. This guide attempts to summarize those changes and point to expanded diff --git a/en/appendices/new-features-in-cakephp-2-1.rst b/en/appendices/new-features-in-cakephp-2-1.rst index 77a44a1fdf..8479e3dda8 100644 --- a/en/appendices/new-features-in-cakephp-2-1.rst +++ b/en/appendices/new-features-in-cakephp-2-1.rst @@ -6,6 +6,7 @@ Models Model::saveAll(), Model::saveAssociated(), Model::validateAssociated() ---------------------------------------------------------------------- + ``Model::saveAll()`` and friends now support passing the `fieldList` for multiple models. Example:: $this->SomeModel->saveAll($data, array( @@ -153,7 +154,7 @@ When those methods are combined with having the :php:class:`RequestHandlerCompon enabled in your controller, the component will automatically decide if the response is already cached in the client and will send a `304 Not Modified` status code before rendering the view. Skipping the view rendering process saves -CPU cycles and memory.:: +CPU cycles and memory. :: class ArticlesController extends AppController { public $components = array('RequestHandler'); @@ -208,6 +209,6 @@ it in ``engine`` key:: } HtmlHelper ------------ -A new function :php:meth:`HtmlHelper::media()` has been added for HTML5's audio/video element generation. +---------- +A new function :php:meth:`HtmlHelper::media()` has been added for HTML5's audio/video element generation. diff --git a/en/cakephp-overview/where-to-get-help.rst b/en/cakephp-overview/where-to-get-help.rst index f144966e4a..1da43a96ee 100644 --- a/en/cakephp-overview/where-to-get-help.rst +++ b/en/cakephp-overview/where-to-get-help.rst @@ -50,7 +50,7 @@ The Test Cases If you ever feel the information provided in the API is not sufficient, check out the code of the test cases provided with CakePHP. They can serve as practical examples for function and -data member usage for a class.:: +data member usage for a class. :: lib/Cake/Test/Case @@ -78,6 +78,7 @@ donate your brand new sports car. Official CakePHP discussion group ================================= + `CakePHP Google Group `_ CakePHP also has its official discusson group on Google Groups. diff --git a/en/console-and-shells.rst b/en/console-and-shells.rst index f55d0a571c..695d4c52e8 100644 --- a/en/console-and-shells.rst +++ b/en/console-and-shells.rst @@ -101,7 +101,6 @@ the console folder to your ``PATH``:: The path supplied can be relative to the current working directory or supplied as an absolute path. - .. _adding-cake-to-your-path: Adding cake to your system path @@ -414,7 +413,7 @@ configure the OptionParser to match the expected inputs of your shell. You can also configure subcommand option parsers, which allow you to have different option parsers for subcommands and tasks. The ConsoleOptionParser implements a fluent interface and includes -methods for easily setting multiple options/arguments at once.:: +methods for easily setting multiple options/arguments at once. :: public function getOptionParser() { $parser = parent::getOptionParser(); @@ -510,7 +509,7 @@ handle that in your shell. .. php:method:: addArguments(array $args) If you have an array with multiple arguments you can use ``$parser->addArguments()`` -to add multiple arguments at once.:: +to add multiple arguments at once. :: $parser->addArguments(array( 'node' => array('help' => 'The node to create', 'required' => true), @@ -547,7 +546,7 @@ Options or flags are also frequently used in command line tools. ``ConsoleOptionParser`` supports creating options with both verbose and short aliases, supplying defaults and creating boolean switches. Options are created with either -``$parser->addOption()`` or ``$parser->addOptions()``.:: +``$parser->addOption()`` or ``$parser->addOptions()``. :: $parser->addOption('connection', array( 'short' => 'c', @@ -559,7 +558,7 @@ The above would allow you to use either ``cake myshell --connection=other``, ``cake myshell --connection other``, or ``cake myshell -c other`` when invoking the shell. You can also create boolean switches, these switches do not consume values, and their presence just enables them in the -parsed parameters.:: +parsed parameters. :: $parser->addOption('no-commit', array('boolean' => true)); @@ -583,7 +582,7 @@ define the behavior of the option: .. php:method:: addOptions(array $options) If you have an array with multiple options you can use ``$parser->addOptions()`` -to add multiple options at once.:: +to add multiple options at once. :: $parser->addOptions(array( 'node' => array('short' => 'n', 'help' => 'The node to create'), @@ -952,6 +951,18 @@ Shell API On windows systems, plain output is the default unless the ``ANSICON`` environment variable is present. +.. php:method:: overwrite($message = null, $newlines = 1, $size = null) + + :param string $method: The message to print. + :param integer $newlines: The number of newlines to follow the message. + :param integer $size: The number of bytes to overwrite + + A useful method to generate progress bars or to avoid outputting too many lines. + + Warning: You cannot overwrite text that contains newlines. + + .. versionadded:: 2.6 + .. php:method:: runCommand($command, $argv) Runs the Shell with the provided argv. diff --git a/en/console-and-shells/acl-shell.rst b/en/console-and-shells/acl-shell.rst index a50a35fff7..a2b0969e80 100644 --- a/en/console-and-shells/acl-shell.rst +++ b/en/console-and-shells/acl-shell.rst @@ -60,7 +60,7 @@ switch 'deny' in for 'grant'. Check permissions ================= -Use this command to check ACL permissions.:: +Use this command to check ACL permissions. :: ./Console/cake acl check Group.1 controllers/Posts read @@ -75,7 +75,6 @@ allows you to return only a portion of the requested tree:: ./Console/cake acl view - .. meta:: :title lang=en: ACL Shell :keywords lang=en: record style,style reference,acl,database tables,group id,notations,alias,privilege,node,privileges,shell,databases diff --git a/en/console-and-shells/code-generation-with-bake.rst b/en/console-and-shells/code-generation-with-bake.rst index b7153d8757..697d757604 100644 --- a/en/console-and-shells/code-generation-with-bake.rst +++ b/en/console-and-shells/code-generation-with-bake.rst @@ -68,8 +68,7 @@ If you wish to modify the default HTML output produced by the "bake" command, follow these simple steps: For baking custom views ------------------------- - +----------------------- #. Go into: lib/Cake/Console/Templates/default/views #. Notice the 4 files there diff --git a/en/console-and-shells/completion-shell.rst b/en/console-and-shells/completion-shell.rst index 69ec2eb588..c631487486 100644 --- a/en/console-and-shells/completion-shell.rst +++ b/en/console-and-shells/completion-shell.rst @@ -46,7 +46,7 @@ Returns:: controller db_config fixture model plugin project test view options --------- +------- As the third and final options outputs options for the given (sub) command as set in getOptionParser. (Including the default options inherited from Shell.) diff --git a/en/console-and-shells/cron-jobs.rst b/en/console-and-shells/cron-jobs.rst index 3a6fcd61ea..aba54e1201 100644 --- a/en/console-and-shells/cron-jobs.rst +++ b/en/console-and-shells/cron-jobs.rst @@ -18,6 +18,7 @@ trivial to setup, for example:: You can see more info here: http://en.wikipedia.org/wiki/Cron + .. meta:: :title lang=en: Running Shells as cronjobs :keywords lang=en: cronjob,bash script,crontab diff --git a/en/console-and-shells/schema-management-and-migrations.rst b/en/console-and-shells/schema-management-and-migrations.rst index 94bc918b8a..6e3f4a1a6b 100644 --- a/en/console-and-shells/schema-management-and-migrations.rst +++ b/en/console-and-shells/schema-management-and-migrations.rst @@ -164,6 +164,7 @@ Here is a full example from the acl class :: 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. @@ -393,6 +394,7 @@ Will bring up the following choices:: Are you sure you want to alter the tables? (y/n) [n] > + .. meta:: :title lang=en: Schema management and migrations :keywords lang=en: schema files,schema management,schema objects,database schema,table statements,database changes,migrations,versioning,snapshots,sql,snapshot,shell,config,functionality,choices,models,php files,php file,directory,running diff --git a/en/console-and-shells/upgrade-shell.rst b/en/console-and-shells/upgrade-shell.rst index 3f2a7d34cc..0c26294729 100644 --- a/en/console-and-shells/upgrade-shell.rst +++ b/en/console-and-shells/upgrade-shell.rst @@ -76,6 +76,7 @@ This will do **most** of the work to upgrade your app to 2.x. Check things over in your upgraded ``app`` folder. If everything looks good then congratulate yourself and delete your ``mywebsite/cake`` folder. Welcome to 2.x! + .. meta:: :title lang=en: .. _upgrade-shell: :keywords lang=en: api docs,shell diff --git a/en/contents.rst b/en/contents.rst index 999f86821c..0242a06482 100644 --- a/en/contents.rst +++ b/en/contents.rst @@ -22,6 +22,7 @@ Contents .. todolist:: + .. meta:: :title lang=en: Contents :keywords lang=en: core libraries,ref search,shells,deployment,appendices,glossary,models diff --git a/en/contributing.rst b/en/contributing.rst index 142cdb2132..65e0e26eab 100644 --- a/en/contributing.rst +++ b/en/contributing.rst @@ -12,7 +12,7 @@ cover the various ways you can contribute to CakePHP: contributing/code contributing/cakephp-coding-conventions contributing/backwards-compatibility - + contributing/cakephp-development-process .. meta:: diff --git a/en/contributing/backwards-compatibility.rst b/en/contributing/backwards-compatibility.rst index 4f4625a454..c2b2ac9ac4 100644 --- a/en/contributing/backwards-compatibility.rst +++ b/en/contributing/backwards-compatibility.rst @@ -163,4 +163,3 @@ In a minor release you can: This is generally avoided unless renaming has significant benefit. .. [3] Avoid whenever possible. Any removals need to be documented in the migration guide. - diff --git a/en/contributing/cakephp-coding-conventions.rst b/en/contributing/cakephp-coding-conventions.rst index 28e998a85d..a65079413d 100644 --- a/en/contributing/cakephp-coding-conventions.rst +++ b/en/contributing/cakephp-coding-conventions.rst @@ -10,6 +10,11 @@ You can use the `CakePHP Code Sniffer `_ to check that your code follows required standards. +Language +======== + +All code and comments should be written in English. + Adding New Features =================== @@ -246,59 +251,129 @@ indented with one tab:: ->subject('A great message') ->send(); -Commenting Code -=============== +DocBlocks +========= + +All comment blocks, with the exception of the first block in a file, should +always be preceded by a newline. -All comments should be written in English, and should in a clear way -describe the commented block of code. +File Header DocBlock +-------------------- -Comments can include the following `phpDocumentor `_ -tags: +All PHP files should contain a file header DocBlock, +which should look like this:: + + `_ tags are: -* `@author `_ * `@copyright `_ +* `@link `_ +* `@since `_ +* `@license `_ + +Class DocBlocks +--------------- + +Class DocBlocks should look like this:: + + /** + * Short description of the class. + * + * Long description of class. + * Can use multiple lines. + * + * @deprecated 3.0.0 Deprecated in 2.6.0. Will be removed in 3.0.0. Use Bar instead. + * @see Bar + * @link http://book.cakephp.org/2.0/en/foo.html + */ + class Foo { + + } + +Class DocBlocks may contain the following `phpDocumentor `_ tags: + * `@deprecated `_ Using the ``@version `` format, where ``version`` and ``description`` are mandatory. -* `@example `_ -* `@ignore `_ * `@internal `_ * `@link `_ +* `@property `_ * `@see `_ * `@since `_ -* `@version `_ +* `@uses `_ + +Property DocBlocks +------------------ -PhpDoc tags are very much like JavaDoc tags in Java. Tags are only -processed if they are the first thing in a DocBlock line, for example:: +Property DocBlocks should look like this:: /** - * Tag example. + * @var string|null Description of property. * - * @author this tag is parsed, but this @version is ignored - * @version 1.0 this tag is also parsed + * @deprecated 3.0.0 Deprecated as of 2.5.0. Will be removed in 3.0.0. Use $_bla instead. + * @see Bar::$_bla + * @link http://book.cakephp.org/2.0/en/foo.html#properties */ + protected $_bar = null; -:: +Property DocBlocks may contain the following `phpDocumentor `_ tags: + +* `@deprecated `_ + Using the ``@version `` format, where ``version`` and ``description`` are mandatory. +* `@internal `_ +* `@link `_ +* `@see `_ +* `@since `_ +* `@var `_ + +Method/Function DocBlocks +------------------------- + +Method and functions DocBlocks should look like this:: /** - * Example of inline phpDoc tags. + * Short description of the method. * - * This function works hard with foo() to rule the world. + * Long description of method. + * Can use multiple lines. * - * @return void - */ - function bar() { - } - - /** - * Foo function. + * @param string $param2 first parameter. + * @param array|null $param2 Second parameter. + * @return array An array of cakes. + * @throws Exception If something goes wrong. * - * @return void - */ - function foo() { - } + * @link http://book.cakephp.org/2.0/en/foo.html#bar + * @deprecated 3.0.0 Deprecated as of 2.5.0. Will be removed in 3.0.0. Use Bar::baz instead. + * @see Bar::baz + /* + public function bar($param1, $param2 = null) { + } -Comment blocks, with the exception of the first block in a file, should -always be preceded by a newline. +Method and function DocBLocks may contain the following `phpDocumentor `_ tags: + +* `@deprecated `_ + Using the ``@version `` format, where ``version`` and ``description`` are mandatory. +* `@internal `_ +* `@link `_ +* `@param `_ +* `@return `_ +* `@throws `_ +* `@see `_ +* `@since `_ +* `@uses `_ Variable Types -------------- diff --git a/en/appendices/cakephp-development-process.rst b/en/contributing/cakephp-development-process.rst similarity index 100% rename from en/appendices/cakephp-development-process.rst rename to en/contributing/cakephp-development-process.rst diff --git a/en/contributing/documentation.rst b/en/contributing/documentation.rst index ff768907da..3162c26e4c 100644 --- a/en/contributing/documentation.rst +++ b/en/contributing/documentation.rst @@ -43,16 +43,15 @@ Documentation formatting guide ============================== The new CakePHP documentation is written with `ReST formatted text `_. ReST -(Re Structured Text) is a plain text markup syntax similar to markdown, or -textile. To maintain consistency it is recommended that when adding to the -CakePHP documentation you follow the guidelines here on how to format and +(Re Structured Text) is a plain text markup syntax similar to markdown or +textile. To maintain consistency, follow these guidelines to format and structure your text. Line length ----------- Lines of text should be wrapped at 80 columns. The only exception should be -long URLs, and code snippets. +long URLs and code snippets. Headings and Sections --------------------- @@ -150,7 +149,11 @@ Links to external documents can be with the following:: `External Link `_ -The above would generate a link pointing to http://example.com +The above would generate this `External Link `_ + +.. note:: + + Make sure you add the underscore after the backtick, it is important! Links to other pages ~~~~~~~~~~~~~~~~~~~~ diff --git a/en/contributing/tickets.rst b/en/contributing/tickets.rst index 0116cf9d26..230676bcf0 100644 --- a/en/contributing/tickets.rst +++ b/en/contributing/tickets.rst @@ -47,9 +47,6 @@ CakePHP team will take the following actions: * Prominently feature the problem in the release announcement. - - - .. meta:: :title lang=en: Tickets :keywords lang=en: bug reporting system,code snippet,reporting security,private mailing,release announcement,google,ticket system,core team,security issue,bug tracker,irc channel,test cases,support questions,bug report,security issues,bug reports,exploits,vulnerability,repository diff --git a/en/controllers.rst b/en/controllers.rst index 2d567d4458..0f0c747426 100644 --- a/en/controllers.rst +++ b/en/controllers.rst @@ -28,7 +28,6 @@ for interpreting the request and creating the response. Usually responses are in the form of a rendered view, but there are other ways to create responses as well. - .. _app-controller: The App Controller @@ -269,8 +268,8 @@ rendered from the controller. Although CakePHP will automatically call it after every action's logic (unless you've set ``$this->autoRender`` to false), you can - use it to specify an alternate view file by specifying an action - name in the controller using ``$action``. + use it to specify an alternate view file by specifying a view + name in the controller using ``$view``. If ``$view`` starts with '/', it is assumed to be a view or element file relative to the ``/app/View`` folder. This allows @@ -321,7 +320,7 @@ Flow Control The flow control method you'll use most often is :php:meth:`~Controller::redirect()`. This method takes its first parameter in the form of a CakePHP-relative URL. When a user has successfully placed an order, - you might wish to redirect them to a receipt screen.:: + you might wish to redirect them to a receipt screen. :: public function place_order() { // Logic for finalizing order goes here diff --git a/en/controllers/components.rst b/en/controllers/components.rst index 3845c78414..8b4251966b 100644 --- a/en/controllers/components.rst +++ b/en/controllers/components.rst @@ -294,7 +294,6 @@ Callbacks array with the key 'url' and optionally 'status' and 'exit'. - .. meta:: :title lang=en: Components :keywords lang=en: array controller,core libraries,authentication request,array name,access control lists,public components,controller code,core components,cookiemonster,login cookie,configuration settings,functionality,logic,sessions,cakephp,doc diff --git a/en/controllers/request-response.rst b/en/controllers/request-response.rst index 9aad85081e..9569706680 100644 --- a/en/controllers/request-response.rst +++ b/en/controllers/request-response.rst @@ -835,6 +835,7 @@ CakeResponse API .. versionadded:: 2.3 + .. meta:: :title lang=en: Request and Response objects :keywords lang=en: request controller,request parameters,array indexes,purpose index,response objects,domain information,request object,request data,interrogating,params,previous versions,introspection,dispatcher,rout,data structures,arrays,ip address,migration,indexes,cakephp diff --git a/en/core-libraries.rst b/en/core-libraries.rst index 9d95dca6d0..ee3ce6ebc3 100644 --- a/en/core-libraries.rst +++ b/en/core-libraries.rst @@ -70,6 +70,7 @@ logging, internationalization and more. core-libraries/toc-utilities + .. meta:: :title lang=en: Core Libraries :keywords lang=en: core libraries,global constants,cookie,access control lists,number,text,time,security component,core components,general purpose,web applications,markup,authentication,api,cakephp,functionality,sessions,collections,events diff --git a/en/core-libraries/behaviors/acl.rst b/en/core-libraries/behaviors/acl.rst index 912e4ff2c9..6dc8c032a5 100644 --- a/en/core-libraries/behaviors/acl.rst +++ b/en/core-libraries/behaviors/acl.rst @@ -74,9 +74,8 @@ belongsTo Group:: } if (!$data['User']['group_id']) { return null; - } else { - return array('Group' => array('id' => $data['User']['group_id'])); } + return array('Group' => array('id' => $data['User']['group_id'])); } In the above example the return is an array that looks similar to @@ -115,6 +114,7 @@ specify which node type you want:: )); $node = $this->User->node($user, 'Aro'); + .. meta:: :title lang=en: ACL :keywords lang=en: group node,array type,root node,acl system,acl entry,parent child relationships,model reference,php class,aros,group id,aco,aro,user group,alias,fly diff --git a/en/core-libraries/behaviors/containable.rst b/en/core-libraries/behaviors/containable.rst index b3567f6335..34ef107cad 100644 --- a/en/core-libraries/behaviors/containable.rst +++ b/en/core-libraries/behaviors/containable.rst @@ -252,7 +252,7 @@ by Daniel:: There is an important caveat to using Containable when filtering on a deeper association. In the previous example, assume you had 3 posts in your database and Daniel had commented on 2 of those posts. The operation $this->Post->find('all', array('contain' => 'Comment.author = "Daniel"')); would return ALL 3 posts, not -just the 2 posts that Daniel had commented on. It won't return all comments however, just comments by Daniel.:: +just the 2 posts that Daniel had commented on. It won't return all comments however, just comments by Daniel. :: [0] => Array ( @@ -315,7 +315,7 @@ just the 2 posts that Daniel had commented on. It won't return all comments howe ) If you want to filter the posts by the comments, so that posts without a comment by Daniel won't be -returned, the easiest way is to find all the comments by Daniel and contain the Posts.:: +returned, the easiest way is to find all the comments by Daniel and contain the Posts. :: $this->Comment->find('all', array( 'conditions' => 'Comment.author = "Daniel"', @@ -421,7 +421,7 @@ reattaching the behavior as seen in ContainableBehavior can sometimes cause issues with other behaviors or queries that use aggregate functions and/or GROUP BY statements. If you get invalid SQL errors due to mixing of aggregate and -non-aggregate fields, try disabling the ``autoFields`` setting.:: +non-aggregate fields, try disabling the ``autoFields`` setting. :: $this->Post->Behaviors->load('Containable', array('autoFields' => false)); diff --git a/en/core-libraries/behaviors/translate.rst b/en/core-libraries/behaviors/translate.rst index e48bdea710..4fe48abf38 100644 --- a/en/core-libraries/behaviors/translate.rst +++ b/en/core-libraries/behaviors/translate.rst @@ -18,7 +18,7 @@ You can either use the CakePHP console or you can manually create it. It is advised to use the console for this, because it might happen that the layout changes in future versions of CakePHP. Sticking to the console will make sure that you have the correct -layout.:: +layout. :: ./cake i18n @@ -31,7 +31,7 @@ Attaching the Translate Behavior to your Models =============================================== Add it to your model by using the ``$actsAs`` property like in the -following example.:: +following example. :: class Post extends AppModel { public $actsAs = array( @@ -115,7 +115,7 @@ Retrieve all translation records for a field If you want to have all translation records attached to the current model record you simply extend the **field array** in your behavior -setup as shown below. The naming is completely up to you.:: +setup as shown below. The naming is completely up to you. :: class Post extends AppModel { public $actsAs = array( @@ -183,7 +183,7 @@ using the bindTranslation method ``$fields`` is a named-key array of field and association name, where the key is the translatable field and the value is the fake -association name.:: +association name. :: $this->Post->bindTranslation(array('title' => 'titleTranslation')); // need at least recursive 1 for this to work. @@ -313,7 +313,7 @@ For this to work you need to create the actual model file in your models folder. Reason is that there is no property to set the displayField directly in the model using this behavior yet. -Make sure that you change the ``$displayField`` to ``'field'``.:: +Make sure that you change the ``$displayField`` to ``'field'``. :: class PostI18n extends AppModel { public $displayField = 'field'; // important diff --git a/en/core-libraries/behaviors/tree.rst b/en/core-libraries/behaviors/tree.rst index 216736f213..46e403d44f 100644 --- a/en/core-libraries/behaviors/tree.rst +++ b/en/core-libraries/behaviors/tree.rst @@ -147,36 +147,31 @@ and an even simpler model definition:: We can check what our category tree data looks like by visiting /categories You should see something like this: - - My Categories - - Fun - - - Sport - - - Surfing - - Extreme knitting - - - Friends + - Fun - - Gerald - - Gwendolyn + - Sport + - Surfing + - Extreme knitting - - Work + - Friends - - Reports + - Gerald + - Gwendolyn - - Annual - - Status + - Work - - Trips - - - National - - International + - Reports + - Annual + - Status + - Trips + - National + - International Adding data ----------- @@ -204,38 +199,34 @@ to the tree making your new addition a new top level entry:: Running the above two code snippets would alter your tree as follows: +- My Categories -- My Categories - - - Fun + - Fun - - Sport + - Sport - - Surfing - - Extreme knitting - - Skating **New** + - Surfing + - Extreme knitting + - Skating **New** - - Friends + - Friends - - Gerald - - Gwendolyn + - Gerald + - Gwendolyn + - Work - - Work + - Reports - - Reports + - Annual + - Status - - Annual - - Status + - Trips - - Trips + - National + - International - - National - - International - - - -- Other People's Categories **New** +- Other People's Categories **New** Modifying data -------------- @@ -253,38 +244,34 @@ parent\_id is included in the data that is passed to save if the value doesn't change, neither does the data structure. Therefore the tree of data would now look like: +- My Categories -- My Categories - -- Fun - - - Sport - - - Surfing - - Extreme fishing **Updated** - - Skating + - Fun - - Friends + - Sport - - Gerald - - Gwendolyn + - Surfing + - Extreme fishing **Updated** + - Skating + - Friends -- Work + - Gerald + - Gwendolyn - - Reports + - Work - - Annual - - Status + - Reports - - Trips + - Annual + - Status - - National - - International + - Trips + - National + - International - -- Other People's Categories +- Other People's Categories Moving data around in your tree is also a simple affair. Let's say that Extreme fishing does not belong under Sport, but instead @@ -301,40 +288,35 @@ following code:: As would be expected the structure would be modified to: +- My Categories -- My Categories - - - Fun - - - Sport - - - Surfing - - Skating - - - Friends - - - Gerald - - Gwendolyn + - Fun + - Sport - - Work + - Surfing + - Skating - - Reports + - Friends - - Annual - - Status + - Gerald + - Gwendolyn - - Trips + - Work - - National - - International + - Reports + - Annual + - Status + - Trips -- Other People's Categories + - National + - International - - Extreme fishing **Moved** +- Other People's Categories + - Extreme fishing **Moved** Deleting data ------------- @@ -351,35 +333,30 @@ any model. For example with the following code:: The category tree would be modified as follows: +- My Categories -- My Categories - - - Fun - - - Sport - - - Surfing - - Skating + - Fun - - Friends + - Sport - - Gerald - - Gwendolyn + - Surfing + - Skating + - Friends - - Work + - Gerald + - Gwendolyn - - Trips + - Work - - National - - International + - Trips + - National + - International +- Other People's Categories -- Other People's Categories - - - Extreme fishing - + - Extreme fishing Querying and using your data ---------------------------- @@ -395,7 +372,6 @@ are a few more tree-orientated permutations at your disposal. ``lft``, or call a tree behavior method and pass a sort order, you may get undesirable results. - .. php:class:: TreeBehavior .. php:method:: children($id = null, $direct = false, $fields = null, $order = null, $limit = null, $page = 1, $recursive = null) @@ -492,22 +468,17 @@ are a few more tree-orientated permutations at your disposal. where you are to the top. So for example the path from the category "International" is: - - My Categories - - ... - - Work - - - Trips - - - ... - - International - - + - ... + - Work + - Trips + - ... + - International Using the id of "International" getPath will return each of the - parents in turn (starting from the top).:: + parents in turn (starting from the top). :: $parents = $this->Category->getPath(15); @@ -529,289 +500,276 @@ are a few more tree-orientated permutations at your disposal. ), ) - Advanced Usage ============== - The tree behavior doesn't only work in the background, there are a - number of specific methods defined in the behavior to cater for all - your hierarchical data needs, and any unexpected problems that - might arise in the process. - - .. php:method:: moveDown() - - Used to move a single node down the tree. You need to provide the - ID of the element to be moved and a positive number of how many - positions the node should be moved down. All child nodes for the - specified node will also be moved. - - Here is an example of a controller action (in a controller named - Categories) that moves a specified node down the tree:: - - public function movedown($id = null, $delta = null) { - $this->Category->id = $id; - if (!$this->Category->exists()) { - throw new NotFoundException(__('Invalid category')); - } - - 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.' - ); - } - - return $this->redirect(array('action' => 'index')); - } +The tree behavior doesn't only work in the background, there are a +number of specific methods defined in the behavior to cater for all +your hierarchical data needs, and any unexpected problems that +might arise in the process. - For example, if you'd like to move the "Sport" ( id of 3 ) category one - position down, you would request: /categories/movedown/3/1. +.. php:method:: moveDown() - .. php:method:: moveUp() +Used to move a single node down the tree. You need to provide the +ID of the element to be moved and a positive number of how many +positions the node should be moved down. All child nodes for the +specified node will also be moved. - Used to move a single node up the tree. You need to provide the ID - of the element to be moved and a positive number of how many - positions the node should be moved up. All child nodes will also be - moved. +Here is an example of a controller action (in a controller named +Categories) that moves a specified node down the tree:: - Here's an example of a controller action (in a controller named - Categories) that moves a node up the tree:: - - public function moveup($id = null, $delta = null) { - $this->Category->id = $id; - if (!$this->Category->exists()) { - throw new NotFoundException(__('Invalid category')); - } - - 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.' - ); - } - - return $this->redirect(array('action' => 'index')); + public function movedown($id = null, $delta = null) { + $this->Category->id = $id; + if (!$this->Category->exists()) { + throw new NotFoundException(__('Invalid category')); } - For example, if you would like to move the category "Gwendolyn" ( id of 8 ) up - one position you would request /categories/moveup/8/1. Now - the order of Friends will be Gwendolyn, Gerald. + 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.' + ); + } - .. php:method:: removeFromTree($id = null, $delete = false) + return $this->redirect(array('action' => 'index')); + } - Using this method will either delete or move a node but retain its - sub-tree, which will be reparented one level higher. It offers more - control than :ref:`model-delete`, which for a model - using the tree behavior will remove the specified node and all of - its children. +For example, if you'd like to move the "Sport" ( id of 3 ) category one +position down, you would request: /categories/movedown/3/1. - Taking the following tree as a starting point: +.. php:method:: moveUp() +Used to move a single node up the tree. You need to provide the ID +of the element to be moved and a positive number of how many +positions the node should be moved up. All child nodes will also be +moved. - - My Categories +Here's an example of a controller action (in a controller named +Categories) that moves a node up the tree:: - - Fun + public function moveup($id = null, $delta = null) { + $this->Category->id = $id; + if (!$this->Category->exists()) { + throw new NotFoundException(__('Invalid category')); + } - - Sport + 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.' + ); + } - - Surfing - - Extreme knitting - - Skating + return $this->redirect(array('action' => 'index')); + } +For example, if you would like to move the category "Gwendolyn" ( id of 8 ) up +one position you would request /categories/moveup/8/1. Now +the order of Friends will be Gwendolyn, Gerald. +.. php:method:: removeFromTree($id = null, $delete = false) +Using this method will either delete or move a node but retain its +sub-tree, which will be reparented one level higher. It offers more +control than :ref:`model-delete`, which for a model +using the tree behavior will remove the specified node and all of +its children. - Running the following code with the id for 'Sport':: +Taking the following tree as a starting point: - $this->Node->removeFromTree($id); +- My Categories - The Sport node will be become a top level node: + - Fun + - Sport - - My Categories + - Surfing + - Extreme knitting + - Skating - - Fun +Running the following code with the id for 'Sport':: - - Surfing - - Extreme knitting - - Skating + $this->Node->removeFromTree($id); +The Sport node will be become a top level node: - - Sport **Moved** +- My Categories - This demonstrates the default behavior of ``removeFromTree`` of - moving the node to have no parent, and re-parenting all children. + - Fun - If however the following code snippet was used with the id for - 'Sport':: + - Surfing + - Extreme knitting + - Skating - $this->Node->removeFromTree($id, true); +- Sport **Moved** - The tree would become +This demonstrates the default behavior of ``removeFromTree`` of +moving the node to have no parent, and re-parenting all children. +If however the following code snippet was used with the id for +'Sport':: - - My Categories + $this->Node->removeFromTree($id, true); - - Fun +The tree would become - - Surfing - - Extreme knitting - - Skating +- My Categories + - Fun + - Surfing + - Extreme knitting + - Skating - This demonstrates the alternate use for ``removeFromTree``, the - children have been reparented and 'Sport' has been deleted. +This demonstrates the alternate use for ``removeFromTree``, the +children have been reparented and 'Sport' has been deleted. - .. php:method:: reorder(array('id' => null, 'field' => $Model->displayField, 'order' => 'ASC', 'verify' => true)) +.. php:method:: reorder(array('id' => null, 'field' => $Model->displayField, 'order' => 'ASC', 'verify' => true)) - Reorders the nodes (and child nodes) of the tree according to the - field and direction specified in the parameters. This method does - not change the parent of any node.:: +Reorders the nodes (and child nodes) of the tree according to the +field and direction specified in the parameters. This method does +not change the parent of any node. :: - $model->reorder(array( - //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' => - )); + $model->reorder(array( + //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:: +.. note:: - If you have saved your data or made other operations on the model, - you might want to set ``$model->id = null`` before calling - ``reorder``. Otherwise only the current node and it's children will - be reordered. + If you have saved your data or made other operations on the model, + you might want to set ``$model->id = null`` before calling + ``reorder``. Otherwise only the current node and it's children will + be reordered. Data Integrity ============== - Due to the nature of complex self referential data structures such - as trees and linked lists, they can occasionally become broken by a - careless call. Take heart, for all is not lost! The Tree Behavior - contains several previously undocumented features designed to - recover from such situations. - - .. php:method:: recover($mode = 'parent', $missingParentAction = null) - - The ``mode`` parameter is used to specify the source of info that - is valid/correct. The opposite source of data will be populated - based upon that source of info. E.g. if the MPTT fields are corrupt - or empty, with the ``$mode 'parent'`` the values of the - ``parent_id`` field will be used to populate the left and right - fields. The ``missingParentAction`` parameter only applies to - "parent" mode and determines what to do if the parent field - contains an id that is not present. - - Available ``$mode`` options: - - - ``'parent'`` - use the existing ``parent_id``'s to update the - ``lft`` and ``rght`` fields - - ``'tree'`` - use the existing ``lft`` and ``rght`` fields to - update ``parent_id`` - - Available ``missingParentActions`` options when using - ``mode='parent'``: - - - ``null`` - do nothing and carry on - - ``'return'`` - do nothing and return - - ``'delete'`` - delete the node - - ``int`` - set the parent\_id to this id - - Example:: - - // Rebuild all the left and right fields based on the parent_id - $this->Category->recover(); - // or - $this->Category->recover('parent'); - - // Rebuild all the parent_id's based on the lft and rght fields - $this->Category->recover('tree'); - - - .. php:method:: reorder($options = array()) - - Reorders the nodes (and child nodes) of the tree according to the - field and direction specified in the parameters. This method does - not change the parent of any node. - - Reordering affects all nodes in the tree by default, however the - following options can affect the process: - - - ``'id'`` - only reorder nodes below this node. - - ``'field``' - field to use for sorting, default is the - ``displayField`` for the model. - - ``'order'`` - ``'ASC'`` for ascending, ``'DESC'`` for descending - sort. - - ``'verify'`` - whether or not to verify the tree prior to - resorting. - - ``$options`` is used to pass all extra parameters, and has the - following possible keys by default, all of which are optional:: - - array( - 'id' => null, - 'field' => $model->displayField, - 'order' => 'ASC', - 'verify' => true - ) - - - .. php:method:: verify() - - Returns ``true`` if the tree is valid otherwise an array of errors, - with fields for type, incorrect index and message. - - Each record in the output array is an array of the form (type, id, - message) - - - ``type`` is either ``'index'`` or ``'node'`` - - ``'id'`` is the id of the erroneous node. - - ``'message'`` depends on the error - - Example Use:: - - $this->Category->verify(); - - Example output:: - - Array - ( - [0] => Array - ( - [0] => node - [1] => 3 - [2] => left and right values identical - ) - [1] => Array - ( - [0] => node - [1] => 2 - [2] => The parent node 999 doesn't exist - ) - [10] => Array - ( - [0] => index - [1] => 123 - [2] => missing - ) - [99] => Array - ( - [0] => node - [1] => 163 - [2] => left greater than right - ) - - ) - +Due to the nature of complex self referential data structures such +as trees and linked lists, they can occasionally become broken by a +careless call. Take heart, for all is not lost! The Tree Behavior +contains several previously undocumented features designed to +recover from such situations. + +.. php:method:: recover($mode = 'parent', $missingParentAction = null) + +The ``mode`` parameter is used to specify the source of info that +is valid/correct. The opposite source of data will be populated +based upon that source of info. E.g. if the MPTT fields are corrupt +or empty, with the ``$mode 'parent'`` the values of the +``parent_id`` field will be used to populate the left and right +fields. The ``missingParentAction`` parameter only applies to +"parent" mode and determines what to do if the parent field +contains an id that is not present. + +Available ``$mode`` options: + +- ``'parent'`` - use the existing ``parent_id``'s to update the + ``lft`` and ``rght`` fields +- ``'tree'`` - use the existing ``lft`` and ``rght`` fields to + update ``parent_id`` + +Available ``missingParentActions`` options when using +``mode='parent'``: + +- ``null`` - do nothing and carry on +- ``'return'`` - do nothing and return +- ``'delete'`` - delete the node +- ``int`` - set the parent\_id to this id + +Example:: + + // Rebuild all the left and right fields based on the parent_id + $this->Category->recover(); + // or + $this->Category->recover('parent'); + + // Rebuild all the parent_id's based on the lft and rght fields + $this->Category->recover('tree'); + + +.. php:method:: reorder($options = array()) + +Reorders the nodes (and child nodes) of the tree according to the +field and direction specified in the parameters. This method does +not change the parent of any node. + +Reordering affects all nodes in the tree by default, however the +following options can affect the process: + +- ``'id'`` - only reorder nodes below this node. +- ``'field``' - field to use for sorting, default is the + ``displayField`` for the model. +- ``'order'`` - ``'ASC'`` for ascending, ``'DESC'`` for descending + sort. +- ``'verify'`` - whether or not to verify the tree prior to + resorting. + +``$options`` is used to pass all extra parameters, and has the +following possible keys by default, all of which are optional:: + + array( + 'id' => null, + 'field' => $model->displayField, + 'order' => 'ASC', + 'verify' => true + ) + +.. php:method:: verify() + +Returns ``true`` if the tree is valid otherwise an array of errors, +with fields for type, incorrect index and message. + +Each record in the output array is an array of the form (type, id, +message) + +- ``type`` is either ``'index'`` or ``'node'`` +- ``'id'`` is the id of the erroneous node. +- ``'message'`` depends on the error + +Example Use:: + + $this->Category->verify(); + +Example output:: + + Array + ( + [0] => Array + ( + [0] => node + [1] => 3 + [2] => left and right values identical + ) + [1] => Array + ( + [0] => node + [1] => 2 + [2] => The parent node 999 doesn't exist + ) + [10] => Array + ( + [0] => index + [1] => 123 + [2] => missing + ) + [99] => Array + ( + [0] => node + [1] => 163 + [2] => left greater than right + ) + ) .. meta:: diff --git a/en/core-libraries/caching.rst b/en/core-libraries/caching.rst index 3ed7381deb..217c5a4136 100644 --- a/en/core-libraries/caching.rst +++ b/en/core-libraries/caching.rst @@ -51,7 +51,6 @@ as your application grows. In addition to the :php:class:`Cache` class, the :doc:`/core-libraries/helpers/cache` allows for full page caching, which can greatly improve performance as well. - Configuring Cache class ======================= @@ -115,7 +114,7 @@ directory. If you had a cache engine named ``MyCustomCacheEngine`` it would be placed in either ``app/Lib/Cache/Engine/MyCustomCacheEngine.php`` as an app/libs or in ``$plugin/Lib/Cache/Engine/MyCustomCacheEngine.php`` as part of a plugin. Cache configs from plugins need to use the plugin -dot syntax.:: +dot syntax. :: Cache::config('custom', array( 'engine' => 'CachePack.MyCustomCache', @@ -387,7 +386,7 @@ Cache API ``Cache::set()`` to change the settings for a write, you should also use ``Cache::set()`` before reading the data back in. If you fail to do so, the default settings will be used when the cache key - is read.:: + is read. :: Cache::set(array('duration' => '+30 days')); Cache::write('results', $data); @@ -459,6 +458,7 @@ Cache API .. versionadded:: 2.5 remember() was added in 2.5. + .. meta:: :title lang=en: Caching :keywords lang=en: uniform api,xcache,cache engine,cache system,atomic operations,php class,disk storage,static methods,php extension,consistent manner,similar features,apc,memcache,queries,cakephp,elements,servers,memory diff --git a/en/core-libraries/collections.rst b/en/core-libraries/collections.rst index 42e98745e7..fb9003b87f 100644 --- a/en/core-libraries/collections.rst +++ b/en/core-libraries/collections.rst @@ -117,7 +117,7 @@ if a specific object is still enabled using ``enabled()``:: $enabled = $this->Helpers->enabled(); Object callback priorities -============================== +========================== You can prioritize the triggering object callbacks similar to event callbacks. The handling of priority values and order of triggering is the same as diff --git a/en/core-libraries/components/access-control-lists.rst b/en/core-libraries/components/access-control-lists.rst index f8847b0eb1..85b4413a66 100644 --- a/en/core-libraries/components/access-control-lists.rst +++ b/en/core-libraries/components/access-control-lists.rst @@ -121,67 +121,45 @@ fashion while maintaining a good grip on the big picture. Being the wise leader he is, Gandalf elects to use ACL in his new system, and organizes his objects along the following lines: - - Fellowship of the Ring™ - - Warriors - - Aragorn - Legolas - Gimli - - Wizards - - Gandalf - - Hobbits - - Frodo - Bilbo - Merry - Pippin - - Visitors - - Gollum - - Using a tree structure for AROs allows Gandalf to define permissions that apply to entire groups of users at once. So, using our ARO tree, Gandalf can tack on a few group-based permissions: - - Fellowship of the Ring (**Deny**: all) - - Warriors (**Allow**: Weapons, Ale, Elven Rations, Salted Pork) - - Aragorn - Legolas - Gimli - - Wizards (**Allow**: Salted Pork, Diplomacy, Ale) - - Gandalf - - Hobbits (**Allow**: Ale) - - Frodo - Bilbo - Merry - Pippin - - Visitors (**Allow**: Salted Pork) - - Gollum - - If we wanted to use ACL to see whether Pippin was allowed to access the ale, we'd first consult the tree to retrieve his path through it, which is Fellowship->Hobbits->Pippin. Then we see the different permissions @@ -208,26 +186,19 @@ The tree also allows us to make finer adjustments for more granular control, while still keeping the ability to make sweeping changes to groups of AROs: - - Fellowship of the Ring (**Deny**: all) - - Warriors (**Allow**: Weapons, Ale, Elven Rations, Salted Pork) - - Aragorn (Allow: Diplomacy) - Legolas - Gimli - - Wizards (**Allow**: Salted Pork, Diplomacy, Ale) - - Gandalf - - Hobbits (**Allow**: Ale) - - Frodo (Allow: Ring) - Bilbo @@ -235,14 +206,10 @@ to groups of AROs: (Deny: Ale) - Pippin (Allow: Diplomacy) - - Visitors (**Allow**: Salted Pork) - - Gollum - - This approach allows us the ability to make both wide-reaching permissions changes and fine-grained adjustments. This allows us to say that all hobbits can have access to ale, with one @@ -354,7 +321,6 @@ you can skip to :ref:`the section on checking permissions using the ACL component. Alternatively, you can keep reading to see how you would define the same permissions using a database ACL. - Defining Permissions: CakePHP's Database ACL ============================================ @@ -704,7 +670,6 @@ Let's set up an ACO tree that will mimic a CakePHP app setup. Since we have five ACOs, we'll create an ACO tree that should end up looking something like the following: - - Weapons - Rings - PorkChops diff --git a/en/core-libraries/components/authentication.rst b/en/core-libraries/components/authentication.rst index 97fc597df8..6a043c8ae1 100644 --- a/en/core-libraries/components/authentication.rst +++ b/en/core-libraries/components/authentication.rst @@ -115,6 +115,12 @@ keys. .. versionadded:: 2.4 +- ``userFields`` The list of fields to fetch from the ``userModel``. This option + is helpful when you have a wide user table and do not need all the columns in + the session. By default all fields are fetched. + + .. versionadded:: 2.6 + To configure different fields for user in ``$components`` array:: // Pass settings in $components array @@ -128,6 +134,7 @@ To configure different fields for user in ``$components`` array:: ) ); + Do not put other Auth configuration keys (like authError, loginAction etc) within the authenticate or Form element. They should be at the same level as the authenticate key. The setup above with other Auth configuration @@ -144,7 +151,10 @@ should look like:: 'authError' => 'Did you really think you are allowed to see that?', 'authenticate' => array( 'Form' => array( - 'fields' => array('username' => 'email') + 'fields' => array( + 'username' => 'my_user_model_username_field', //Default is 'username' in the userModel + 'password' => 'my_user_model_password_field' //Default is 'password' in the userModel + ) ) ) ) @@ -179,18 +189,18 @@ working with a login form could look like:: public function login() { if ($this->request->is('post')) { + // Important: Use login() without arguments! See warning below. if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); // 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' + ); } } @@ -273,7 +283,7 @@ authentication for example uses ``$_SERVER['PHP_AUTH_USER']`` and request, these values are used to re-identify the user and ensure they are valid user. As with authentication object's ``authenticate()`` method the ``getUser()`` method should return an array of user information on success or -``false`` on failure.:: +``false`` on failure. :: public function getUser($request) { $username = env('PHP_AUTH_USER'); @@ -313,7 +323,7 @@ Displaying auth related flash messages In order to display the session error messages that Auth generates, you need to add the following code to your layout. Add the following two lines to the ``app/View/Layouts/default.ctp`` file in the body section -preferable before the content_for_layout line.:: +preferable before the content_for_layout line. :: echo $this->Session->flash(); echo $this->Session->flash('auth'); @@ -486,6 +496,7 @@ calling ``$this->Auth->login()`` with the user data you want to 'login':: $this->request->data['User'], array('id' => $id) ); + unset($this->request->data['User']['password']); $this->Auth->login($this->request->data['User']); return $this->redirect('/users/home'); } @@ -495,6 +506,11 @@ calling ``$this->Auth->login()`` with the user data you want to 'login':: Be sure to manually add the new User id to the array passed to the login method. Otherwise you won't have the user id available. + +.. warning:: + + Be sure to unset password fields before manually passing data into + ``$this->Auth->login()``, or it will get saved in the Session unhashed. Accessing the logged in user ---------------------------- @@ -854,7 +870,7 @@ and authentication mechanics in CakePHP. .. php:attr:: unauthorizedRedirect Controls handling of unauthorized access. By default unauthorized user is - redirected to the referrer URL or ``AuthComponent::$loginAction`` or '/'. + redirected to the referrer URL or ``AuthComponent::$loginRedirect`` or '/'. If set to false a ForbiddenException exception is thrown instead of redirecting. .. php:attr:: request diff --git a/en/core-libraries/components/cookie.rst b/en/core-libraries/components/cookie.rst index 7813e30c8f..6601acbf85 100644 --- a/en/core-libraries/components/cookie.rst +++ b/en/core-libraries/components/cookie.rst @@ -127,7 +127,7 @@ The CookieComponent offers a number of methods for working with Cookies. .. php:method:: read(mixed $key = null) This method is used to read the value of a cookie variable with the - name specified by $key.:: + name specified by $key. :: // Outputs "Larry" echo $this->Cookie->read('name'); diff --git a/en/core-libraries/components/pagination.rst b/en/core-libraries/components/pagination.rst index c5cc29714b..5d698a7e5a 100644 --- a/en/core-libraries/components/pagination.rst +++ b/en/core-libraries/components/pagination.rst @@ -293,7 +293,6 @@ also modify the ``$settings`` property on the PaginatorComponent:: By default all of the typical paging parameters will be converted into GET arguments. - .. note:: You can run into a situation where assigning a value to a nonexistent property will throw errors:: diff --git a/en/core-libraries/components/request-handling.rst b/en/core-libraries/components/request-handling.rst index d45d6ad71d..d9f97c6551 100644 --- a/en/core-libraries/components/request-handling.rst +++ b/en/core-libraries/components/request-handling.rst @@ -310,6 +310,7 @@ You can also set this automatically by using the ``viewClassMap`` setting:: ) )); + .. meta:: :title lang=en: Request Handling :keywords lang=en: handler component,javascript libraries,public components,null returns,model data,request data,content types,file extensions,ajax,meth,content type,array,conjunction,cakephp,insight,php diff --git a/en/core-libraries/components/security-component.rst b/en/core-libraries/components/security-component.rst index fb08eb011b..53fd5b5d49 100644 --- a/en/core-libraries/components/security-component.rst +++ b/en/core-libraries/components/security-component.rst @@ -57,9 +57,9 @@ in the controller. .. php:attr:: blackHoleCallback - A Controller callback that will handle and requests that are - blackholed. A blackhole callback can be any public method on a controllers. - The callback should expect an parameter indicating the type of error:: + A Controller callback that will handle any requests that are + blackholed. A blackhole callback can be any public method on a controller. + The callback should expect a parameter indicating the type of error:: public function beforeFilter() { $this->Security->blackHoleCallback = 'blackhole'; @@ -154,7 +154,6 @@ tracked as well. All of this data is combined and turned into a hash. When a form is submitted, the ``SecurityComponent`` will use the POST data to build the same structure and compare the hash. - .. note:: The SecurityComponent will **not** prevent select options from being @@ -272,7 +271,7 @@ Using CSRF protection Simply by adding the ``SecurityComponent`` to your components array, you can benefit from the CSRF protection it provides. By default CSRF tokens are valid for 30 minutes and expire on use. You can control how long tokens last by setting -csrfExpires on the component.:: +csrfExpires on the component. :: public $components = array( 'Security' => array( diff --git a/en/core-libraries/components/sessions.rst b/en/core-libraries/components/sessions.rst index fbbed0db9d..fbb874e0cc 100644 --- a/en/core-libraries/components/sessions.rst +++ b/en/core-libraries/components/sessions.rst @@ -167,6 +167,7 @@ Creating notification messages any request or user data in your flash messages, you should escape it with :php:func:`h` when formatting your messages. + .. meta:: :title lang=en: Sessions :keywords lang=en: php array,dailyplanet com,configuration documentation,dot notation,feedback messages,reading data,session data,page requests,clark kent,dots,existence,sessions,convenience,cakephp diff --git a/en/core-libraries/events.rst b/en/core-libraries/events.rst index de99bd6e9d..25baaa6329 100644 --- a/en/core-libraries/events.rst +++ b/en/core-libraries/events.rst @@ -33,7 +33,7 @@ The event subsystem is at the heart of Model, Behavior, Controller, View and Helper callbacks. If you've ever used any of them, you are already somewhat familiar with events in CakePHP. -Example event usage +Example Event Usage =================== Let's suppose you are building a Cart plugin, and you'd like to focus on just @@ -73,7 +73,7 @@ that an order has been created. You can then do tasks like send email notifications, update stock, log relevant statistics and other tasks in separate objects that focus on those concerns. -Accessing event managers +Accessing Event Managers ======================== In CakePHP events are triggered against event managers. Event managers are @@ -85,7 +85,7 @@ Each model has a separate event manager, while the View and Controller share one. This allows model events to be self contained, and allow components or controllers to act upon events created in the view if necessary. -Global event manager +Global Event Manager -------------------- In addition to instance level event managers, CakePHP provides a global event @@ -113,10 +113,10 @@ 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. + and fired **before** instance listeners are. After 2.5, global and instance + listeners are fired in priority order. - -Dispatching events +Dispatching Events ================== Once you have obtained an instance of an event manager you can dispatch events @@ -144,14 +144,14 @@ controller events too. The subject class is important because listeners will get immediate access to the object properties and have the chance to inspect or change them on the fly. -Finally, the third argument is any additional event data.This can be any data you consider -useful to pass around so listeners can act upon it. While this can be an argument -of any type, we recommend passing an associative array. +Finally, the third argument is any additional event data.This can be any data +you consider useful to pass around so listeners can act upon it. While this can +be an argument of any type, we recommend passing an associative array. -The :php:meth:`~CakeEventManager::dispatch()` method accepts an event object as an argument -and notifies all subscribed listeners. +The :php:meth:`~CakeEventManager::dispatch()` method accepts an event object as +an argument and notifies all subscribed listeners. -Registering listeners +Registering Listeners ===================== Listeners are the preferred way to register callbacks for an event. This is done by @@ -161,12 +161,14 @@ to register some callbacks. Classes implementing it need to provide the with all event names that the class will handle. To continue our previous example, let's imagine we have a UserStatistic class -responsible for calculating a user's purchasing history, and compiling into global site -statistics. This is a great place to use a listener class. Doing so allows you concentrate the statistics -logic in one place and react to events as necessary. Our ``UserStatistics`` -listener might start out like:: +responsible for calculating a user's purchasing history, and compiling into +global site statistics. This is a great place to use a listener class. Doing so +allows you concentrate the statistics logic in one place and react to events as +necessary. Our ``UserStatistics`` listener might start out like:: + // In app/Lib/Event/UserStatistic.php App::uses('CakeEventListener', 'Event'); + class UserStatistic implements CakeEventListener { public function implementedEvents() { @@ -180,6 +182,7 @@ listener might start out like:: } } + // In a controller or somewhere else where $this->Order is accessible // Attach the UserStatistic object to the Order's event manager $statistics = new UserStatistic(); $this->Order->getEventManager()->attach($statistics); @@ -188,7 +191,33 @@ As you can see in the above code, the ``attach`` function will accept instances of the ``CakeEventListener`` interface. Internally, the event manager will use ``implementedEvents`` to attach the correct callbacks. -Registering anonymous listeners +Registering Global Listeners +---------------------------- + +As shown in the example above, event listeners are conventionally placed in +``app/Lib/Event``. Following this convention allows you to easily locate your +listener classes. It is also recommended that you attach global listeners during +your application bootstrap process:: + + // In app/Config/bootstrap.php + + // Load the global event listeners. + require_once APP . 'Config' . DS . 'events.php' + +An example events bootstrap file for our cart application could look like:: + + // In app/Config/events.php + + // Load event listeners + App::uses('UserStatistic', 'Lib/Event'); + App::uses('ProductStatistic', 'Lib/Event'); + App::uses('CakeEventManager', 'Event'); + + // Attach listeners. + CakeEventManager::instance()->attach(new UserStatistic()); + CakeEventManager::instance()->attach(new ProductStatistic()); + +Registering Anonymous Listeners ------------------------------- While event listener objects are generally a better way to implement listeners, @@ -217,7 +246,7 @@ supports:: .. _event-priorities: -Establishing priorities +Establishing Priorities ----------------------- In some cases you might want to control the order that listeners are invoked. @@ -264,7 +293,7 @@ to use an array for specifying the callable method and the priority preference. The ``callable`` key is an special array entry that the manager will read to know what function in the class it should be calling. -Getting event data as function parameters +Getting Event Data as Function Parameters ----------------------------------------- By default listeners receive the event object as their only parameter. If you @@ -315,7 +344,7 @@ previous example we trigger the ``Model.Order.afterPlace`` event with some data: Any other data type cannot be converted to function parameters, thus not using this option is often the most adequate choice. -Stopping events +Stopping Events --------------- Much like DOM events, you may want to stop an event to prevent additional @@ -362,7 +391,7 @@ To check if an event was stopped, you call the ``isStopped()`` method in the eve In the previous example the order would not get saved if the event is stopped during the ``beforePlace`` process. -Getting event results +Getting Event Results --------------------- Every time a callback returns a value, it gets stored in the ``$result`` @@ -407,7 +436,7 @@ to the next callback. In most of the cases, providing objects as event data or result and directly altering the object is the best solution as the reference is kept the same and modifications are shared across all callback calls. -Removing callbacks and listeners +Removing Callbacks and Listeners -------------------------------- If for any reason you want to remove any callback from the event manager just call @@ -428,7 +457,7 @@ params you used for attaching it:: $this->getEventManager()->detach($myFunction, 'My.event'); // Attaching a CakeEventListener - $listener = new MyEventLister(); + $listener = new MyEventListener(); $this->getEventManager()->attach($listener); // Detaching a single event key from a listener diff --git a/en/core-libraries/global-constants-and-functions.rst b/en/core-libraries/global-constants-and-functions.rst index 38caf4578b..95d694523a 100644 --- a/en/core-libraries/global-constants-and-functions.rst +++ b/en/core-libraries/global-constants-and-functions.rst @@ -54,7 +54,7 @@ such as debugging and translating content. Allows you to override the current domain for a single message lookup. Useful when internationalizing a plugin: - ``echo __d('PluginName', 'This is my plugin');`` + ``echo __d('plugin_name', 'This is my plugin');`` .. php:function:: __dc(string $domain, string $msg, integer $category, mixed $args = null) @@ -129,6 +129,10 @@ such as debugging and translating content. which it was called. Also see :doc:`/development/debugging` +.. php:function:: stackTrace(array $options = array()) + + If the application's DEBUG level is non-zero, the stack trace is printed out. + .. php:function:: env(string $key) Gets an environment variable from available sources. Used as a diff --git a/en/core-libraries/helpers/form.rst b/en/core-libraries/helpers/form.rst index a065674624..1b76905934 100644 --- a/en/core-libraries/helpers/form.rst +++ b/en/core-libraries/helpers/form.rst @@ -424,7 +424,7 @@ field. Internally ``input()`` delegates to other methods in FormHelper. legend and fieldset rendering with the ``fieldset`` and ``legend`` keys. ``$this->Form->inputs(array('legend' => 'My legend'));`` Would generate an input set with a custom legend. You can customize - individual inputs through ``$fields`` as well.:: + individual inputs through ``$fields`` as well. :: echo $this->Form->inputs(array( 'name' => array('label' => 'custom label') @@ -1010,7 +1010,7 @@ Ex: name=data[User][username], id=UserUsername .. php:method:: password(string $fieldName, array $options) - Creates a password field.:: + Creates a password field. :: echo $this->Form->password('password'); @@ -1049,7 +1049,7 @@ Ex: name=data[User][username], id=UserUsername .. php:method:: textarea(string $fieldName, array $options) - Creates a textarea input field.:: + Creates a textarea input field. :: echo $this->Form->textarea('notes'); @@ -1110,7 +1110,7 @@ Ex: name=data[User][username], id=UserUsername Creates a checkbox form element. This method also generates an associated hidden form input to force the submission of data for - the specified field.:: + the specified field. :: echo $this->Form->checkbox('done'); @@ -1163,7 +1163,7 @@ Ex: name=data[User][username], id=UserUsername * ``$attributes['legend']`` Radio elements are wrapped with a legend and fieldset by default. Set ``$attributes['legend']`` to false to remove - them.:: + them. :: $options = array('M' => 'Male', 'F' => 'Female'); $attributes = array('legend' => false); @@ -1462,7 +1462,7 @@ Creating buttons and submit elements
You can also pass a relative or absolute URL to an image for the - caption parameter instead of caption text.:: + caption parameter instead of caption text. :: echo $this->Form->submit('ok.png'); @@ -1538,6 +1538,10 @@ Creating buttons and submit elements the form tag to ``postLink`` content block or you can use option ``block`` to specify a custom block. + .. versionchanged:: 2.6 + The argument ``$confirmMessage`` was deprecated. Use ``confirm`` key + in ``$options`` instead. + Creating date and time inputs ============================= @@ -1667,7 +1671,7 @@ Displaying and checking errors .. php:method:: isFieldError(string $fieldName) Returns true if the supplied $fieldName has an active validation - error.:: + error. :: if ($this->Form->isFieldError('gender')) { echo $this->Form->error('gender'); diff --git a/en/core-libraries/helpers/html.rst b/en/core-libraries/helpers/html.rst index 781ef426ef..1a7662470f 100644 --- a/en/core-libraries/helpers/html.rst +++ b/en/core-libraries/helpers/html.rst @@ -84,7 +84,7 @@ methods of the HtmlHelper and how to use them. If key 'rel' in ``$options`` array is set to 'import' the stylesheet will be imported. This method of CSS inclusion assumes that the CSS file specified - resides inside the /app/webroot/css directory if path doesn't start with a '/'.:: + resides inside the /app/webroot/css directory if path doesn't start with a '/'. :: echo $this->Html->css('forms'); @@ -94,7 +94,7 @@ methods of the HtmlHelper and how to use them. - The first parameter can be an array to include multiple files.:: + The first parameter can be an array to include multiple files. :: echo $this->Html->css(array('forms', 'tables', 'menu')); @@ -115,7 +115,7 @@ methods of the HtmlHelper and how to use them. If you want to include a CSS file which shares a name with a loaded plugin you can do the following. For example if you had a ``Blog`` plugin, and also wanted to include ``app/webroot/css/Blog.common.css``, you would:: - + .. versionchanged:: 2.4 echo $this->Html->css('Blog.common.css', array('plugin' => false)); @@ -262,7 +262,7 @@ methods of the HtmlHelper and how to use them. Builds CSS style definitions based on the keys and values of the array passed to the method. Especially handy if your CSS file is - dynamic.:: + dynamic. :: echo $this->Html->style(array( 'background' => '#633', @@ -280,7 +280,7 @@ methods of the HtmlHelper and how to use them. :param array $options: An array of :term:`html attributes`. Creates a formatted image tag. The path supplied should be relative - to /app/webroot/img/.:: + to /app/webroot/img/. :: echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP')); @@ -291,7 +291,7 @@ methods of the HtmlHelper and how to use them. CakePHP To create an image link specify the link destination using the - ``url`` option in ``$htmlAttributes``.:: + ``url`` option in ``$htmlAttributes``. :: echo $this->Html->image("recipes/6.jpg", array( "alt" => "Brownies", @@ -341,7 +341,7 @@ methods of the HtmlHelper and how to use them. General purpose method for creating HTML links. Use ``$options`` to specify attributes for the element and whether or not the - ``$title`` should be escaped.:: + ``$title`` should be escaped. :: echo $this->Html->link( 'Enter', @@ -373,14 +373,13 @@ methods of the HtmlHelper and how to use them. Dashboard - Specify ``$confirmMessage`` to display a JavaScript ``confirm()`` + Specify ``confirm`` key in options to display a JavaScript ``confirm()`` dialog:: echo $this->Html->link( 'Delete', array('controller' => 'recipes', 'action' => 'delete', 6), - array(), - "Are you sure you wish to delete this recipe?" + array('confirm' => 'Are you sure you wish to delete this recipe?'), ); Will output: @@ -394,7 +393,7 @@ methods of the HtmlHelper and how to use them. Delete - Query strings can also be created with ``link()``.:: + Query strings can also be created with ``link()``. :: echo $this->Html->link('View image', array( 'controller' => 'images', @@ -413,7 +412,7 @@ methods of the HtmlHelper and how to use them. names for ALL parameters in the URL. Using the string syntax for paramters (i.e. "recipes/view/6/comments:false" will result in the colon characters being HTML escaped and the link will not work - as desired.:: + as desired. :: Html->link( @@ -436,7 +435,7 @@ methods of the HtmlHelper and how to use them. HTML special characters in ``$title`` will be converted to HTML entities. To disable this conversion, set the escape option to - false in the ``$options`` array.:: + false in the ``$options`` array. :: Html->link( @@ -455,7 +454,7 @@ methods of the HtmlHelper and how to use them. Setting ``escape`` to false will also disable escaping of attributes of the link. As of 2.4 you can use the option ``escapeTitle`` to disable just - escaping of title and not the attributes.:: + escaping of title and not the attributes. :: Html->link( @@ -475,6 +474,10 @@ methods of the HtmlHelper and how to use them. .. versionchanged:: 2.4 The ``escapeTitle`` option was added. + .. versionchanged:: 2.6 + The argument ``$confirmMessage`` was deprecated. Use ``confirm`` key + in ``$options`` instead. + Also check :php:meth:`HtmlHelper::url` method for more examples of different types of URLs. @@ -657,7 +660,7 @@ methods of the HtmlHelper and how to use them. - The first parameter can be an array to include multiple files.:: + The first parameter can be an array to include multiple files. :: echo $this->Html->script(array('jquery', 'wysiwyg', 'scripts')); @@ -781,7 +784,7 @@ methods of the HtmlHelper and how to use them. :param array $thOptions: An array of :term:`html attributes` for the elements Creates a row of table header cells to be placed inside of - tags.:: + tags. :: echo $this->Html->tableHeaders(array('Date', 'Title', 'Active')); @@ -1047,7 +1050,7 @@ Changing the tags output by HtmlHelper Creating breadcrumb trails with HtmlHelper ========================================== -.. php:method:: getCrumbs(string $separator = '»', string $startText = false) +.. php:method:: getCrumbs(string $separator = '»', string|array|bool $startText = false) CakePHP has the built-in ability to automatically create a breadcrumb trail in your app. To set this up, first add something @@ -1102,7 +1105,7 @@ Creating breadcrumb trails with HtmlHelper .. versionchanged:: 2.3 The 'separator', 'firstClass' and 'lastClass' options were added. - + .. versionchanged:: 2.5 The 'escape' option was added. diff --git a/en/core-libraries/helpers/js.rst b/en/core-libraries/helpers/js.rst index 6856d1e987..3014d3b11f 100644 --- a/en/core-libraries/helpers/js.rst +++ b/en/core-libraries/helpers/js.rst @@ -628,7 +628,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and Create a JavaScript snippet containing an ``alert()`` snippet. By default, ``alert`` does not buffer, and returns the script - snippet.:: + snippet. :: $alert = $this->Js->alert('Hey there'); @@ -636,7 +636,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and Create a JavaScript snippet containing a ``confirm()`` snippet. By default, ``confirm`` does not buffer, and returns the script - snippet.:: + snippet. :: $alert = $this->Js->confirm('Are you sure?'); @@ -644,7 +644,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and Create a JavaScript snippet containing a ``prompt()`` snippet. By default, ``prompt`` does not buffer, and returns the script - snippet.:: + snippet. :: $prompt = $this->Js->prompt('What is your favorite color?', 'blue'); @@ -676,7 +676,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and echo $this->Js->submit('Save', array('update' => '#content')); Will create a submit button with an attached onclick event. The - click event will be buffered by default.:: + click event will be buffered by default. :: echo $this->Js->submit('Save', array( 'update' => '#content', @@ -722,7 +722,7 @@ CakePHP core. Whenever you see separate lists for ``Options`` and with the response. You can use the ``htmlAttributes`` option to add in additional - custom attributes.:: + custom attributes. :: echo $this->Js->link('Page 2', array('page' => 2), array( 'update' => '#content', diff --git a/en/core-libraries/helpers/paginator.rst b/en/core-libraries/helpers/paginator.rst index 1843dd1c32..e52d8e5de7 100644 --- a/en/core-libraries/helpers/paginator.rst +++ b/en/core-libraries/helpers/paginator.rst @@ -140,7 +140,7 @@ Supported options are: current page number wrapped in extra 'a' or 'span' tag. While this method allows a lot of customization for its output. It is -also ok to just call the method without any params.:: +also ok to just call the method without any params. :: echo $this->Paginator->numbers(); @@ -548,7 +548,7 @@ Other Methods :param string $model: Which model to paginate on By default returns a full pagination URL string for use in non-standard - contexts (i.e. JavaScript).:: + contexts (i.e. JavaScript). :: echo $this->Paginator->url(http://github.com/array('sort'%20=%3E%20'title'), true); @@ -596,6 +596,25 @@ Other Methods .. versionadded:: 2.4 The ``param()`` method was added in 2.4. +.. php:method:: meta(array $options = array()) + + Outputs the meta-links for a paginated result set:: + + echo $this->Paginator->meta(); // Example output for page 5 + /* + + */ + + You can also append the output of the meta function to the named block:: + + $this->Paginator->meta(array('block' => true)); + + If true is passed, the "meta" block is used. + +.. versionadded:: 2.6 + The ``meta()`` method was added in 2.6. + + .. meta:: :title lang=en: PaginatorHelper :description lang=en: The Pagination helper is used to output pagination controls such as page numbers and next/previous links. diff --git a/en/core-libraries/helpers/session.rst b/en/core-libraries/helpers/session.rst index 295d0d175b..277554488b 100644 --- a/en/core-libraries/helpers/session.rst +++ b/en/core-libraries/helpers/session.rst @@ -118,6 +118,7 @@ Displaying notifications or flash messages any request or user data in your flash messages, you should escape it with :php:func:`h` when formatting your messages. + .. meta:: :title lang=en: SessionHelper :description lang=en: As a natural counterpart to the Session Component, the Session Helper replicates most of the component's functionality and makes it available in your view. diff --git a/en/core-libraries/helpers/text.rst b/en/core-libraries/helpers/text.rst index 64440b5193..30d121ee3d 100644 --- a/en/core-libraries/helpers/text.rst +++ b/en/core-libraries/helpers/text.rst @@ -23,7 +23,7 @@ truncating long stretches of text. Adds links to the well-formed email addresses in $text, according to any options defined in ``$htmlOptions`` (see - :php:meth:`HtmlHelper::link()`).:: + :php:meth:`HtmlHelper::link()`). :: $myText = 'For more information regarding our world-famous ' . 'pastries and desserts, contact info@example.com'; @@ -69,7 +69,7 @@ truncating long stretches of text. :param string $text: The text to convert. Adds proper

around text where double-line returns are found, and
where single-line returns - are found.:: + are found. :: $myText = 'For more information regarding our world-famous pastries and desserts. @@ -89,6 +89,7 @@ truncating long stretches of text. :start-after: start-string :end-before: end-string + .. meta:: :title lang=en: TextHelper :description lang=en: The Text Helper contains methods to make text more usable and friendly in your views. diff --git a/en/core-libraries/helpers/time.rst b/en/core-libraries/helpers/time.rst index d103f859e2..1e4cd4b9a6 100644 --- a/en/core-libraries/helpers/time.rst +++ b/en/core-libraries/helpers/time.rst @@ -49,6 +49,7 @@ accepts a valid timezone identifier string or an instance of `DateTimeZone` clas :start-after: start-caketime :end-before: end-caketime + .. meta:: :title lang=en: TimeHelper :description lang=en: The Time Helper will help you format time and test time. diff --git a/en/core-libraries/internationalization-and-localization.rst b/en/core-libraries/internationalization-and-localization.rst index 045cf5c25e..1d8a4ebb96 100644 --- a/en/core-libraries/internationalization-and-localization.rst +++ b/en/core-libraries/internationalization-and-localization.rst @@ -85,7 +85,7 @@ etc.) cake will use them if appropriate. Remember that po files are useful for short messages, if you find you want to translate long paragraphs, or even whole pages - you -should consider implementing a different solution. e.g.:: +should consider implementing a different solution. e.g. :: // App Controller Code. public function beforeFilter() { @@ -116,7 +116,7 @@ You can find these files for few popular languages from the official `Localized repo. Internationalizing CakePHP Plugins -=================================== +================================== If you want to include translation files within your application you'll need to follow a few conventions. @@ -143,6 +143,18 @@ The reason for that is that CakePHP will use the lower cased and underscored plugin name to compare it to the translation domain and is going to look into the plugin if there is a match for the given translation file. +Controlling the Translation Order +================================= + +The Configure value ``I18n.preferApp`` can be used to control the order of translations. +If set to true in bootstrap it will prefer the app translations over any plugins' ones:: + + Configure::write('I18n.preferApp', true); + +It defaults to ``false``. + +.. versionadded:: 2.6 + Localization in CakePHP ======================= @@ -209,6 +221,7 @@ command ``locale -a`` in a terminal. Translating model validation errors =================================== + CakePHP will automatically extract the validation error when you are using the :doc:`i18n console task `. By default, the default domain is used. This can be overwritten by setting the ``$validationDomain`` property in your model:: @@ -239,6 +252,7 @@ Which will do the following internal call:: __d('validation', 'Username should be between %d and %d characters', array(2, 10)); + .. meta:: :title lang=en: Internationalization & Localization :keywords lang=en: internationalization localization,internationalization and localization,localization features,language application,gettext,l10n,daunting task,adaptation,pot,i18n,audience,translation,languages diff --git a/en/core-libraries/logging.rst b/en/core-libraries/logging.rst index ca48bbc0ba..215025cf64 100644 --- a/en/core-libraries/logging.rst +++ b/en/core-libraries/logging.rst @@ -48,7 +48,7 @@ DatabaseLog would look like:: When configuring a log stream the ``engine`` parameter is used to locate and load the log handler. All of the other configuration -properties are passed to the log stream's constructor as an array.:: +properties are passed to the log stream's constructor as an array. :: App::uses('BaseLog', 'Log/Engine'); @@ -415,6 +415,7 @@ appropriate log level. .. php:staticmethod:: debug($message, $scope = array()) .. php:staticmethod:: info($message, $scope = array()) + .. meta:: :title lang=en: Logging :description lang=en: Log CakePHP data to the disk to help debug your application over longer periods of time. diff --git a/en/core-utility-libraries/app.rst b/en/core-utility-libraries/app.rst index 181fb237f9..d5bb60c159 100644 --- a/en/core-utility-libraries/app.rst +++ b/en/core-utility-libraries/app.rst @@ -209,7 +209,7 @@ Finding which objects CakePHP knows about //returns array('PagesController', 'BlogController'); App::objects('Controller'); - You can also search only within a plugin's objects by using the plugin dot syntax.:: + You can also search only within a plugin's objects by using the plugin dot syntax. :: // returns array('MyPluginPost', 'MyPluginComment'); App::objects('MyPlugin.Model'); @@ -320,7 +320,7 @@ with ``App::build()``:: // Load the class ClassInSomePackage in // app/Vendor/SomePackage/ClassInSomePackage.php - App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'SomePackage'))); + App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'SomePackage' . DS))); App::uses('ClassInSomePackage', 'Vendor'); Your vendor files may not follow conventions, have a class that differs from @@ -406,6 +406,7 @@ App Init/Load/Shutdown Methods Object destructor. Writes cache file if changes have been made to the ``$_map``. + .. meta:: :title lang=en: App Class :keywords lang=en: compatible implementation,model behaviors,path management,loading files,php class,class loading,model behavior,class location,component model,management class,autoloader,classname,directory location,override,conventions,lib,textile,cakephp,php classes,loaded diff --git a/en/core-utility-libraries/email.rst b/en/core-utility-libraries/email.rst index c863ab7027..f8a105d390 100644 --- a/en/core-utility-libraries/email.rst +++ b/en/core-utility-libraries/email.rst @@ -404,20 +404,24 @@ Check the list of :ref:`configurations ` to see all accept Sending emails from CLI -======================== +======================= .. versionchanged:: 2.2 + The ``domain()`` method was added in 2.2 When sending emails within a CLI script (Shells, Tasks, ...) you should manually -set the domain name for CakeEmail to use. It will serve as the host name for the -message id (since there is no host name in a CLI environment):: +set the domain name for CakeEmail to use. The domain name is used as the host +name for the message id (since there is no host name in a CLI environment):: $Email->domain('www.example.org'); // Results in message ids like ```` (valid) // instead of ``` (invalid) -A valid message id can help to prevent emails ending up in spam folders. +A valid message id can help to prevent emails ending up in spam folders. If you +are generating links in your email bodies you will also need to set the +``App.fullBaseUrl`` configure value. + .. meta:: :title lang=en: CakeEmail diff --git a/en/core-utility-libraries/file-folder.rst b/en/core-utility-libraries/file-folder.rst index e5039986de..d686bf5110 100644 --- a/en/core-utility-libraries/file-folder.rst +++ b/en/core-utility-libraries/file-folder.rst @@ -566,7 +566,6 @@ File API Get the file's mimetype, returns false on failure. - .. php:method:: replaceText( $search, $replace ) :rtype: boolean @@ -580,6 +579,7 @@ File API Better explain how to use each method with both classes. + .. meta:: :title lang=en: Folder & File :description lang=en: The Folder and File utilities are convenience classes to help you read, write, and append to files; list files within a folder and other common directory related tasks. diff --git a/en/core-utility-libraries/hash.rst b/en/core-utility-libraries/hash.rst index 39cfd53192..2a650000d8 100644 --- a/en/core-utility-libraries/hash.rst +++ b/en/core-utility-libraries/hash.rst @@ -74,13 +74,18 @@ Attribute Matching Types .. versionchanged:: 2.5 Matcher support was added to ``insert()`` and ``remove()``. -.. php:staticmethod:: get(array $data, $path) +.. php:staticmethod:: get(array $data, $path, $default = null) :rtype: mixed ``get()`` is a simplified version of ``extract()``, it only supports direct path expressions. Paths with ``{n}``, ``{s}`` or matchers are not supported. Use ``get()`` when you want exactly one value out of an array. + The optional third argument will be returned if the requested path is not + found in the array. + + .. versionchanged:: 2.5 + The optional third argument ``$default = null`` was added. .. php:staticmethod:: extract(array $data, $path) @@ -135,7 +140,7 @@ Attribute Matching Types :rtype: array - Removes all elements from an array that match $path.:: + Removes all elements from an array that match $path. :: $a = array( 'pages' => array('name' => 'page'), @@ -166,7 +171,7 @@ Attribute Matching Types and optionally $valuePath as path to get the values. If $valuePath is not specified, or doesn't match anything, values will be initialized to null. You can optionally group the values by what is obtained when following the - path specified in $groupPath.:: + path specified in $groupPath. :: $a = array( array( @@ -421,7 +426,7 @@ Attribute Matching Types :rtype: array Filters empty elements out of array, excluding '0'. You can also supply a - custom $callback to filter the array elements. You callback should return + custom $callback to filter the array elements. Your callback should return ``false`` to remove elements from the resulting array:: $data = array( diff --git a/en/core-utility-libraries/httpsocket.rst b/en/core-utility-libraries/httpsocket.rst index d0711703f1..a53fcb21cf 100644 --- a/en/core-utility-libraries/httpsocket.rst +++ b/en/core-utility-libraries/httpsocket.rst @@ -345,7 +345,6 @@ As part of auth configuration, you can configure proxy authentication. You can create your customized method to proxy authentication in the same class of authentication. For example:: - class YourMethodAuthentication { /** @@ -378,7 +377,6 @@ authentication. For example:: ``HttpSocket::configAuth()``. - .. meta:: :title lang=en: HttpSocket :keywords lang=en: array name,array data,query parameter,query string,php class,string query,test type,string data,google,query results,webservices,apis,parameters,cakephp,meth,search results diff --git a/en/core-utility-libraries/number.rst b/en/core-utility-libraries/number.rst index 47ae7d45e2..5bfe681e5d 100644 --- a/en/core-utility-libraries/number.rst +++ b/en/core-utility-libraries/number.rst @@ -174,7 +174,7 @@ automatically echo the output into the view. This method displays a number with the specified amount of precision (decimal places). It will round in order to maintain the - level of precision defined.:: + level of precision defined. :: // called as NumberHelper echo $this->Number->precision(456.91873645, 2); @@ -186,7 +186,6 @@ automatically echo the output into the view. App::uses('CakeNumber', 'Utility'); echo CakeNumber::precision(456.91873645, 2); - .. php:method:: toPercentage(mixed $number, int $precision = 2, array $options = array()) :param float $number: The value to covert. @@ -203,7 +202,7 @@ automatically echo the output into the view. Like precision(), this method formats a number according to the supplied precision (where numbers are rounded to meet the given precision). This method also expresses the number as a percentage - and prepends the output with a percent sign.:: + and prepends the output with a percent sign. :: // Called as NumberHelper. Output: 45.69% echo $this->Number->toPercentage(45.691873645); @@ -359,6 +358,7 @@ automatically echo the output into the view. .. end-cakenumber + .. meta:: :title lang=en: NumberHelper :description lang=en: The Number Helper contains convenience methods that enable display numbers in common formats in your views. diff --git a/en/core-utility-libraries/router.rst b/en/core-utility-libraries/router.rst index dd54cb042f..bd6223b4ec 100644 --- a/en/core-utility-libraries/router.rst +++ b/en/core-utility-libraries/router.rst @@ -10,7 +10,6 @@ Read more about ways to :ref:`configure the Router ` and the :php:class:`Router` class. - .. meta:: :title lang=en: Router :keywords lang=en: array controller,php class,indexes,urls,configure router,parameters diff --git a/en/core-utility-libraries/security.rst b/en/core-utility-libraries/security.rst index 78d2ed2c27..885241e1ad 100644 --- a/en/core-utility-libraries/security.rst +++ b/en/core-utility-libraries/security.rst @@ -160,11 +160,11 @@ Security API Validate authorization hash. - .. todo:: Add more examples :| + .. meta:: :title lang=en: Security :keywords lang=en: security api,secret password,cipher text,php class,class security,text key,security library,object instance,security measures,basic security,security level,string type,fallback,hash,data security,singleton,inactivity,php encrypt,implementation,php security diff --git a/en/core-utility-libraries/set.rst b/en/core-utility-libraries/set.rst index 5ff721ca7b..47252f19e4 100644 --- a/en/core-utility-libraries/set.rst +++ b/en/core-utility-libraries/set.rst @@ -324,7 +324,7 @@ available. its keys, and optionally $path2 as path to get the values. If $path2 is not specified, all values will be initialized to null (useful for Set::merge). You can optionally group the values by - what is obtained when following the path specified in $groupPath.:: + what is obtained when following the path specified in $groupPath. :: $result = Set::combine(array(), '{n}.User.id', '{n}.User.Data'); // $result == array(); @@ -891,7 +891,7 @@ available. :rtype: array - Inserts $data into an array as defined by $path.:: + Inserts $data into an array as defined by $path. :: $a = array( 'pages' => array('name' => 'page') @@ -1047,7 +1047,7 @@ available. :rtype: boolean Set::matches can be used to see if a single item or a given xpath - match certain conditions.:: + match certain conditions. :: $a = array( array('Article' => array('id' => 1, 'title' => 'Article 1')), @@ -1213,7 +1213,7 @@ available. :rtype: array - Normalizes a string or array list.:: + Normalizes a string or array list. :: $a = array( 'Tree', @@ -1461,7 +1461,7 @@ available. Set::reverse is basically the opposite of :php:func:`Set::map`. It converts an object into an array. If $object is not an object, reverse will - simply return $object.:: + simply return $object. :: $result = Set::reverse(null); // Null @@ -1591,6 +1591,7 @@ available. ); */ + .. meta:: :title lang=en: Set :keywords lang=en: array array,path array,array name,numeric key,regular expression,result set,person name,brackets,syntax,cakephp,elements,php,set path diff --git a/en/core-utility-libraries/string.rst b/en/core-utility-libraries/string.rst index c27cd14d08..5f695a6446 100644 --- a/en/core-utility-libraries/string.rst +++ b/en/core-utility-libraries/string.rst @@ -259,7 +259,7 @@ use the ``String`` class:: with a number of characters on each side determined by ``$radius``, and prefix/suffix with ``$ellipsis``. This method is especially handy for search results. The query string or keywords can be shown within - the resulting document.:: + the resulting document. :: // called as TextHelper echo $this->Text->excerpt($lastParagraph, 'method', 50, '...'); @@ -279,7 +279,7 @@ use the ``String`` class:: :param string $and: The word used for the last join. Creates a comma-separated list where the last two items are joined - with 'and'.:: + with 'and'. :: // called as TextHelper echo $this->Text->toList($colors); @@ -294,6 +294,7 @@ use the ``String`` class:: .. end-string + .. meta:: :title lang=en: String :keywords lang=en: array php,array name,string options,data options,result string,class string,string data,string class,placeholders,default method,key value,markup,rfc,replacements,convenience,templates diff --git a/en/core-utility-libraries/time.rst b/en/core-utility-libraries/time.rst index b61db029ab..b31dc81074 100644 --- a/en/core-utility-libraries/time.rst +++ b/en/core-utility-libraries/time.rst @@ -32,7 +32,7 @@ Formatting :rtype: integer Converts given time (in server's time zone) to user's local - time, given his/her timezone.:: + time, given his/her timezone. :: // called via TimeHelper echo $this->Time->convert(time(), 'Asia/Jakarta'); @@ -166,7 +166,7 @@ Formatting :rtype: integer - Will return the date as an integer set to Greenwich Mean Time (GMT).:: + Will return the date as an integer set to Greenwich Mean Time (GMT). :: // called via TimeHelper echo $this->Time->gmt('Aug 22, 2011'); @@ -429,6 +429,7 @@ Testing Time .. end-caketime + .. meta:: :title lang=en: CakeTime :description lang=en: CakeTime class helps you format time and test time. diff --git a/en/core-utility-libraries/xml.rst b/en/core-utility-libraries/xml.rst index 9ce2f253ae..f474bc6ba1 100644 --- a/en/core-utility-libraries/xml.rst +++ b/en/core-utility-libraries/xml.rst @@ -3,18 +3,17 @@ Xml .. php:class:: Xml -The Xml class was all refactored. As PHP 5 have +The Xml class was all refactored. As PHP 5 has `SimpleXML `_ and -`DOMDocument `_, the CakePHP doesn't need to -re-implement an XML parser. The new XML class will basically transform an array +`DOMDocument `_, CakePHP doesn't need to +re-implement an XML parser. The new XML class will transform an array into SimpleXMLElement or DOMDocument objects, and vice versa. - Importing data to Xml class =========================== In CakePHP 1.3 you can pass array, XML as string, URL or file path to the -constructor of Xml class to import data. In CakePHP 2.0 you can do it using +constructor of the Xml class to import data. In CakePHP 2.0 you can do it using :php:meth:`Xml::build()`. Unless the return is an Xml object, it will return a SimpleXMLElement or DOMDocument object (depending of your options parameter - default is SimpleXMLElement). Below the samples how to import data from URL:: @@ -83,7 +82,6 @@ If your input is invalid the Xml class will throw a Exception:: `SimpleXML `_ implement different API's. Be sure to use the correct methods on the object you request from Xml. - Transforming a XML string in array ================================== diff --git a/en/deployment.rst b/en/deployment.rst index ac551868fd..df86bd3414 100644 --- a/en/deployment.rst +++ b/en/deployment.rst @@ -75,6 +75,7 @@ them for production. For example like this:: ln -s app/Plugin/YourPlugin/webroot/css/yourplugin.css app/webroot/css/yourplugin.css + .. meta:: :title lang=en: Deployment :keywords lang=en: stack traces,application extensions,set document,installation documentation,development features,generic error,document root,func,debug,caches,error messages,configuration files,webroot,deployment,cakephp,applications diff --git a/en/development.rst b/en/development.rst index 284b134773..f138c15447 100644 --- a/en/development.rst +++ b/en/development.rst @@ -19,7 +19,6 @@ debugging, and testing will be covered. development/dispatch-filters - .. meta:: :title lang=en: Development :keywords lang=en: development sessions,debugging,exceptions diff --git a/en/development/configuration.rst b/en/development/configuration.rst index b7e0e4cffd..077c68b8e3 100644 --- a/en/development/configuration.rst +++ b/en/development/configuration.rst @@ -213,9 +213,9 @@ paths where CakePHP will look for classes:: Core Configuration ================== -Each application in CakePHP contains a configuration file to -determine CakePHP's internal behavior. -``app/Config/core.php``. This file is a collection of Configure class +Each application in CakePHP contains a configuration file, +``app/Config/core.php``, to determine CakePHP's internal behavior. +This file is a collection of Configure class variable definitions and constant definitions that determine how your application behaves. Before we dive into those particular variables, you'll need to be familiar with :php:class:`Configure`, CakePHP's @@ -231,10 +231,11 @@ how it affects your CakePHP application. debug Changes CakePHP debugging output. - 0 = Production mode. No output. - 1 = Show errors and warnings. - 2 = Show errors, warnings, and SQL. [SQL log is only shown when you - add $this->element('sql\_dump') to your view or layout.] + + * 0 = Production mode. No output. + * 1 = Show errors and warnings. + * 2 = Show errors, warnings, and SQL. [SQL log is only shown when you + add $this->element('sql\_dump') to your view or layout.] Error Configure the Error handler used to handle errors for your application. @@ -386,7 +387,6 @@ they are read on every request. By default both of these configurations expire e As with all cached data stored in :php:class:`Cache` you can clear data using :php:meth:`Cache::clear()`. - Configure Class =============== @@ -415,7 +415,7 @@ anywhere within your application, in a static context:: .. php:staticmethod:: write($key, $value) - :param string $key: The key to write, can use be a :term:`dot notation` value. + :param string $key: The key to write, can be a :term:`dot notation` value. :param mixed $value: The value to store. Use ``write()`` to store data in the application's configuration:: @@ -445,7 +445,7 @@ anywhere within your application, in a static context:: .. php:staticmethod:: read($key = null) - :param string $key: The key to read, can use be a :term:`dot notation` value + :param string $key: The key to read, can be a :term:`dot notation` value Used to read configuration data from the application. Defaults to CakePHP's important debug value. If a key is supplied, the data is @@ -474,7 +474,7 @@ anywhere within your application, in a static context:: .. php:staticmethod:: delete($key) - :param string $key: The key to delete, can use be a :term:`dot notation` value + :param string $key: The key to delete, can be a :term:`dot notation` value Used to delete information from the application's configuration:: @@ -527,7 +527,7 @@ using :php:meth:`Configure::config()`:: You can have multiple readers attached to Configure, each reading different kinds of configuration files, or reading from different types of sources. You can interact with attached readers -using a few other methods on Configure. To see check which reader +using a few other methods on Configure. To see which reader aliases are attached you can use :php:meth:`Configure::configured()`:: // Get the array of aliases for attached readers. @@ -644,9 +644,9 @@ This interface defines a read method, as the only required method. If you really like XML files, you could create a simple Xml config reader for you application:: - // in app/Lib/Configure/XmlReader.php + // in app/Lib/Configure/MyXmlReader.php App::uses('Xml', 'Utility'); - class XmlReader implements ConfigReaderInterface { + class MyXmlReader implements ConfigReaderInterface { public function __construct($path = null) { if (!$path) { $path = APP . 'Config' . DS; @@ -667,12 +667,18 @@ reader for you application:: In your ``app/Config/bootstrap.php`` you could attach this reader and use it:: - App::uses('XmlReader', 'Configure'); - Configure::config('xml', new XmlReader()); + App::uses('MyXmlReader', 'Configure'); + Configure::config('xml', new MyXmlReader()); ... Configure::load('my_xml'); +.. warning:: + + It is not a good idea to call your custom configure class ``XmlReader`` because that + class name is an internal PHP one already: + `XMLReader `_ + The ``read()`` method of a config reader, must return an array of the configuration information that the resource named ``$key`` contains. @@ -688,7 +694,7 @@ that the resource named ``$key`` contains. This method should load/parse the configuration data identified by ``$key`` and return an array of data in the file. -.. php:method:: dump($key) +.. php:method:: dump($key, $data) :param string $key: The identifier to write to. :param array $data: The data to dump. @@ -702,7 +708,7 @@ that the resource named ``$key`` contains. Thrown when errors occur when loading/storing/restoring configuration data. :php:interface:`ConfigReaderInterface` implementations should throw this - error when they encounter an error. + exception when they encounter an error. Built-in Configuration readers ------------------------------ @@ -728,14 +734,14 @@ Built-in Configuration readers Files without ``$config`` will cause an :php:exc:`ConfigureException` - Load your custom configuration file by inserting the following in app/Config/bootstrap.php: + Load your custom configuration file by inserting the following in app/Config/bootstrap.php:: Configure::load('customConfig'); .. php:class:: IniReader Allows you to read configuration files that are stored as plain .ini files. - The ini files must be compatible with php's ``parse_ini_file`` function, and + The ini files must be compatible with PHP's ``parse_ini_file`` function, and benefit from the following improvements * dot separated values are expanded into arrays. diff --git a/en/development/debugging.rst b/en/development/debugging.rst index d33ef67290..63b8c0f04a 100644 --- a/en/development/debugging.rst +++ b/en/development/debugging.rst @@ -113,7 +113,7 @@ set to a value greater than 0. Returns the current stack trace. Each line of the trace includes the calling method, including which file and line the call - originated from.:: + originated from. :: //In PostsController::index() pr(Debugger::trace()); @@ -137,7 +137,7 @@ set to a value greater than 0. Grab an excerpt from the file at $path (which is an absolute filepath), highlights line number $line with $context number of - lines around it.:: + lines around it. :: pr(Debugger::excerpt(ROOT . DS . LIBS . 'debugger.php', 321, 2)); @@ -205,6 +205,14 @@ 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. +xdebug +====== + +If your environment supplies the xdebug php extension, fatal errors will show +additional xdebug stack trace details. Details about +`xdebug `_ . + + .. meta:: :title lang=en: Debugging :description lang=en: Debugging CakePHP with the Debugger class, logging, basic debugging and using the DebugKit plugin. diff --git a/en/development/dispatch-filters.rst b/en/development/dispatch-filters.rst index bb0ac0f698..cc7857daea 100644 --- a/en/development/dispatch-filters.rst +++ b/en/development/dispatch-filters.rst @@ -238,6 +238,7 @@ got a valid reason to do so, then you have a clean solution at hand. Keep in mind that not everything needs to be a filter, `Controllers` and `Components` are usually a more accurate choice for adding any request handling code to your app. + .. meta:: :title lang=en: Dispatcher Filters :description lang=en: Dispatcher filters are a middleware layer for CakePHP allowing to alter the request or response before it is sent diff --git a/en/development/errors.rst b/en/development/errors.rst index 94281c1085..45effa373e 100644 --- a/en/development/errors.rst +++ b/en/development/errors.rst @@ -80,7 +80,7 @@ need to be done:: This class/method will print out 'There has been an error!' each time an error occurs. Since you can define an error handler as any callback type, you could -use an anonymous function if you are using PHP5.3 or greater.:: +use an anonymous function if you are using PHP5.3 or greater. :: Configure::write('Error.handler', function($code, $description, $file = null, $line = null, $context = null) { @@ -126,6 +126,7 @@ If you do not want to show the cake error page, you can override it like:: If you want to keep the default fatal error behavior, you can call ``ErrorHandler::handleFatalError()`` from your custom handler. + .. meta:: :title lang=en: Error Handling :keywords lang=en: stack traces,error constants,error array,default displays,anonymous functions,error handlers,default error,error level,exception handler,php error,error handler,write error,core classes,exception handling,configuration error,application code,callback,custom error,exceptions,bitmasks,fatal error diff --git a/en/development/exceptions.rst b/en/development/exceptions.rst index 9e956c5ed2..8496ff3db2 100644 --- a/en/development/exceptions.rst +++ b/en/development/exceptions.rst @@ -36,7 +36,6 @@ you to take full control over the exception handling process, while changing the renderer allows you to easily change the output type/contents, as well as add in application specific exception handling. - .. versionadded:: 2.2 The ``Exception.consoleHandler`` option was added in 2.2. @@ -213,7 +212,7 @@ and log the exception. .. _error-views: Exception Renderer -========================= +================== .. php:class:: ExceptionRenderer(Exception $exception) @@ -271,7 +270,6 @@ as a string or use its ``getMessage()`` method you will get ``Seems that Pointy is missing.``. This allows you easily and quickly create your own rich development errors, just like CakePHP uses internally. - Creating custom status codes ---------------------------- @@ -289,7 +287,6 @@ custom exception, that template will be used in development mode. If you'd like your own exception handling logic even in production, see the next section. - Extending and implementing your own Exception handlers ====================================================== @@ -375,7 +372,7 @@ If you don't want to take control of the exception handling, but want to change how exceptions are rendered you can use ``Configure::write('Exception.renderer', 'AppExceptionRenderer');`` to choose a class that will render exception pages. By default :php:class`ExceptionRenderer` is used. Your custom exception -renderer class should be placed in ``app/Lib/Error``. Or an ``Error``` +renderer class should be placed in ``app/Lib/Error``. Or an ``Error`` directory in any bootstrapped Lib path. In a custom exception rendering class you can provide specialized handling for application specific errors:: diff --git a/en/development/rest.rst b/en/development/rest.rst index 61c87bf2d8..b51e75bf30 100644 --- a/en/development/rest.rst +++ b/en/development/rest.rst @@ -235,6 +235,7 @@ You can provide ``connectOptions`` key in the ``$options`` array for ) )); + .. meta:: :title lang=en: REST :keywords lang=en: application programmers,default routes,core functionality,result format,mashups,recipe database,request method,easy access,config,soap,recipes,logic,audience,cakephp,running,api diff --git a/en/development/routing.rst b/en/development/routing.rst index f6611814f4..a3ccfabc0a 100644 --- a/en/development/routing.rst +++ b/en/development/routing.rst @@ -45,7 +45,7 @@ that CakePHP comes configured with a default set of routes. CakePHP's default routing will get you pretty far in any application. You can access an action directly via the URL by putting its name in the request. You can also pass parameters to -your controller actions using the URL.:: +your controller actions using the URL. :: URL pattern default routes: http://example.com/controller/action/param1/param2/param3 @@ -538,7 +538,7 @@ Passed Arguments Passed arguments are additional arguments or path segments that are used when making a request. They are often used to pass parameters -to your controller methods.:: +to your controller methods. :: http://localhost/calendars/view/recent/mark @@ -930,7 +930,7 @@ Router API parameters and supplying the name of a custom routing class. Routes are a way of connecting request URLs to objects in your application. - At their core routes are a set or regular expressions that are used to + At their core routes are a set of regular expressions that are used to match requests to destinations. Examples:: @@ -939,8 +939,8 @@ Router API The first parameter will be used as a controller name while the second is used as the action name. The '/\*' syntax makes this route greedy in that - it will match requests like `/posts/index` as well as requests like - ``/posts/edit/1/foo/bar`` .:: + it will match requests like ``/posts/index`` as well as requests like + ``/posts/edit/1/foo/bar`` . :: Router::connect( '/home-page', @@ -948,7 +948,7 @@ Router API ); The above shows the use of route parameter defaults. And providing routing - parameters for a static route.:: + parameters for a static route. :: Router::connect( '/:lang/:controller/:action/:id', @@ -1031,8 +1031,8 @@ Router API * ``base`` - Set to false to remove the base path from the generated URL. If your application is not in the root directory, this can be used to - generate URLs that are 'cake relative'. CakePHP relative URLs are required - when using requestAction. + generate URLs that are 'CakePHP relative'. CakePHP relative URLs are + required when using requestAction. * ``?`` - Takes an array of query string parameters * ``#`` - Allows you to set URL hash fragments. * ``full_base`` - If true the value of :php:meth:`Router::fullBaseUrl()` will diff --git a/en/development/sessions.rst b/en/development/sessions.rst index cb50344f24..e0c2e3658f 100644 --- a/en/development/sessions.rst +++ b/en/development/sessions.rst @@ -7,7 +7,6 @@ requests and store persistent data for specific users. Unlike Cookies, session data is not available on the client side. Usage of ``$_SESSION`` is generally avoided in CakePHP, and instead usage of the Session classes is preferred. - Session Configuration ===================== @@ -140,7 +139,6 @@ You can also use session handlers from inside plugins. By setting the engine to something like ``MyPlugin.PluginSessionHandler``. This will load and use the ``PluginSessionHandler`` class from inside the MyPlugin of your application. - CakeSessionHandlerInterface --------------------------- @@ -303,7 +301,6 @@ also easy. In your ``core.php`` make the session block look like the following:: Now our application will start using our custom session handler for reading & writing session data. - .. php:class:: CakeSession Reading & writing session data diff --git a/en/development/testing.rst b/en/development/testing.rst index 0b23ff4b6d..de796af4a0 100644 --- a/en/development/testing.rst +++ b/en/development/testing.rst @@ -12,13 +12,23 @@ Installing PHPUnit CakePHP uses PHPUnit as its underlying test framework. PHPUnit is the de-facto standard for unit testing in PHP. It offers a deep and powerful set of features -for making sure your code does what you think it does. PHPUnit can be installed -through the `pear installer `_. To install PHPUnit run the -following:: +for making sure your code does what you think it does. + +Install via Composer +-------------------- +The newer versions of phpunit do not currently work with cake:: + + "phpunit/phpunit": "3.7.32" + +Install via .phar Package +------------------------- + +You can also download the file directly. Just make sure you get the correct version from https://phar.phpunit.de/. +Make sure /usr/local/bin is in your php.ini file's include_path:: - pear upgrade PEAR - pear config-set auto_discover 1 - pear install pear.phpunit.de/PHPUnit-3.7.32 + wget https://phar.phpunit.de/phpunit-3.7.32.phar + chmod +x phpunit.phar + mv phpunit.phar /usr/local/bin/phpunit .. note:: @@ -27,11 +37,6 @@ following:: Depending on your system's configuration, you may need to run the previous commands with ``sudo`` -Once PHPUnit is installed with the PEAR installer, you should confirm that the -PHPUnit libraries are on PHP's ``include_path``. You can do this by checking -your php.ini file and making sure that the PHPUnit files are in one of the -``include_path`` directories. - .. tip:: All output is swallowed when using PHPUnit 3.6+. Add the ``--debug`` @@ -152,7 +157,7 @@ following:: } Calling the parent method is important in test cases, as CakeTestCase::setUp() -does a number things like backing up the values in :php:class:`Configure` and, +does a number of things like backing up the values in :php:class:`Configure` and, storing the paths in :php:class:`App`. Next, we'll fill out the test method. We'll use some assertions to ensure that @@ -1237,7 +1242,7 @@ Creating Tests for Plugins ========================== Tests for plugins are created in their own directory inside the -plugins folder.:: +plugins folder. :: /app /Plugin @@ -1345,7 +1350,6 @@ You should be able to run a build now. Check the console output and make any necessary changes to get a passing build. - .. meta:: :title lang=en: Testing :keywords lang=en: web runner,phpunit,test database,database configuration,database setup,database test,public test,test framework,running one,test setup,de facto standard,pear,runners,array,databases,cakephp,php,integration diff --git a/en/epub-contents.rst b/en/epub-contents.rst index 56fad01baf..9e537ff858 100644 --- a/en/epub-contents.rst +++ b/en/epub-contents.rst @@ -4,8 +4,8 @@ Contents .. toctree:: :maxdepth: 3 - installation getting-started + installation cakephp-overview controllers views @@ -15,12 +15,15 @@ Contents console-and-shells development deployment - tutorials-and-examples + tutorials-and-examples/blog-auth-example/auth + tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application + tutorials-and-examples/simple-acl-controlled-application/part-two contributing appendices .. todolist:: + .. meta:: :title lang=en: Contents :keywords lang=en: core libraries,ref search,shells,deployment,appendices,glossary,models diff --git a/en/getting-started/cakephp-conventions.rst b/en/getting-started/cakephp-conventions.rst index f8c07b7210..f1d756eebc 100644 --- a/en/getting-started/cakephp-conventions.rst +++ b/en/getting-started/cakephp-conventions.rst @@ -108,8 +108,7 @@ classes you would typically use in a CakePHP application: - The Helper class **BestEverHelper** would be found in a file named **BestEverHelper.php** -Each file would be located in the appropriate folder in your app folder. - +Each file would be located in the appropriate folder in your app folder. Model and Database Conventions ============================== @@ -134,7 +133,7 @@ Foreign keys in hasMany, belongsTo or hasOne relationships are recognized by default as the (singular) name of the related table followed by \_id. So if a Baker hasMany Cake, the cakes table will refer to the bakers table via a baker\_id foreign key. For a -table like category\_types whose name contains multiple words, +table like category\_types whose name contains multiple words, the foreign key would be category\_type\_id. Join tables, used in hasAndBelongsToMany (HABTM) relationships @@ -152,13 +151,14 @@ single-field primary key if you want to use that table's model. CakePHP does not support composite primary keys. If you want to directly manipulate your join table data, use direct :ref:`query ` calls or add a primary key to act on it -as a normal model. For example: +as a normal model. For example:: CREATE TABLE posts_tags ( - id INT(10) NOT NULL AUTO_INCREMENT, - post_id INT(10) NOT NULL, - tag_id INT(10) NOT NULL, - PRIMARY KEY(id)); + id INT(10) NOT NULL AUTO_INCREMENT, + post_id INT(10) NOT NULL, + tag_id INT(10) NOT NULL, + 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 diff --git a/en/index.rst b/en/index.rst index 7c95e2f9cd..b7b5d683c3 100644 --- a/en/index.rst +++ b/en/index.rst @@ -66,7 +66,6 @@ If you're stuck, there are a number of places :doc:`you can get help `. - .. meta:: :title lang=en: .. CakePHP Cookbook documentation master file, created by :keywords lang=en: doc models,documentation master,presentation layer,documentation project,quickstart,original source,sphinx,liking,cookbook,validity,conventions,validation,cakephp,accuracy,storage and retrieval,heart,blog,project hope diff --git a/en/installation/advanced-installation.rst b/en/installation/advanced-installation.rst index 1abafd8f85..4e8a822c10 100644 --- a/en/installation/advanced-installation.rst +++ b/en/installation/advanced-installation.rst @@ -21,7 +21,6 @@ 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 ================================ @@ -35,7 +34,7 @@ would look like the following:: { "name": "example-app", "require": { - "cakephp/cakephp": "2.5.*" + "cakephp/cakephp": "2.6.*" }, "config": { "vendor-dir": "Vendor/" @@ -120,7 +119,6 @@ it. To configure your CakePHP installation, you'll need to make some changes to the following files. - - /app/webroot/index.php - /app/webroot/test.php (if you use the :doc:`Testing ` feature.) diff --git a/en/installation/url-rewriting.rst b/en/installation/url-rewriting.rst index 4e8175e103..c0ee7f50fb 100644 --- a/en/installation/url-rewriting.rst +++ b/en/installation/url-rewriting.rst @@ -194,14 +194,13 @@ add-ons that can add this support, you can also import htaccess rules into IIS to use CakePHP's native rewrites. To do this, follow these steps: - #. Use `Microsoft's Web Platform Installer `_ to install the URL `Rewrite Module 2.0 `_ or download it directly (`32-bit `_ / `64-bit `_). #. Create a new file called web.config in your CakePHP root folder. #. Using Notepad or any XML-safe editor, copy the following code into your new web.config file... -:: +.. code-block:: xml @@ -271,7 +270,6 @@ If you don't want to or can't use URL rewriting on your webserver, refer to the :ref:`core configuration`. - .. meta:: :title lang=en: URL Rewriting :keywords lang=en: url rewriting, mod_rewrite, apache, iis, plugin assets, nginx diff --git a/en/models/additional-methods-and-properties.rst b/en/models/additional-methods-and-properties.rst index a0ae35ca2b..a6e640056d 100644 --- a/en/models/additional-methods-and-properties.rst +++ b/en/models/additional-methods-and-properties.rst @@ -109,6 +109,7 @@ Returns the ID of the last record this model inserted. Alias to ``getInsertID()``. + .. meta:: :title lang=en: Additional Methods and Properties :keywords lang=en: model classes,model functions,model class,interval,array diff --git a/en/models/associations-linking-models-together.rst b/en/models/associations-linking-models-together.rst index 5e664b3859..87ec076e69 100644 --- a/en/models/associations-linking-models-together.rst +++ b/en/models/associations-linking-models-together.rst @@ -40,6 +40,11 @@ many to one belongsTo Many recipes belong to a user. many to many hasAndBelongsToMany Recipes have, and belong to, many ingredients. ============= ===================== ======================================= +To further clarify which way around the associations are defined in the models: +If the table of the model contains the foreign key (other_model_id), the relation +type in this model is **always** a Model **belongsTo** OtherModel relation! + + Associations are defined by creating a class variable named after the association you are defining. The class variable can sometimes be as simple as a string, but can be as complex as a @@ -792,7 +797,7 @@ the columns as it is not replaced in the new insert. The way to implement our requirement is to use a **join model**, otherwise known as a **hasMany through** association. That is, the association is a model itself. So, we can create a new -model CourseMembership. Take a look at the following models.:: +model CourseMembership. Take a look at the following models. :: // Student.php class Student extends AppModel { diff --git a/en/models/behaviors.rst b/en/models/behaviors.rst index dbc649b0c6..a4a3534670 100644 --- a/en/models/behaviors.rst +++ b/en/models/behaviors.rst @@ -246,10 +246,10 @@ the 2nd parameter. This allows you to munge the method name for additional information, much like ``Model::findAllByXX``. If the above behavior was attached to a model the following would happen:: - $model->doReleaseTheHounds('homer', 'lenny'); + $model->doReleaseTheHounds('karl', 'lenny'); // would output - 'ReleaseTheHounds', 'homer', 'lenny' + 'ReleaseTheHounds', 'karl', 'lenny' Behavior callbacks ================== @@ -338,7 +338,6 @@ model that the behavior method was invoked on. your behavior. - .. meta:: :title lang=en: Behaviors :keywords lang=en: tree manipulation,manipulation methods,model behaviors,access control list,model class,tree structures,php class,business contract,class category,database table,bakery,inheritance,functionality,interaction,logic,cakephp,models,essence diff --git a/en/models/callback-methods.rst b/en/models/callback-methods.rst index 89ef6e7bff..2442a196a7 100644 --- a/en/models/callback-methods.rst +++ b/en/models/callback-methods.rst @@ -96,7 +96,7 @@ to modify validation rules if required. This function must also return *true*, otherwise the current save() execution will abort. afterValidate -============== +============= ``afterValidate()`` @@ -196,9 +196,8 @@ on this record will also be deleted. )); if ($count == 0) { return true; - } else { - return false; } + return false; } afterDelete diff --git a/en/models/data-validation.rst b/en/models/data-validation.rst index 96ebf015d8..e76e3ccf33 100644 --- a/en/models/data-validation.rst +++ b/en/models/data-validation.rst @@ -33,7 +33,7 @@ those fields:: public $validate = array( 'login' => 'alphaNumeric', 'email' => 'email', - 'born' => 'date' + 'born' => 'date' ); } @@ -56,23 +56,23 @@ some of these built-in validation rules:: public $validate = array( 'login' => array( 'alphaNumeric' => array( - 'rule' => 'alphaNumeric', + 'rule' => 'alphaNumeric', 'required' => true, - 'message' => 'Letters and numbers only' + 'message' => 'Letters and numbers only' ), 'between' => array( - 'rule' => array('between', 5, 15), + 'rule' => array('lengthBetween', 5, 15), 'message' => 'Between 5 to 15 characters' ) ), 'password' => array( - 'rule' => array('minLength', '8'), + 'rule' => array('minLength', '8'), 'message' => 'Minimum 8 characters long' ), 'email' => 'email', 'born' => array( - 'rule' => 'date', - 'message' => 'Enter a valid date', + 'rule' => 'date', + 'message' => 'Enter a valid date', 'allowEmpty' => true ) ); @@ -125,12 +125,12 @@ general usage pattern adding a rule for a single field:: public $validate = array( 'fieldName1' => array( // or: array('ruleName', 'param1', 'param2' ...) - 'rule' => 'ruleName', - 'required' => true, + 'rule' => 'ruleName', + 'required' => true, 'allowEmpty' => false, // or: 'update' - 'on' => 'create', - 'message' => 'Your Error Message' + 'on' => 'create', + 'message' => 'Your Error Message' ) ); @@ -154,7 +154,7 @@ default, see :ref:`core-validation-rules`. If the rule does not require any parameters, 'rule' can be a single -value e.g.:: +value e.g. :: public $validate = array( 'login' => array( @@ -185,7 +185,7 @@ data array. For example, if the validation rule has been defined as follows:: public $validate = array( 'login' => array( - 'rule' => 'alphaNumeric', + 'rule' => 'alphaNumeric', 'required' => true ) ); @@ -243,7 +243,7 @@ message for the rule:: public $validate = array( 'password' => array( - 'rule' => array('minLength', 8), + 'rule' => array('minLength', 8), 'message' => 'Password must be at least 8 characters long' ) ); @@ -288,11 +288,11 @@ This is better explained with a practical example:: public $validate = array( 'login' => array( 'loginRule-1' => array( - 'rule' => 'alphaNumeric', + 'rule' => 'alphaNumeric', 'message' => 'Only alphabets and numbers allowed', ), 'loginRule-2' => array( - 'rule' => array('minLength', 8), + 'rule' => array('minLength', 8), 'message' => 'Minimum length of 8 characters' ) ) @@ -306,7 +306,7 @@ When using multiple rules per field the 'required' and 'allowEmpty' keys need to be used only once in the first rule. last -------- +---- In case of multiple rules per field by default if a particular rule fails error message for that rule is returned and the following rules @@ -320,12 +320,12 @@ fails:: public $validate = array( 'login' => array( 'rule1' => array( - 'rule' => 'alphaNumeric', + 'rule' => 'alphaNumeric', 'message' => 'Only alphabets and numbers allowed', - 'last' => false + 'last' => false ), 'rule2' => array( - 'rule' => array('minLength', 8), + 'rule' => array('minLength', 8), 'message' => 'Minimum length of 8 characters' ) ) @@ -337,7 +337,7 @@ providing the ``message`` key. Consider this example:: public $validate = array( 'login' => array( 'Only alphabets and numbers allowed' => array( - 'rule' => 'alphaNumeric', + 'rule' => 'alphaNumeric', ), ) ); @@ -346,7 +346,6 @@ If the ``alphaNumeric`` rules fails the array key for this rule 'Only alphabets and numbers allowed' will be returned as error message since the ``message`` key is not set. - Custom Validation Rules ======================= @@ -364,7 +363,7 @@ expression as a field validation rule:: public $validate = array( 'login' => array( - 'rule' => '/^[a-z0-9]{3,}$/i', + 'rule' => '/^[a-z0-9]{3,}$/i', 'message' => 'Only letters and integers, min 3 characters' ) ); @@ -388,7 +387,7 @@ function, as shown below:: public $validate = array( 'promotion_code' => array( - 'rule' => array('limitDuplicates', 25), + 'rule' => array('limitDuplicates', 25), 'message' => 'This code has been used too many times.' ) ); @@ -432,7 +431,7 @@ stored in $this->data member variable:: public $validate = array( 'slug' => array( - 'rule' => 'alphaNumericDashUnderscore', + 'rule' => 'alphaNumericDashUnderscore', 'message' => 'Slug can only be letters,' . ' numbers, dash and underscore' ) @@ -459,7 +458,6 @@ be shown as the error message. Returning a string means the validation failed. The string will overwrite the message set in the $validate array and be shown in the view's form as the reason why the field was not valid. - Dynamically change validation rules =================================== @@ -473,7 +471,6 @@ every rule set for each field in your model. Defining new validation rules is as easy as telling this object to store new validation methods for the fields you want to. - Adding new validation rules --------------------------- @@ -498,7 +495,7 @@ multiple calls to add to create as many rules as you like:: 'required' => 'create' )) ->add('password', 'size', array( - 'rule' => array('between', 8, 20), + 'rule' => array('lengthBetween', 8, 20), 'message' => 'Password should be at least 8 chars long' )); @@ -510,7 +507,7 @@ It is also possible to add multiple rules at once for a single field:: 'required' => 'create' ), 'size' => array( - 'rule' => array('between', 8, 20), + 'rule' => array('lengthBetween', 8, 20), 'message' => 'Password should be at least 8 chars long' ) )); @@ -615,24 +612,24 @@ with usage examples. .. php:staticmethod:: alphaNumeric(mixed $check) - The data for the field must only contain letters and numbers.:: + The data for the field must only contain letters and numbers. :: public $validate = array( 'login' => array( - 'rule' => 'alphaNumeric', + 'rule' => 'alphaNumeric', 'message' => 'Usernames must only contain letters and numbers.' ) ); -.. php:staticmethod:: between(string $check, integer $min, integer $max) +.. php:staticmethod:: lengthBetween(string $check, integer $min, integer $max) The length of the data for the field must fall within the specified numeric range. Both minimum and maximum values must be supplied. - Uses = not.:: + Uses = not. :: public $validate = array( 'password' => array( - 'rule' => array('between', 5, 15), + 'rule' => array('lengthBetween', 5, 15), 'message' => 'Passwords must be between 5 and 15 characters long.' ) ); @@ -646,12 +643,12 @@ with usage examples. This rule is used to make sure that the field is left blank or only white space characters are present in its value. White space - characters include space, tab, carriage return, and newline.:: + characters include space, tab, carriage return, and newline. :: public $validate = array( 'id' => array( 'rule' => 'blank', - 'on' => 'create' + 'on' => 'create' ) ); @@ -659,11 +656,11 @@ with usage examples. .. php:staticmethod:: boolean(string $check) The data for the field must be a boolean value. Valid values are - true or false, integers 0 or 1 or strings '0' or '1'.:: + true or false, integers 0 or 1 or strings '0' or '1'. :: public $validate = array( 'myCheckbox' => array( - 'rule' => array('boolean'), + 'rule' => array('boolean'), 'message' => 'Incorrect value for myCheckbox' ) ); @@ -707,7 +704,7 @@ with usage examples. public $validate = array( 'ccnumber' => array( - 'rule' => array('cc', array('visa', 'maestro'), false, null), + 'rule' => array('cc', array('visa', 'maestro'), false, null), 'message' => 'The credit card number you supplied was invalid.' ) ); @@ -721,7 +718,7 @@ with usage examples. public $validate = array( 'age' => array( - 'rule' => array('comparison', '>=', 18), + 'rule' => array('comparison', '>=', 18), 'message' => 'Must be at least 18 years old to qualify.' ) ); @@ -740,7 +737,7 @@ with usage examples. public $validate = array( 'infinite' => array( - 'rule' => array('custom', '\u221E'), + 'rule' => array('custom', '\u221E'), 'message' => 'Please enter an infinite number.' ) ); @@ -774,8 +771,8 @@ with usage examples. public $validate = array( 'born' => array( - 'rule' => array('date', 'ymd'), - 'message' => 'Enter a valid date in YY-MM-DD format.', + 'rule' => array('date', 'ymd'), + 'message' => 'Enter a valid date in YY-MM-DD format.', 'allowEmpty' => true ) ); @@ -814,7 +811,7 @@ with usage examples. public $validate = array( 'birthday' => array( - 'rule' => array('datetime', 'dmy'), + 'rule' => array('datetime', 'dmy'), 'message' => 'Please enter a valid date and time.' ) ); @@ -825,7 +822,6 @@ with usage examples. Note that unlike date(), datetime() will validate a date and a time. - .. php:staticmethod:: decimal(string $check, integer $places = null, string $regex = null) This rule ensures that the data is a valid decimal number. A @@ -851,7 +847,7 @@ with usage examples. public $validate = array( 'email' => array( - 'rule' => array('email', true), + 'rule' => array('email', true), 'message' => 'Please supply a valid email address.' ) ); @@ -866,12 +862,11 @@ with usage examples. public $validate = array( 'food' => array( - 'rule' => array('equalTo', 'cake'), + 'rule' => array('equalTo', 'cake'), 'message' => 'This value must be the string cake' ) ); - .. php:staticmethod:: extension(mixed $check, array $extensions = array('gif', 'jpeg', 'png', 'jpg')) This rule checks for valid file extensions like .jpg or .png. Allow @@ -881,7 +876,7 @@ with usage examples. public $validate = array( 'image' => array( - 'rule' => array( + 'rule' => array( 'extension', array('gif', 'jpeg', 'png', 'jpg') ), @@ -895,7 +890,7 @@ with usage examples. decide the type of comparison you want to use. All the operators supported by :php:func:`~Validation::comparison()` are supported here as well. This method will automatically handle array values from ``$_FILES`` by reading - from the ``tmp_name`` key if ``$check`` is an array an contains that key:: + from the ``tmp_name`` key if ``$check`` is an array and contains that key:: public $validate = array( 'image' => array( @@ -918,7 +913,7 @@ with usage examples. public $validate = array( 'function' => array( 'allowedChoice' => array( - 'rule' => array('inList', array('Foo', 'Bar')), + 'rule' => array('inList', array('Foo', 'Bar')), 'message' => 'Enter either Foo or Bar.' ) ) @@ -936,7 +931,7 @@ with usage examples. public $validate = array( 'clientip' => array( - 'rule' => array('ip', 'IPv4'), // or 'IPv6' or 'both' (default) + 'rule' => array('ip', 'IPv4'), // or 'IPv6' or 'both' (default) 'message' => 'Please supply a valid IP address.' ) ); @@ -949,23 +944,26 @@ with usage examples. public $validate = array( 'login' => array( - 'rule' => 'isUnique', + 'rule' => 'isUnique', 'message' => 'This username has already been taken.' ) ); You can validate that a set of fields are unique by providing multiple - fields:: + fields and set ``$or`` to ``false``:: public $validate = array( 'email' => array( - 'rule' => array('isUnique', 'email', 'username'), + 'rule' => array('isUnique', array('email', 'username'), false), 'message' => 'This username & email combination has already been used.' ) ); Make sure to include the original field in the list of fields when making a unique rule across multiple fields. + + If a listed field isn't included in the model data, then it's treated as a null value. + You may consider marking the listed fields as ``required``. .. php:staticmethod:: luhn(string|array $check, boolean $deep = false) @@ -983,7 +981,7 @@ with usage examples. public $validate = array( 'login' => array( - 'rule' => array('maxLength', 15), + 'rule' => array('maxLength', 15), 'message' => 'Usernames must be no larger than 15 characters long.' ) ); @@ -1006,11 +1004,11 @@ with usage examples. public $validate = array( 'image' => array( - 'rule' => array('mimeType', array('image/gif')), + 'rule' => array('mimeType', array('image/gif')), 'message' => 'Invalid mime type.' ), 'logo' => array( - 'rule' => array('mimeType', '#image/.+#'), + 'rule' => array('mimeType', '#image/.+#'), 'message' => 'Invalid mime type.' ), ); @@ -1024,7 +1022,7 @@ with usage examples. public $validate = array( 'login' => array( - 'rule' => array('minLength', 8), + 'rule' => array('minLength', 8), 'message' => 'Usernames must be at least 8 characters long.' ) ); @@ -1045,7 +1043,7 @@ with usage examples. public $validate = array( 'salary' => array( - 'rule' => array('money', 'left'), + 'rule' => array('money', 'left'), 'message' => 'Please supply a valid monetary amount.' ) ); @@ -1073,11 +1071,11 @@ with usage examples. .. php:staticmethod:: notEmpty(mixed $check) - The basic rule to ensure that a field is not empty.:: + The basic rule to ensure that a field is not empty. :: public $validate = array( 'title' => array( - 'rule' => 'notEmpty', + 'rule' => 'notEmpty', 'message' => 'This field cannot be left blank' ) ); @@ -1088,11 +1086,11 @@ with usage examples. .. php:staticmethod:: numeric(string $check) - Checks if the data passed is a valid number.:: + Checks if the data passed is a valid number. :: public $validate = array( 'cars' => array( - 'rule' => 'numeric', + 'rule' => 'numeric', 'message' => 'Please supply the number of cars.' ) ); @@ -1108,11 +1106,11 @@ with usage examples. public $validate = array( 'wheels' => array( - 'rule' => 'naturalNumber', + 'rule' => 'naturalNumber', 'message' => 'Please supply the number of wheels.' ), 'airbags' => array( - 'rule' => array('naturalNumber', true), + 'rule' => array('naturalNumber', true), 'message' => 'Please supply the number of airbags.' ), ); @@ -1132,7 +1130,6 @@ with usage examples. ) ); - .. php:staticmethod:: postal(mixed $check, string $regex = null, string $country = 'us') Postal is used to validate ZIP codes from the U.S. (us), Canada @@ -1159,13 +1156,13 @@ with usage examples. public $validate = array( 'number' => array( - 'rule' => array('range', -1, 11), - 'message' => 'Please enter a number between 0 and 10' + 'rule' => array('range', -1, 11), + 'message' => 'Please enter a number between -1 and 11' ) ); - The above example will accept any value which is larger than 0 - (e.g., 0.01) and less than 10 (e.g., 9.99). + The above example will accept any value which is larger than -1 + (e.g., -0.99) and less than 11 (e.g., 10.99). .. note:: @@ -1186,7 +1183,6 @@ with usage examples. ) ); - .. php:staticmethod:: time(string $check) Time validation, determines if the string passed is a valid time. Validates @@ -1203,7 +1199,7 @@ with usage examples. public $validate = array( 'image' => array( - 'rule' => 'uploadError', + 'rule' => 'uploadError', 'message' => 'Something went wrong with the upload.' ), ); diff --git a/en/models/datasources.rst b/en/models/datasources.rst index 04aef0986a..6c13cc299f 100644 --- a/en/models/datasources.rst +++ b/en/models/datasources.rst @@ -26,8 +26,8 @@ known about datasources, you've been using them all along. All of the above sources derive from a base ``DboSource`` class, which aggregates some logic that is common to most relational databases. If you decide -to write a RDBMS datasource, working from one of these (e.g. Mysql, or Sqlite is -your best bet.) +to write a RDBMS datasource, working from one of these (e.g. Mysql, or Sqlite) +is your best bet. Most people, however, are interested in writing datasources for external sources of data, such as remote REST APIs or even an LDAP server. So that's what we're @@ -313,6 +313,7 @@ So if the Sqlserver Datasource errors out with:: First check if the SQL Server PHP extension pdo_sqlsrv and the SQL Server Native Client are installed properly. + .. 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 diff --git a/en/models/model-attributes.rst b/en/models/model-attributes.rst index 651b3e61f4..58cd0a72df 100644 --- a/en/models/model-attributes.rst +++ b/en/models/model-attributes.rst @@ -19,9 +19,7 @@ database configuration file is stored in /app/Config/database.php. The ``useDbConfig`` property is defaulted to the 'default' database connection. -Example usage: - -:: +Example usage:: class Example extends AppModel { public $useDbConfig = 'alternate'; @@ -129,16 +127,18 @@ the default recursive level is 1. required foreign keys to the ``fields`` array manually. In the example above, this could mean adding ``domain_id``. -.. tip:: +The recommended recursive level for your application should be -1. +This avoids retrieving related data where that is unnecessary or even +unwanted. This is most likely the case for most of your find() calls. +Raise it only when needed or use Containable behavior. - The recommended recursive level for your application should be -1. - This avoids retrieving related data where that is unnecessary or even - unwanted. This is most likely the case for most of your find() calls. - Raise it only when needed or use Containable behavior. +You can achieve that by adding it to the AppModel:: - You can achieve that by adding it to the AppModel:: + public $recursive = -1; - public $recursive = -1; +If you use events in your system, using the value -1 for recursive will +disable all event triggering in the associated model. This happens because +no relations are created when the value is set to -1. order ===== @@ -175,7 +175,7 @@ Each field is described by: Example Usage:: - public $_schema = array( + protected $_schema = array( 'first_name' => array( 'type' => 'string', 'length' => 30 diff --git a/en/models/retrieving-your-data.rst b/en/models/retrieving-your-data.rst index f675744920..6aa664dade 100644 --- a/en/models/retrieving-your-data.rst +++ b/en/models/retrieving-your-data.rst @@ -36,7 +36,7 @@ optional:: 'callbacks' => true //other possible values are false, 'before', 'after' ) -It's also possible to add and use other parameters. Some types of find() +It's also possible to add and use other parameters. Some types of find() and behaviors make use of this ability, and your own model methods can, too. If your find() operation fails to match any records, you will get an empty array. @@ -548,7 +548,7 @@ It is also possible to paginate via a custom find type as follows: Setting the ``$this->paginate`` property as above on the controller will result in the ``type`` of the find becoming ``available``, and will also allow you to continue to modify the find results. -To simply return the count of a custom find type, call ``count`` like you normally would, but pass in the +To simply return the count of a custom find type, call ``count`` like you normally would, but pass in the find type in an array for the second argument. :: @@ -868,8 +868,8 @@ a post":: Notice the '!=' that follows the field name. CakePHP can parse out any valid SQL comparison operator, including match expressions -using LIKE, BETWEEN, or REGEX, as long as you leave a space between -field name and the operator. The one exception here is IN +using ``LIKE``, ``BETWEEN``, or ``REGEX``, as long as you leave a space between +field name and the operator. The one exception here is ``IN`` (...)-style matches. Let's say you wanted to find posts where the title was in a given set of values:: @@ -902,7 +902,7 @@ The above example will return posts where the created date is equal to the modified date (that is, it will return posts that have never been modified). -Remember that if you find yourself unable to form a WHERE clause in +Remember that if you find yourself unable to form a ``WHERE`` clause in this method (for example, boolean operations), you can always specify it as a string like:: @@ -911,8 +911,8 @@ a string like:: // other conditions as usual ) -By default, CakePHP joins multiple conditions with boolean AND. -This means the snippet above would only match posts that have +By default, CakePHP joins multiple conditions with boolean ``AND``. +This means the snippet below would only match posts that have been created in the past two weeks, and have a title that matches one in the given set. However, we could just as easily find posts that match either condition:: @@ -922,8 +922,8 @@ that match either condition:: "Post.created >" => date('Y-m-d', strtotime("-2 weeks")) )) -CakePHP accepts all valid SQL boolean operations, including AND, OR, -NOT, XOR, etc., and they can be upper or lower case, whichever you +CakePHP accepts all valid SQL boolean operations, including ``AND``, ``OR``, +``NOT``, ``XOR``, etc., and they can be upper or lower case, whichever you prefer. These conditions are also infinitely nestable. Let's say you had a belongsTo relationship between Posts and Authors. Let's say you wanted to find all the posts that contained a certain @@ -939,7 +939,7 @@ wanted to restrict your search to posts written by Bob:: ) If you need to set multiple conditions on the same field, like when -you want to do a LIKE search with multiple terms, you can do so by +you want to do a ``LIKE`` search with multiple terms, you can do so by using conditions similar to:: array('OR' => array( @@ -947,6 +947,9 @@ using conditions similar to:: array('Post.title LIKE' => '%two%') )) +The wildcard operators ``ILIKE`` and ``RLIKE`` (RLIKE since version 2.6) are +also available. + CakePHP can also check for null fields. In this example, the query will return records where the post title is not null:: @@ -955,7 +958,7 @@ will return records where the post title is not null:: ) ) -To handle BETWEEN queries, you can use the following:: +To handle ``BETWEEN`` queries, you can use the following:: array('Post.read_count BETWEEN ? AND ?' => array(1,10)) @@ -992,8 +995,8 @@ The data returned for this would be in the following format:: [1] => Array ... -A quick example of doing a DISTINCT query. You can use other -operators, such as MIN(), MAX(), etc., in a similar fashion:: +A quick example of doing a ``DISTINCT`` query. You can use other +operators, such as ``MIN()``, ``MAX()``, etc., in a similar fashion:: array( 'fields' => array('DISTINCT (User.name) AS my_column_name'), @@ -1090,7 +1093,7 @@ This should generate the following SQL:: "User2"."status" = 'B' ) -Also, if you need to pass just part of your query as raw SQL as +Also, if you need to pass just part of your query as raw SQL as above, datasource **expressions** with raw SQL work for any part of the find query. @@ -1114,7 +1117,6 @@ custom query you like:: ); - .. meta:: :title lang=en: Retrieving Your Data :keywords lang=en: upper case character,array model,order array,controller code,retrieval functions,model layer,model methods,model class,model data,data retrieval,field names,workhorse,desc,neighbors,parameters,storage,models diff --git a/en/models/saving-your-data.rst b/en/models/saving-your-data.rst index f183b67627..a04b7d7736 100644 --- a/en/models/saving-your-data.rst +++ b/en/models/saving-your-data.rst @@ -16,7 +16,7 @@ following basic format:: Most of the time you won't even need to worry about this format: CakePHP's :php:class:`FormHelper`, and model find methods all -package data in this format. If you're using either of the helpers, +package data in this format. If you're using :php:class:`FormHelper`, the data is also conveniently available in ``$this->request->data`` for quick usage. @@ -115,11 +115,12 @@ as keys: * ``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) +* ``atomic`` (since 2.6) Boolean to indicate you want records saved in + a transaction. More information about model callbacks is available :doc:`here ` - .. tip:: If you don't want the ``modified`` field to be automatically updated when saving some @@ -202,7 +203,7 @@ The saveField method also has an alternate syntax:: ``$params`` array can have any of the following available options as keys: -* ``validate`` Set to true/false to enable disable validation. +* ``validate`` Set to true/false to enable/disable validation. * ``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) @@ -266,8 +267,8 @@ options may be used: 'first' to validate *all* records before any are saved (default), * ``atomic``: If true (default), will attempt to save all records in a single transaction. 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 +* ``fieldList``: Equivalent to the $fieldList parameter in Model::save() +* ``deep``: (since 2.1) If set to true, also associated data is saved; see also :ref:`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) @@ -322,6 +323,8 @@ one you just need to add the primary key index to the data row:: ); +.. _Model-saveAssociated: + :php:meth:`Model::saveAssociated(array $data = null, array $options = array())` =============================================================================== @@ -555,7 +558,7 @@ Let's see how data stored in a join table for two models is saved. As shown in t section, the join table is associated to each model using a `hasMany` type of relationship. Our example involves the Head of Cake School asking us to write an application that allows him to log a student's attendance on a course with days attended and grade. Take -a look at the following code.:: +a look at the following code. :: // Controller/CourseMembershipController.php class CourseMembershipsController extends AppController { @@ -589,7 +592,7 @@ a look at the following code.:: Form->end(); ?> -The data array will look like this when submitted.:: +The data array will look like this when submitted. :: Array ( @@ -652,7 +655,7 @@ will be cases where you want to create the Student and Course independently and at a later point associate the two together with a CourseMembership. So you might have a form that allows selection of existing students and courses from pick lists or ID entry and -then the two meta-fields for the CourseMembership, e.g.:: +then the two meta-fields for the CourseMembership, e.g. :: // View/CourseMemberships/add.ctp @@ -807,7 +810,7 @@ to be nested again:: ( [Post] => Array ( - [title] => 'Dr Who's Name is Revealed' + [title] => 'Dr Who\'s Name is Revealed' ) [Tag] => Array ( @@ -910,7 +913,7 @@ be used with only 1 model, though it requires some extra attention. The key is in the model setup the ``className``. Simply adding a ``Project`` HABTM ``Project`` relation causes issues saving data. By setting the ``className`` to the models name and use the alias as -key we avoid those issues.:: +key we avoid those issues. :: class Project extends AppModel { public $hasAndBelongsToMany = array( @@ -1025,7 +1028,7 @@ the Model::save() to always do it for you:: } + .. meta:: :title lang=en: Saving Your Data :keywords lang=en: doc models,validation rules,data validation,flash message,null model,table php,request data,php class,model data,database table,array,recipes,success,reason,snap,data model - diff --git a/en/models/transactions.rst b/en/models/transactions.rst index a38e7dc3f2..b35a252a18 100644 --- a/en/models/transactions.rst +++ b/en/models/transactions.rst @@ -58,6 +58,7 @@ one global transaction. The real nested transaction is disabled by default. Enable it using ``$dataSource->useNestedTransactions = true;``. + .. meta:: :title lang=en: Transactions :keywords lang=en: transaction methods,datasource,rollback,data source,begin,commit,nested transaction diff --git a/en/models/virtual-fields.rst b/en/models/virtual-fields.rst index d916f91f6a..efbc449363 100644 --- a/en/models/virtual-fields.rst +++ b/en/models/virtual-fields.rst @@ -211,6 +211,7 @@ or:: $this->virtualFields += $this->Author->virtualFields; + .. meta:: :title lang=en: Virtual fields :keywords lang=en: sql expressions,array name,model fields,sql errors,virtual field,concatenation,model name,first name last name diff --git a/en/pdf-contents.rst b/en/pdf-contents.rst index c548bd98b1..5006faa795 100644 --- a/en/pdf-contents.rst +++ b/en/pdf-contents.rst @@ -15,7 +15,10 @@ Contents console-and-shells development deployment - tutorials-and-examples + tutorials-and-examples/blog-auth-example/auth + tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application + tutorials-and-examples/simple-acl-controlled-application/part-two + contributing appendices @@ -23,4 +26,3 @@ Indices and tables ================== * :ref:`genindex` -* :ref:`modindex` diff --git a/en/plugins.rst b/en/plugins.rst index 326c85ed1e..e53c526df9 100644 --- a/en/plugins.rst +++ b/en/plugins.rst @@ -16,11 +16,11 @@ behaving much like it would if it were an application on its own. .. toctree:: :maxdepth: 1 + plugins/how-to-install-plugins plugins/how-to-use-plugins plugins/how-to-create-plugins - .. meta:: :title lang=en: Plugins :keywords lang=en: plugin folder,plugins,controllers,models,views,package,application,database connection,little space \ No newline at end of file diff --git a/en/plugins/how-to-create-plugins.rst b/en/plugins/how-to-create-plugins.rst index b2f6fc4722..3503c23152 100644 --- a/en/plugins/how-to-create-plugins.rst +++ b/en/plugins/how-to-create-plugins.rst @@ -194,7 +194,6 @@ Creating this file, would allow you to override .. _plugin-assets: - Plugin Assets ============= @@ -235,9 +234,9 @@ would serve the asset asset path. That makes the magic happen! .. versionchanged:: 2.1 -Use :term:`plugin syntax` to request assets. For example in your View: - Html->css("ContactManager.style"); ?> - + Use :term:`plugin syntax` to request assets. For example in your View:: + + Html->css("ContactManager.style"); ?> Components, Helpers and Behaviors ================================= @@ -293,7 +292,7 @@ that everyone can benefit from your awesome, reusable components! Plugin Tips =========== -Once a plugin has been installed in /app/Plugin, you can access it +Once a plugin has been installed in /app/Plugin/, you can access it at the URL /plugin_name/controller_name/action. In our ContactManager plugin example, we'd access our ContactsController at /contact_manager/contacts. @@ -332,6 +331,7 @@ So if you created a plugin "Logging" with your GitHub account "FooBar", a good n would be `foo-bar/cakephp-logging`. And the CakePHP owned "Localized" plugin can be found under `cakephp/localized` respectively. + .. meta:: :title lang=en: How To Create Plugins :keywords lang=en: plugin folder,configuration database,management module,little space,webroot,contactmanager,array,config,cakephp,models,php,directories,blog,plugins,applications \ No newline at end of file diff --git a/en/plugins/how-to-install-plugins.rst b/en/plugins/how-to-install-plugins.rst new file mode 100644 index 0000000000..dd1d128b0a --- /dev/null +++ b/en/plugins/how-to-install-plugins.rst @@ -0,0 +1,93 @@ +How To Install Plugins +###################### + +There are four ways to install a CakePHP plugin: + +- Through Composer +- Manually +- As Git Submodule +- By Git Cloning + +But don't forget to :ref:`enable-plugins` afterwards. + +Manually +======== + +To install a plugin manually, you just have to drop the plugin folder +into your app/Plugin/ folder. If you're installing a plugin named +'ContactManager' then you should have a folder in app/Plugin/ +named 'ContactManager' under which are the plugin's View, Model, +Controller, webroot and any other directories. + +Composer +======== + +If you aren't familiar with the dependency management tool named Composer, +take the time to read the +`Composer documentation `_. + +To install the imaginary plugin 'ContactManager' through Composer, +add it as dependency to your project's ``composer.json``:: + + { + "require": { + "cakephp/contact-manager": "1.2.*" + } + } + +If a CakePHP plugin is of the type ``cakephp-plugin``, as it should, +Composer will install it inside your /Plugin directory, +rather than in the usual vendors folder. + +.. note:: + + Consider using "require-dev" if you only want to include + the plugin for your development environment. + +Alternatively, you can use the +`Composer CLI tool to require `_ +(and install) plugins:: + + php composer.phar require cakephp/contact-manager:1.2.* + +Git Clone +========= + +If the plugin you want to install is hosted as a Git repo, you can also clone it. +Let's assume the imaginary plugin 'ContactManager' is hosted on GitHub. +You could clone it by executing the following command in your app/Plugin/ folder:: + + git clone git://github.com/cakephp/contact-manager.git ContactManager + +Git Submodule +============= + +If the plugin you want to install is hosted as a Git repo, +but you prefer not to clone it, you can also integrate it as a Git submodule. +Execute the following commands in your app folder:: + + git submodule add git://github.com/cakephp/contact-manager.git Plugin/ContactManager + git submodule init + git submodule update + + +.. _enable-plugins: + +Enable the Plugin +================= + +Plugins need to be loaded manually in ``app/Config/bootstrap.php``. + +You can either load one by one or all of them in a single call:: + + CakePlugin::loadAll(); // Loads all plugins at once + CakePlugin::load('ContactManager'); // Loads a single plugin + +``loadAll()`` loads all plugins available, while allowing you to set certain +settings for specific plugins. ``load()`` works similarly, but only loads the +plugins you explicitly specify. + + +.. meta:: + :title lang=en: How To Install Plugins + :keywords lang=en: plugin folder, install, git, zip, tar, submodule, manual, clone, contactmanager, enable \ No newline at end of file diff --git a/en/plugins/how-to-use-plugins.rst b/en/plugins/how-to-use-plugins.rst index aaa1c2a40c..270ab3427b 100644 --- a/en/plugins/how-to-use-plugins.rst +++ b/en/plugins/how-to-use-plugins.rst @@ -1,27 +1,8 @@ How To Use Plugins ################## -Installing a Plugin -=================== - -To install a plugin, start by simply dropping the plugin folder in -your app/Plugin folder. If you're installing a plugin named -'ContactManager' then you should have a folder in app/Plugin -named 'ContactManager' under which are the plugin's View, Model, -Controller, webroot, and any other directories. - -New for CakePHP 2.0, plugins need to be loaded manually in -app/Config/bootstrap.php. - -You can either load them one by one or all of them in a single call:: - - CakePlugin::loadAll(); // Loads all plugins at once - CakePlugin::load('ContactManager'); //Loads a single plugin - - -``loadAll()`` loads all plugins available, while allowing you to set certain -settings for specific plugins. ``load()`` works similarly, but only loads the -plugins you explicitly specify. +Before you can use a plugin, you must install and enable it first. +See :doc:`/plugins/how-to-install-plugins`. Plugin Configuration ==================== @@ -127,6 +108,7 @@ any other helper in your view, such as:: echo $this->ContactInfo->address($contact); + .. meta:: :title lang=en: How To Use Plugins :keywords lang=en: plugin folder,configuration database,bootstrap,management module,webroot,user management,contactmanager,array,config,cakephp,models,php,directories,blog,plugins,applications \ No newline at end of file diff --git a/en/tutorials-and-examples/blog-auth-example/auth.rst b/en/tutorials-and-examples/blog-auth-example/auth.rst index a5d6d6b8e1..76c022fda1 100644 --- a/en/tutorials-and-examples/blog-auth-example/auth.rst +++ b/en/tutorials-and-examples/blog-auth-example/auth.rst @@ -31,7 +31,7 @@ validating any user data:: // app/Model/User.php App::uses('AppModel', 'Model'); - + class User extends AppModel { public $validate = array( 'username' => array( @@ -62,7 +62,7 @@ with CakePHP:: // app/Controller/UsersController.php App::uses('AppController', 'Controller'); - + class UsersController extends AppController { public function beforeFilter() { @@ -116,7 +116,10 @@ with CakePHP:: } public function delete($id = null) { - $this->request->onlyAllow('post'); + // Prior to 2.5 use + // $this->request->onlyAllow('post'); + + $this->request->allowMethod('post'); $this->User->id = $id; if (!$this->User->exists()) { @@ -132,6 +135,11 @@ with CakePHP:: } +.. versionchanged:: 2.5 + + Since 2.5, use ``CakeRequest::allowMethod()`` instead of + ``CakeRequest::onlyAllow()`` (deprecated). + In the same way we created the views for our blog posts or by using the code generation tool, we implement the views. For the purpose of this tutorial, we will show just the add.ctp: @@ -172,12 +180,12 @@ file and add the following lines:: 'Session', 'Auth' => array( 'loginRedirect' => array( - 'controller' => 'posts', + 'controller' => 'posts', 'action' => 'index' ), 'logoutRedirect' => array( - 'controller' => 'pages', - 'action' => 'display', + 'controller' => 'pages', + 'action' => 'display', 'home' ), 'authenticate' => array( @@ -219,7 +227,7 @@ the users add function and implement the login and logout action:: public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { - return $this->redirect($this->Auth->redirect()); + return $this->redirect($this->Auth->redirectUrl()); } $this->Session->setFlash(__('Invalid username or password, try again')); } @@ -233,7 +241,7 @@ Password hashing is not done yet, open your ``app/Model/User.php`` model file and add the following:: // app/Model/User.php - + App::uses('AppModel', 'Model'); App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth'); @@ -320,7 +328,7 @@ logged in user as a reference for the created post:: public function add() { if ($this->request->is('post')) { //Added this line - $this->request->data['Post']['user_id'] = $this->Auth->user('id'); + $this->request->data['Post']['user_id'] = $this->Auth->user('id'); if ($this->Post->save($this->request->data)) { $this->Session->setFlash(__('Your post has been saved.')); return $this->redirect(array('action' => 'index')); @@ -345,10 +353,15 @@ config:: 'Auth' => array( 'loginRedirect' => array('controller' => 'posts', 'action' => 'index'), 'logoutRedirect' => array( - 'controller' => 'pages', - 'action' => 'display', + 'controller' => 'pages', + 'action' => 'display', 'home' ), + 'authenticate' => array( + 'Form' => array( + 'passwordHasher' => 'Blowfish' + ) + ), 'authorize' => array('Controller') // Added this line ) ); diff --git a/en/tutorials-and-examples/blog/blog.rst b/en/tutorials-and-examples/blog/blog.rst index 77ad032e8e..93385bc6cb 100755 --- a/en/tutorials-and-examples/blog/blog.rst +++ b/en/tutorials-and-examples/blog/blog.rst @@ -1,5 +1,5 @@ Blog Tutorial -############# +************* Welcome to CakePHP. You're probably checking out this tutorial because you want to learn more about how CakePHP works. It's our @@ -96,11 +96,11 @@ statements into your database:: ); /* Then insert some posts for testing: */ - INSERT INTO posts (title,body,created) + INSERT INTO posts (title, body, created) VALUES ('The title', 'This is the post body.', NOW()); - INSERT INTO posts (title,body,created) + INSERT INTO posts (title, body, created) VALUES ('A title once again', 'And the post body follows.', NOW()); - INSERT INTO posts (title,body,created) + INSERT INTO posts (title, body, created) VALUES ('Title strikes back', 'This is really exciting! Not.', NOW()); The choices on table and column names are not arbitrary. If you diff --git a/en/tutorials-and-examples/blog/part-two.rst b/en/tutorials-and-examples/blog/part-two.rst index d14a446ed9..03c4287a3a 100644 --- a/en/tutorials-and-examples/blog/part-two.rst +++ b/en/tutorials-and-examples/blog/part-two.rst @@ -1,5 +1,5 @@ Blog Tutorial - Adding a layer -############################## +****************************** Create a Post Model =================== @@ -563,8 +563,13 @@ Next, let's make a way for users to delete posts. Start with a $this->Session->setFlash( __('The post with id: %s has been deleted.', h($id)) ); - return $this->redirect(array('action' => 'index')); + } else { + $this->Session->setFlash( + __('The post with id: %s could not be deleted.', h($id)) + ); } + + return $this->redirect(array('action' => 'index')); } This logic deletes the post specified by $id, and uses 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 f1b524ff5a..571214713d 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 @@ -7,7 +7,6 @@ Simple Acl controlled Application CakePHP we would advise you to get a better overall experience of the framework's features before trying out this tutorial. - In this tutorial you will create a simple application with :doc:`/core-libraries/components/authentication` and :doc:`/core-libraries/components/access-control-lists`. This @@ -16,7 +15,7 @@ tutorial, and you are familiar with :doc:`/console-and-shells/code-generation-with-bake`. You should have some experience with CakePHP, and be familiar with MVC concepts. This tutorial is a brief introduction to the -:php:class:`AuthComponent` and :php:class:`AclComponent`\. +:php:class:`AuthComponent` and :php:class:`AclComponent`. What you will need @@ -41,12 +40,12 @@ To get a fresh download, visit the CakePHP project at GitHub: https://github.com/cakephp/cakephp/tags and download the stable release. For this tutorial you need the latest 2.0 release. - You can also clone the repository using -`git `_. -``git clone git://github.com/cakephp/cakephp.git`` +`git `_:: + + git clone git://github.com/cakephp/cakephp.git -Once you've got a fresh copy of cake setup your database.php config +Once you've got a fresh copy of CakePHP setup your database.php config file, and change the value of Security.salt in your app/Config/core.php. From there we will build a simple database schema to build our application on. Execute the following SQL @@ -61,7 +60,6 @@ statements into your database:: modified DATETIME ); - CREATE TABLE groups ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, @@ -69,7 +67,6 @@ statements into your database:: modified DATETIME ); - CREATE TABLE posts ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT(11) NOT NULL, @@ -92,8 +89,8 @@ can start cooking. Use :doc:`/console-and-shells/code-generation-with-bake` to quickly create your models, controllers, and views. -To use cake bake, call "cake bake all" and this will list the 4 -tables you inserted into mySQL. Select "1. Group", and follow the +To use cake bake, call ``cake bake all`` and this will list the 4 +tables you inserted into MySQL. Select "1. Group", and follow the prompts. Repeat for the other 3 tables, and this will have generated the 4 controllers, models and your views for you. @@ -127,7 +124,7 @@ Acl components. First add a login and logout action to your public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { - return $this->redirect($this->Auth->redirect()); + return $this->redirect($this->Auth->redirectUrl()); } $this->Session->setFlash(__('Your username or password was incorrect.')); } @@ -185,15 +182,15 @@ site controlled with Auth and Acl, we will set them up in public function beforeFilter() { //Configure AuthComponent $this->Auth->loginAction = array( - 'controller' => 'users', + 'controller' => 'users', 'action' => 'login' ); $this->Auth->logoutRedirect = array( - 'controller' => 'users', + 'controller' => 'users', 'action' => 'login' ); $this->Auth->loginRedirect = array( - 'controller' => 'posts', + 'controller' => 'posts', 'action' => 'add' ); } @@ -270,9 +267,8 @@ our ``User`` model we will add the following:: } if (!$groupId) { return null; - } else { - return array('Group' => array('id' => $groupId)); } + return array('Group' => array('id' => $groupId)); } } @@ -293,7 +289,7 @@ management a piece of cake as your AROs become transparently tied to your ``users`` and ``groups`` tables. So anytime you create or delete a user/group the Aro table is updated. -Our controllers and models are now prepped for adding some initial +Our controllers and models are now prepared for adding some initial data, and our ``Group`` and ``User`` models are bound to the Acl table. So add some groups and users using the baked forms by browsing to http://example.com/groups/add and @@ -339,7 +335,7 @@ Then modify the ``actsAs`` for the model ``User`` and disable the requester dire public $actsAs = array('Acl' => array('type' => 'requester', 'enabled' => false)); -These two changes will tell ACL to skip checking ``User`` Aro's and to check only ``Group`` +These two changes will tell ACL to skip checking ``User`` Aro's and to check only ``Group`` Aro's. This also avoids the afterSave being called. Note: Every user has to have ``group_id`` assigned for this to work. diff --git a/en/views.rst b/en/views.rst index 32879aa9eb..92ab59e939 100644 --- a/en/views.rst +++ b/en/views.rst @@ -53,7 +53,6 @@ chapter: CakePHP can help you build forms, build AJAX functionality, paginate model data, or serve RSS feeds. - .. _extending-views: Extending Views @@ -133,7 +132,6 @@ as the ``content`` block. You should avoid using ``content`` as a block name in your application. CakePHP uses this for uncaptured content in extended views. - .. _view-blocks: Using view blocks @@ -210,7 +208,6 @@ default content with the ``

`` tag will be discarded. You should avoid using ``content`` as a block name. This is used by CakePHP internally for extended views, and view content in the layout. - Displaying blocks ----------------- @@ -434,7 +431,6 @@ Contacts plugin:: } } - .. _view-elements: Elements @@ -521,9 +517,8 @@ the Post example:: $posts = $this->paginate(); if ($this->request->is('requested')) { return $posts; - } else { - $this->set('posts', $posts); } + $this->set('posts', $posts); } } @@ -596,7 +591,7 @@ If you are using a plugin and wish to use elements from within the plugin, just use the familiar :term:`plugin syntax`. If the view is being rendered for a plugin controller/action, the plugin name will automatically be prefixed onto all elements used, unless another plugin name is present. -If the element doesn't exist in the plugin, it will look in the main APP folder.:: +If the element doesn't exist in the plugin, it will look in the main APP folder. :: echo $this->element('Contacts.helpbox'); diff --git a/en/views/helpers.rst b/en/views/helpers.rst index 089ed5a220..1510a0b65b 100644 --- a/en/views/helpers.rst +++ b/en/views/helpers.rst @@ -1,7 +1,6 @@ Helpers ####### - Helpers are the component-like classes for the presentation layer of your application. They contain presentational logic that is shared between many views, elements, or layouts. This chapter will @@ -196,7 +195,6 @@ helper. To do so, you can specify helpers you wish to use with a } } - .. _using-helpers: Using your Helper @@ -233,7 +231,6 @@ functionality that would be available to all helpers, create } } - .. _helper-api: Helper API @@ -299,6 +296,7 @@ Callbacks Is called after layout rendering is complete. Receives the layout filename as an argument. + .. meta:: :title lang=en: Helpers :keywords lang=en: php class,time function,presentation layer,processing power,ajax,markup,array,functionality,logic,syntax,elements,cakephp,plugins diff --git a/en/views/media-view.rst b/en/views/media-view.rst index 0bbafc98f6..cc0fe2b212 100644 --- a/en/views/media-view.rst +++ b/en/views/media-view.rst @@ -86,7 +86,6 @@ Settable Parameters to the number of seconds in the future for when the cache should expire. - .. todo:: Include examples of how to send files with Media View. diff --git a/en/views/themes.rst b/en/views/themes.rst index b0ed891e7c..710a8cd1be 100644 --- a/en/views/themes.rst +++ b/en/views/themes.rst @@ -83,7 +83,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/themed/Navy/css/navy.css`` + ``app/webroot/theme/Navy/css/navy.css`` .. meta:: diff --git a/es/appendices.rst b/es/appendices.rst new file mode 100644 index 0000000000..8d6b5b518e --- /dev/null +++ b/es/appendices.rst @@ -0,0 +1,96 @@ +Appendices +########## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +Appendices contain information regarding the new features +introduced in 2.x, and the migration path from 1.3 to 2.0. + +2.6 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-6-migration-guide + +2.5 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-5-migration-guide + + +2.4 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-4-migration-guide + +2.3 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-3-migration-guide + +2.2 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-2-migration-guide + +2.1 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-1-migration-guide + appendices/new-features-in-cakephp-2-1 + +2.0 Migration Guide +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/2-0-migration-guide + appendices/new-features-in-cakephp-2-0 + appendices/phpunit-migration-hints + +Migration from 1.2 to 1.3 +========================= + +.. toctree:: + :maxdepth: 1 + + appendices/migrating-from-cakephp-1-2-to-1-3 + appendices/new-features-in-cakephp-1-3 + +General Information +=================== + +.. toctree:: + :maxdepth: 1 + + appendices/glossary + + +.. meta:: + :title lang=es: Appendices + :keywords lang=es: migration guide,migration path,new features,glossary diff --git a/es/appendices/2-0-migration-guide.rst b/es/appendices/2-0-migration-guide.rst new file mode 100644 index 0000000000..4aba5a5bcd --- /dev/null +++ b/es/appendices/2-0-migration-guide.rst @@ -0,0 +1,16 @@ +2.0 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: 2.0 Migration Guide + :description lang=es: This page summarizes the changes from CakePHP 1.3 that will assist in a project migration to 2.0, as well as for a developer reference to get up to date with the changes made to the core since the CakePHP 1.3 branch. + :keywords lang=es: cakephp upgrade,cakephp migration,migration guide,1.3 to 2.0,update cakephp,backwards compatibility,api changes,x versions,directory structure,new features diff --git a/es/appendices/2-1-migration-guide.rst b/es/appendices/2-1-migration-guide.rst new file mode 100644 index 0000000000..4e8c575fe0 --- /dev/null +++ b/es/appendices/2-1-migration-guide.rst @@ -0,0 +1,11 @@ +2.1 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/appendices/2-2-migration-guide.rst b/es/appendices/2-2-migration-guide.rst new file mode 100644 index 0000000000..5fb89be28f --- /dev/null +++ b/es/appendices/2-2-migration-guide.rst @@ -0,0 +1,11 @@ +2.2 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/appendices/2-3-migration-guide.rst b/es/appendices/2-3-migration-guide.rst new file mode 100644 index 0000000000..d5306c6a84 --- /dev/null +++ b/es/appendices/2-3-migration-guide.rst @@ -0,0 +1,11 @@ +2.3 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/appendices/2-4-migration-guide.rst b/es/appendices/2-4-migration-guide.rst new file mode 100644 index 0000000000..e999e6a21f --- /dev/null +++ b/es/appendices/2-4-migration-guide.rst @@ -0,0 +1,11 @@ +2.4 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/appendices/2-5-migration-guide.rst b/es/appendices/2-5-migration-guide.rst new file mode 100644 index 0000000000..ac4b5baf1d --- /dev/null +++ b/es/appendices/2-5-migration-guide.rst @@ -0,0 +1,11 @@ +2.5 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/appendices/2-6-migration-guide.rst b/es/appendices/2-6-migration-guide.rst new file mode 100644 index 0000000000..9cc8ad090c --- /dev/null +++ b/es/appendices/2-6-migration-guide.rst @@ -0,0 +1,11 @@ +2.6 Migration Guide +################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/sr/appendices/glossary.rst b/es/appendices/glossary.rst similarity index 95% rename from sr/appendices/glossary.rst rename to es/appendices/glossary.rst index 80ff5cefc1..7c64cbd660 100644 --- a/sr/appendices/glossary.rst +++ b/es/appendices/glossary.rst @@ -66,5 +66,5 @@ Glossary .. meta:: - :title lang=en: Glossary - :keywords lang=en: html attributes,array class,array controller,glossary glossary,target blank,dot notation,routing configuration,forgery,replay,router,syntax,config,submissions + :title lang=es: Glossary + :keywords lang=es: html attributes,array class,array controller,glossary glossary,target blank,dot notation,routing configuration,forgery,replay,router,syntax,config,submissions diff --git a/es/appendices/migrating-from-cakephp-1-2-to-1-3.rst b/es/appendices/migrating-from-cakephp-1-2-to-1-3.rst new file mode 100644 index 0000000000..36497dc4f2 --- /dev/null +++ b/es/appendices/migrating-from-cakephp-1-2-to-1-3.rst @@ -0,0 +1,15 @@ +Migrating from CakePHP 1.2 to 1.3 +################################# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Migrating from CakePHP 1.2 to 1.3 + :keywords lang=es: inflections,bootstrap,unit tests,constants,cipher,php 5,replacements,pear,array,variables,models,cakephp,plugins diff --git a/es/appendices/new-features-in-cakephp-1-3.rst b/es/appendices/new-features-in-cakephp-1-3.rst new file mode 100644 index 0000000000..7a4446c857 --- /dev/null +++ b/es/appendices/new-features-in-cakephp-1-3.rst @@ -0,0 +1,15 @@ +New features in CakePHP 1.3 +--------------------------- + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: New features in CakePHP 1.3 + :keywords lang=es: component settings,array name,array controller,private methods,necessary components,core components,share names,collisions,func,message id,new features,clutter,consistency,messageid,email,htmlmessage,variables,doc diff --git a/es/appendices/new-features-in-cakephp-2-0.rst b/es/appendices/new-features-in-cakephp-2-0.rst new file mode 100644 index 0000000000..b0a8305e15 --- /dev/null +++ b/es/appendices/new-features-in-cakephp-2-0.rst @@ -0,0 +1,15 @@ +New Features in CakePHP 2.0 +########################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: New Features in CakePHP 2.0 + :keywords lang=es: time reductions,doctypes,model construction,key value,option one,database connection,content view,configuration file,constructor,great time,array,new features,bootstrap process,elements,new models diff --git a/es/appendices/new-features-in-cakephp-2-1.rst b/es/appendices/new-features-in-cakephp-2-1.rst new file mode 100644 index 0000000000..91ef45ee81 --- /dev/null +++ b/es/appendices/new-features-in-cakephp-2-1.rst @@ -0,0 +1,11 @@ +New Features in CakePHP 2.1 +########################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/appendices/phpunit-migration-hints.rst b/es/appendices/phpunit-migration-hints.rst new file mode 100644 index 0000000000..56e589fffa --- /dev/null +++ b/es/appendices/phpunit-migration-hints.rst @@ -0,0 +1,15 @@ +PHPUnit Migration Hints +####################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: PHPUnit Migration Hints + :keywords lang=es: free transition,vendor directory,static methods,teardown,test cases,pear,dependencies,test case,replacements,phpunit,migration,simpletest,cakephp,discover channel diff --git a/es/console-and-shells.rst b/es/console-and-shells.rst new file mode 100644 index 0000000000..5b74819c01 --- /dev/null +++ b/es/console-and-shells.rst @@ -0,0 +1,27 @@ +Console and Shells +################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + console-and-shells/cron-jobs + console-and-shells/completion-shell + console-and-shells/code-generation-with-bake + console-and-shells/schema-management-and-migrations + console-and-shells/i18n-shell + console-and-shells/acl-shell + console-and-shells/testsuite-shell + console-and-shells/upgrade-shell + +.. meta:: + :title lang=es: Console and Shells + :keywords lang=es: shell scripts,system shell,application classes,background tasks,line script,cron job,request response,system path,acl,new projects,shells,specifics,parameters,i18n,cakephp,directory,maintenance,ideal,applications,mvc diff --git a/es/console-and-shells/acl-shell.rst b/es/console-and-shells/acl-shell.rst new file mode 100644 index 0000000000..7f39cf6231 --- /dev/null +++ b/es/console-and-shells/acl-shell.rst @@ -0,0 +1,15 @@ +ACL Shell +######### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: ACL Shell + :keywords lang=es: record style,style reference,acl,database tables,group id,notations,alias,privilege,node,privileges,shell,databases diff --git a/es/console-and-shells/code-generation-with-bake.rst b/es/console-and-shells/code-generation-with-bake.rst new file mode 100644 index 0000000000..a1793faa1e --- /dev/null +++ b/es/console-and-shells/code-generation-with-bake.rst @@ -0,0 +1,15 @@ +Code Generation with Bake +######################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Code Generation with Bake + :keywords lang=es: command line interface,functional application,atabase,database configuration,bash script,basic ingredients,roject,odel,path path,code generation,scaffolding,windows users,configuration file,few minutes,config,iew,shell,models,running,mysql diff --git a/es/console-and-shells/completion-shell.rst b/es/console-and-shells/completion-shell.rst new file mode 100644 index 0000000000..c6dace293e --- /dev/null +++ b/es/console-and-shells/completion-shell.rst @@ -0,0 +1,11 @@ +Completion Shell +################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/console-and-shells/cron-jobs.rst b/es/console-and-shells/cron-jobs.rst new file mode 100644 index 0000000000..2af5686a92 --- /dev/null +++ b/es/console-and-shells/cron-jobs.rst @@ -0,0 +1,15 @@ +Running Shells as cronjobs +########################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Running Shells as cronjobs + :keywords lang=es: cronjob,bash script,crontab diff --git a/es/console-and-shells/i18n-shell.rst b/es/console-and-shells/i18n-shell.rst new file mode 100644 index 0000000000..5343f895d9 --- /dev/null +++ b/es/console-and-shells/i18n-shell.rst @@ -0,0 +1,15 @@ +I18N shell +########## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: I18N shell + :keywords lang=es: pot files,locale default,translation tools,message string,app locale,php class,validation,i18n,translations,shell,models diff --git a/es/console-and-shells/schema-management-and-migrations.rst b/es/console-and-shells/schema-management-and-migrations.rst new file mode 100644 index 0000000000..a3fbcc28e5 --- /dev/null +++ b/es/console-and-shells/schema-management-and-migrations.rst @@ -0,0 +1,15 @@ +Schema management and migrations +################################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Schema management and migrations + :keywords lang=es: schema files,schema management,schema objects,database schema,table statements,database changes,migrations,versioning,snapshots,sql,snapshot,shell,config,functionality,choices,models,php files,php file,directory,running diff --git a/es/console-and-shells/testsuite-shell.rst b/es/console-and-shells/testsuite-shell.rst new file mode 100644 index 0000000000..af0668ac0c --- /dev/null +++ b/es/console-and-shells/testsuite-shell.rst @@ -0,0 +1,15 @@ +Test shell +########## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Test Shell + :keywords lang=es: cakephp testing,test shell,testsuite,command line diff --git a/es/console-and-shells/upgrade-shell.rst b/es/console-and-shells/upgrade-shell.rst new file mode 100644 index 0000000000..9255be6dd2 --- /dev/null +++ b/es/console-and-shells/upgrade-shell.rst @@ -0,0 +1,17 @@ +.. _upgrade-shell: + +Upgrade shell +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: .. _upgrade-shell: + :keywords lang=es: api docs,shell diff --git a/es/contents.rst b/es/contents.rst index 3ab87bc51f..2092bd9483 100644 --- a/es/contents.rst +++ b/es/contents.rst @@ -8,7 +8,21 @@ Contents installation getting-started cakephp-overview + controllers + views + models + core-libraries + plugins + console-and-shells + development + deployment tutorials-and-examples + contributing + appendices .. todolist:: + +.. meta:: + :title lang=es: Contents + :keywords lang=es: core libraries,ref search,shells,deployment,appendices,glossary,models diff --git a/es/contributing.rst b/es/contributing.rst new file mode 100644 index 0000000000..aa890b00fe --- /dev/null +++ b/es/contributing.rst @@ -0,0 +1,28 @@ +Contributing +############ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +There are a number of ways you can contribute to CakePHP. The following sections +cover the various ways you can contribute to CakePHP: + +.. toctree:: + :maxdepth: 1 + + contributing/documentation + contributing/tickets + contributing/code + contributing/cakephp-coding-conventions + contributing/backwards-compatibility + contributing/cakephp-development-process + +.. meta:: + :title lang=es: Contributing + :keywords lang=es: coding conventions,documentation,maxdepth diff --git a/es/contributing/backwards-compatibility.rst b/es/contributing/backwards-compatibility.rst new file mode 100644 index 0000000000..bc7299940f --- /dev/null +++ b/es/contributing/backwards-compatibility.rst @@ -0,0 +1,11 @@ +Backwards Compatibility Guide +############################# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/contributing/cakephp-coding-conventions.rst b/es/contributing/cakephp-coding-conventions.rst new file mode 100644 index 0000000000..82667aa220 --- /dev/null +++ b/es/contributing/cakephp-coding-conventions.rst @@ -0,0 +1,15 @@ +Coding Standards +################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Coding Standards + :keywords lang=es: curly brackets,indentation level,logical errors,control structures,control structure,expr,coding standards,parenthesis,foreach,readability,moose,new features,repository,developers diff --git a/es/contributing/cakephp-development-process.rst b/es/contributing/cakephp-development-process.rst new file mode 100644 index 0000000000..770870ec5c --- /dev/null +++ b/es/contributing/cakephp-development-process.rst @@ -0,0 +1,15 @@ +CakePHP Development Process +########################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: CakePHP Development Process + :keywords lang=es: maintenance branch,community interaction,community feature,necessary feature,stable release,ticket system,advanced feature,power users,feature set,chat irc,leading edge,router,new features,members,attempt,development branches,branch development diff --git a/es/contributing/code.rst b/es/contributing/code.rst new file mode 100644 index 0000000000..1258901b29 --- /dev/null +++ b/es/contributing/code.rst @@ -0,0 +1,15 @@ +Code +#### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Code + :keywords lang=es: cakephp source code,code patches,test ref,descriptive name,bob barker,initial setup,global user,database connection,clone,repository,user information,enhancement,back patches,checkout diff --git a/es/contributing/documentation.rst b/es/contributing/documentation.rst new file mode 100644 index 0000000000..be7211abe4 --- /dev/null +++ b/es/contributing/documentation.rst @@ -0,0 +1,15 @@ +Documentation +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Documentation + :keywords lang=es: partial translations,translation efforts,html entities,text markup,asfd,asdf,structured text,english content,markdown,formatted text,dot org,repo,consistency,translator,freenode,textile,improvements,syntax,cakephp,submission diff --git a/es/contributing/tickets.rst b/es/contributing/tickets.rst new file mode 100644 index 0000000000..f7d9e85d98 --- /dev/null +++ b/es/contributing/tickets.rst @@ -0,0 +1,15 @@ +Tickets +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Tickets + :keywords lang=es: bug reporting system,code snippet,reporting security,private mailing,release announcement,google,ticket system,core team,security issue,bug tracker,irc channel,test cases,support questions,bug report,security issues,bug reports,exploits,vulnerability,repository diff --git a/es/controllers.rst b/es/controllers.rst new file mode 100644 index 0000000000..15998c2eb2 --- /dev/null +++ b/es/controllers.rst @@ -0,0 +1,23 @@ +Controllers +########### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + controllers/request-response + controllers/scaffolding + controllers/pages-controller + controllers/components + +.. meta:: + :title lang=es: Controllers + :keywords lang=es: correct models,controller class,controller controller,core library,single model,request data,middle man,bakery,mvc,attributes,logic,recipes diff --git a/es/controllers/components.rst b/es/controllers/components.rst new file mode 100644 index 0000000000..a248200783 --- /dev/null +++ b/es/controllers/components.rst @@ -0,0 +1,15 @@ +Components +########## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Components + :keywords lang=es: array controller,core libraries,authentication request,array name,access control lists,public components,controller code,core components,cookiemonster,login cookie,configuration settings,functionality,logic,sessions,cakephp,doc diff --git a/es/controllers/pages-controller.rst b/es/controllers/pages-controller.rst new file mode 100644 index 0000000000..6057380272 --- /dev/null +++ b/es/controllers/pages-controller.rst @@ -0,0 +1,15 @@ +The Pages Controller +#################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: The Pages Controller + :keywords lang=es: pages controller,default controller,lib,cakephp,ships,php,file folder diff --git a/es/controllers/request-response.rst b/es/controllers/request-response.rst new file mode 100644 index 0000000000..eb0c8cc008 --- /dev/null +++ b/es/controllers/request-response.rst @@ -0,0 +1,15 @@ +Request and Response objects +############################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Request and Response objects + :keywords lang=es: request controller,request parameters,array indexes,purpose index,response objects,domain information,request object,request data,interrogating,params,previous versions,introspection,dispatcher,rout,data structures,arrays,ip address,migration,indexes,cakephp diff --git a/es/controllers/scaffolding.rst b/es/controllers/scaffolding.rst new file mode 100644 index 0000000000..49fb19ca91 --- /dev/null +++ b/es/controllers/scaffolding.rst @@ -0,0 +1,15 @@ +Scaffolding +########### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Scaffolding + :keywords lang=es: database schemas,loose structure,scaffolding,scaffold,php class,database tables,web developer,downside,web application,logic,developers,cakephp,running,current,delete,database application diff --git a/es/core-libraries.rst b/es/core-libraries.rst new file mode 100644 index 0000000000..263b703169 --- /dev/null +++ b/es/core-libraries.rst @@ -0,0 +1,84 @@ +Core Libraries +############## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +CakePHP comes with a plethora of built-in functions and classes. These classes +and functions try to cover some of the most common features required in web +applications. + +General Purpose +=============== + +General purpose libraries are available and reused in many places across +CakePHP. + +.. toctree:: + :maxdepth: 2 + + core-libraries/toc-general-purpose + +.. _core-behaviors: + +Behaviors +========= + +.. include:: /core-libraries/toc-behaviors.rst + :start-line: 3 + :end-before: toctree + +.. toctree:: + :maxdepth: 2 + + core-libraries/toc-behaviors + +.. _core-components: + +Components +========== + +.. include:: /core-libraries/toc-components.rst + :start-line: 3 + :end-before: toctree + +.. toctree:: + :maxdepth: 2 + + /core-libraries/toc-components + +.. _core-helpers: + +Helpers +======= + +.. include:: /core-libraries/toc-helpers.rst + :start-line: 3 + :end-before: toctree + +.. toctree:: + :maxdepth: 2 + + /core-libraries/toc-helpers + +Utilities +========= + +Beyond the core MVC components, CakePHP includes a great selection of utility +classes that help you do everything from webservice requests, to caching, to +logging, internationalization and more. + +.. toctree:: + :maxdepth: 2 + + core-libraries/toc-utilities + +.. meta:: + :title lang=es: Core Libraries + :keywords lang=es: core libraries,global constants,cookie,access control lists,number,text,time,security component,core components,general purpose,web applications,markup,authentication,api,cakephp,functionality,sessions,collections,events diff --git a/es/core-libraries/behaviors/acl.rst b/es/core-libraries/behaviors/acl.rst new file mode 100644 index 0000000000..c0f867de44 --- /dev/null +++ b/es/core-libraries/behaviors/acl.rst @@ -0,0 +1,17 @@ +ACL +### + +.. php:class:: AclBehavior() + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: ACL + :keywords lang=es: group node,array type,root node,acl system,acl entry,parent child relationships,model reference,php class,aros,group id,aco,aro,user group,alias,fly diff --git a/es/core-libraries/behaviors/containable.rst b/es/core-libraries/behaviors/containable.rst new file mode 100644 index 0000000000..659fb162b7 --- /dev/null +++ b/es/core-libraries/behaviors/containable.rst @@ -0,0 +1,17 @@ +Containable +########### + +.. php:class:: ContainableBehavior() + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Containable + :keywords lang=es: model behavior,author daniel,article content,new addition,wear and tear,array,aaa,email,fly,models diff --git a/es/core-libraries/behaviors/translate.rst b/es/core-libraries/behaviors/translate.rst new file mode 100644 index 0000000000..b80b623c3c --- /dev/null +++ b/es/core-libraries/behaviors/translate.rst @@ -0,0 +1,17 @@ +Translate +######### + +.. php:class:: TranslateBehavior() + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Translate + :keywords lang=es: invalid sql,correct layout,translation table,layout changes,database tables,array,queries,cakephp,models,translate,public name diff --git a/es/core-libraries/behaviors/tree.rst b/es/core-libraries/behaviors/tree.rst new file mode 100644 index 0000000000..677e77cbfa --- /dev/null +++ b/es/core-libraries/behaviors/tree.rst @@ -0,0 +1,17 @@ +Tree +#### + +.. php:class:: TreeBehavior() + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Tree + :keywords lang=es: auto increment,literal representation,parent id,table categories,database table,hierarchical data,null value,menu system,intricacies,access control,hierarchy,logic,elements,trees diff --git a/es/core-libraries/caching.rst b/es/core-libraries/caching.rst new file mode 100644 index 0000000000..6bb1c5fa93 --- /dev/null +++ b/es/core-libraries/caching.rst @@ -0,0 +1,15 @@ +Caching +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Caching + :keywords lang=es: uniform api,xcache,cache engine,cache system,atomic operations,php class,disk storage,static methods,php extension,consistent manner,similar features,apc,memcache,queries,cakephp,elements,servers,memory diff --git a/es/core-libraries/collections.rst b/es/core-libraries/collections.rst new file mode 100644 index 0000000000..17538c8909 --- /dev/null +++ b/es/core-libraries/collections.rst @@ -0,0 +1,15 @@ +Collections +########### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Collections + :keywords lang=es: array name,loading components,several different kinds,unified api,loading objects,component names,special key,core components,callbacks,prg,callback,alias,fatal error,collections,memory,priority,priorities diff --git a/es/core-libraries/components/access-control-lists.rst b/es/core-libraries/components/access-control-lists.rst new file mode 100644 index 0000000000..761eb59afe --- /dev/null +++ b/es/core-libraries/components/access-control-lists.rst @@ -0,0 +1,17 @@ +Access Control Lists +#################### + +.. php:class:: AclComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Access Control Lists + :keywords lang=es: fantasy novel,access control list,request objects,online diary,request object,acls,adventurers,gandalf,lingo,web service,computer system,grandma,lord of the rings,entities,assets,logic,cakephp,stuff,control objects,control object diff --git a/es/core-libraries/components/authentication.rst b/es/core-libraries/components/authentication.rst new file mode 100644 index 0000000000..1ea3162a41 --- /dev/null +++ b/es/core-libraries/components/authentication.rst @@ -0,0 +1,17 @@ +Authentication +############## + +.. php:class:: AuthComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Authentication + :keywords lang=es: authentication handlers,array php,basic authentication,web application,different ways,credentials,exceptions,cakephp,logging diff --git a/es/core-libraries/components/cookie.rst b/es/core-libraries/components/cookie.rst new file mode 100644 index 0000000000..a02f70fbc3 --- /dev/null +++ b/es/core-libraries/components/cookie.rst @@ -0,0 +1,17 @@ +Cookie +###### + +.. php:class:: CookieComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Cookie + :keywords lang=es: array controller,php setcookie,cookie string,controller setup,string domain,default description,string name,session cookie,integers,variables,domain name,null diff --git a/es/core-libraries/components/email.rst b/es/core-libraries/components/email.rst new file mode 100644 index 0000000000..9fa9301f67 --- /dev/null +++ b/es/core-libraries/components/email.rst @@ -0,0 +1,15 @@ +EmailComponent +############## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: EmailComponent + :keywords lang=es: component subject,component delivery,php class,template layout,custom headers,template method,filenames,alias,lib,array,email,migration,attachments,elements,sun diff --git a/es/core-libraries/components/pagination.rst b/es/core-libraries/components/pagination.rst new file mode 100644 index 0000000000..8bdfac3a79 --- /dev/null +++ b/es/core-libraries/components/pagination.rst @@ -0,0 +1,17 @@ +Pagination +########## + +.. php:class:: PaginatorComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Pagination + :keywords lang=es: order array,query conditions,php class,web applications,headaches,obstacles,complexity,programmers,parameters,paginate,designers,cakephp,satisfaction,developers diff --git a/es/core-libraries/components/request-handling.rst b/es/core-libraries/components/request-handling.rst new file mode 100644 index 0000000000..528033e8b4 --- /dev/null +++ b/es/core-libraries/components/request-handling.rst @@ -0,0 +1,17 @@ +Request Handling +################ + +.. php:class:: RequestHandlerComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Request Handling + :keywords lang=es: handler component,javascript libraries,public components,null returns,model data,request data,content types,file extensions,ajax,meth,content type,array,conjunction,cakephp,insight,php diff --git a/es/core-libraries/components/security-component.rst b/es/core-libraries/components/security-component.rst new file mode 100644 index 0000000000..6e083907ed --- /dev/null +++ b/es/core-libraries/components/security-component.rst @@ -0,0 +1,17 @@ +Security +######## + +.. php:class:: SecurityComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Security + :keywords lang=es: configurable parameters,security component,configuration parameters,invalid request,protection features,tighter security,holing,php class,meth,404 error,period of inactivity,csrf,array,submission,security class,disable security,unlockActions diff --git a/es/core-libraries/components/sessions.rst b/es/core-libraries/components/sessions.rst new file mode 100644 index 0000000000..09d6d91a3e --- /dev/null +++ b/es/core-libraries/components/sessions.rst @@ -0,0 +1,17 @@ +Sessions +######## + +.. php:class:: SessionComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Sessions + :keywords lang=es: php array,dailyplanet com,configuration documentation,dot notation,feedback messages,reading data,session data,page requests,clark kent,dots,existence,sessions,convenience,cakephp diff --git a/es/core-libraries/events.rst b/es/core-libraries/events.rst new file mode 100644 index 0000000000..deb7844168 --- /dev/null +++ b/es/core-libraries/events.rst @@ -0,0 +1,23 @@ +Events System +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + /core-libraries/collections + /models/behaviors + /controllers/components + /views/helpers + +.. meta:: + :title lang=es: Events system + :keywords lang=es: events, dispatch, decoupling, cakephp, callbacks, triggers, hooks, php diff --git a/es/core-libraries/global-constants-and-functions.rst b/es/core-libraries/global-constants-and-functions.rst new file mode 100644 index 0000000000..eba37cc208 --- /dev/null +++ b/es/core-libraries/global-constants-and-functions.rst @@ -0,0 +1,15 @@ +Global Constants and Functions +############################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Global Constants and Functions + :keywords lang=es: internationalization and localization,global constants,example config,array php,convenience functions,core libraries,component classes,optional number,global functions,string string,core classes,format strings,unread messages,placeholders,useful functions,sprintf,arrays,parameters,existence,translations diff --git a/es/core-libraries/helpers/cache.rst b/es/core-libraries/helpers/cache.rst new file mode 100644 index 0000000000..216f2bbcfa --- /dev/null +++ b/es/core-libraries/helpers/cache.rst @@ -0,0 +1,18 @@ +CacheHelper +########### + +.. php:class:: CacheHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: CacheHelper + :description lang=es: The Cache helper assists in caching entire layouts and views, saving time repetitively retrieving data. + :keywords lang=es: cache helper,view caching,cache action,cakephp cache,nocache,clear cache diff --git a/es/core-libraries/helpers/form.rst b/es/core-libraries/helpers/form.rst new file mode 100644 index 0000000000..b84baa50bc --- /dev/null +++ b/es/core-libraries/helpers/form.rst @@ -0,0 +1,18 @@ +FormHelper +########## + +.. php:class:: FormHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: FormHelper + :description lang=es: The FormHelper focuses on creating forms quickly, in a way that will streamline validation, re-population and layout. + :keywords lang=es: html helper,cakephp html,form create,form input,form select,form file field,form label,form text,form password,form checkbox,form radio,form submit,form date time,form error,validate upload,unlock field,form security diff --git a/es/core-libraries/helpers/html.rst b/es/core-libraries/helpers/html.rst new file mode 100644 index 0000000000..edc55ea5c2 --- /dev/null +++ b/es/core-libraries/helpers/html.rst @@ -0,0 +1,18 @@ +HtmlHelper +########## + +.. php:class:: HtmlHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: HtmlHelper + :description lang=es: The role of the HtmlHelper in CakePHP is to make HTML-related options easier, faster, and more resilient to change. + :keywords lang=es: 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/es/core-libraries/helpers/js.rst b/es/core-libraries/helpers/js.rst new file mode 100644 index 0000000000..676bb9899b --- /dev/null +++ b/es/core-libraries/helpers/js.rst @@ -0,0 +1,18 @@ +JsHelper +######## + +.. php:class:: JsHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: JsHelper + :description lang=es: The Js Helper supports the JavaScript libraries Prototype, jQuery and Mootools and provides methods for manipulating javascript. + :keywords lang=es: js helper,javascript,cakephp jquery,cakephp mootools,cakephp prototype,cakephp jquery ui,cakephp scriptaculous,cakephp javascript,javascript engine diff --git a/es/core-libraries/helpers/number.rst b/es/core-libraries/helpers/number.rst new file mode 100644 index 0000000000..86e133f2f4 --- /dev/null +++ b/es/core-libraries/helpers/number.rst @@ -0,0 +1,18 @@ +NumberHelper +############ + +.. php:class:: NumberHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: NumberHelper + :description lang=es: The Number Helper contains convenience methods that enable display numbers in common formats in your views. + :keywords lang=es: number helper,currency,number format,number precision,format file size,format numbers diff --git a/es/core-libraries/helpers/paginator.rst b/es/core-libraries/helpers/paginator.rst new file mode 100644 index 0000000000..675c28c802 --- /dev/null +++ b/es/core-libraries/helpers/paginator.rst @@ -0,0 +1,18 @@ +Paginator +######### + +.. php:class:: PaginatorHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: PaginatorHelper + :description lang=es: The Pagination helper is used to output pagination controls such as page numbers and next/previous links. + :keywords lang=es: paginator helper,pagination,sort,page number links,pagination in views,prev link,next link,last link,first link,page counter diff --git a/es/core-libraries/helpers/rss.rst b/es/core-libraries/helpers/rss.rst new file mode 100644 index 0000000000..ebe55def29 --- /dev/null +++ b/es/core-libraries/helpers/rss.rst @@ -0,0 +1,18 @@ +RSS +### + +.. php:class:: RssHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: RssHelper + :description lang=es: The RSS helper makes generating XML for RSS feeds easy. + :keywords lang=es: rss helper,rss feed,isrss,rss item,channel data,document data,parse extensions,request handler diff --git a/es/core-libraries/helpers/session.rst b/es/core-libraries/helpers/session.rst new file mode 100644 index 0000000000..b18a4e89f7 --- /dev/null +++ b/es/core-libraries/helpers/session.rst @@ -0,0 +1,18 @@ +SessionHelper +############# + +.. php:class:: SessionHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: SessionHelper + :description lang=es: As a natural counterpart to the Session Component, the Session Helper replicates most of the component's functionality and makes it available in your view. + :keywords lang=es: session helper,flash messages,session flash,session read,session check diff --git a/es/core-libraries/helpers/text.rst b/es/core-libraries/helpers/text.rst new file mode 100644 index 0000000000..4e071f87a3 --- /dev/null +++ b/es/core-libraries/helpers/text.rst @@ -0,0 +1,22 @@ +TextHelper +########## + +.. php:class:: TextHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. include:: ../../core-utility-libraries/string.rst + :start-after: start-string + :end-before: end-string + +.. meta:: + :title lang=es: TextHelper + :description lang=es: The Text Helper contains methods to make text more usable and friendly in your views. + :keywords lang=es: text helper,autoLinkEmails,autoLinkUrls,autoLink,excerpt,highlight,stripLinks,truncate,string text diff --git a/es/core-libraries/helpers/time.rst b/es/core-libraries/helpers/time.rst new file mode 100644 index 0000000000..8c7e2d9fb9 --- /dev/null +++ b/es/core-libraries/helpers/time.rst @@ -0,0 +1,22 @@ +TimeHelper +########## + +.. php:class:: TimeHelper(View $view, array $settings = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. include:: ../../core-utility-libraries/time.rst + :start-after: start-caketime + :end-before: end-caketime + +.. meta:: + :title lang=es: TimeHelper + :description lang=es: The Time Helper will help you format time and test time. + :keywords lang=es: time helper,format time,timezone,unix epoch,time strings,time zone offset,utc,gmt diff --git a/es/core-libraries/internationalization-and-localization.rst b/es/core-libraries/internationalization-and-localization.rst new file mode 100644 index 0000000000..48f468fabc --- /dev/null +++ b/es/core-libraries/internationalization-and-localization.rst @@ -0,0 +1,15 @@ +Internationalization & Localization +################################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Internationalization & Localization + :keywords lang=es: internationalization localization,internationalization and localization,localization features,language application,gettext,l10n,daunting task,adaptation,pot,i18n,audience,translation,languages diff --git a/es/core-libraries/logging.rst b/es/core-libraries/logging.rst new file mode 100644 index 0000000000..9b2206f53e --- /dev/null +++ b/es/core-libraries/logging.rst @@ -0,0 +1,16 @@ +Logging +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Logging + :description lang=es: Log CakePHP data to the disk to help debug your application over longer periods of time. + :keywords lang=es: cakephp logging,log errors,debug,logging data,cakelog class,ajax logging,soap logging,debugging,logs diff --git a/es/core-libraries/toc-behaviors.rst b/es/core-libraries/toc-behaviors.rst new file mode 100644 index 0000000000..a91c37bacd --- /dev/null +++ b/es/core-libraries/toc-behaviors.rst @@ -0,0 +1,26 @@ +Behaviors +######### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +Behaviors add extra functionality to your models. CakePHP comes +with a number of built-in behaviors such as :php:class:`TreeBehavior` +and :php:class:`ContainableBehavior`. + +To learn about creating and using behaviors, read the section +on :doc:`/models/behaviors`. + +.. toctree:: + :maxdepth: 1 + + /core-libraries/behaviors/acl + /core-libraries/behaviors/containable + /core-libraries/behaviors/translate + /core-libraries/behaviors/tree diff --git a/es/core-libraries/toc-components.rst b/es/core-libraries/toc-components.rst new file mode 100644 index 0000000000..f677416feb --- /dev/null +++ b/es/core-libraries/toc-components.rst @@ -0,0 +1,26 @@ +Components +########## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +CakePHP has a selection of components to help take care of basic tasks in your +controllers. See the section on :doc:`/controllers/components` for how to +configure and use components. + +.. toctree:: + :maxdepth: 1 + + /core-libraries/components/pagination + /core-libraries/components/sessions + /core-libraries/components/authentication + /core-libraries/components/security-component + /core-libraries/components/request-handling + /core-libraries/components/cookie + /core-libraries/components/access-control-lists diff --git a/es/core-libraries/toc-general-purpose.rst b/es/core-libraries/toc-general-purpose.rst new file mode 100644 index 0000000000..03a167793b --- /dev/null +++ b/es/core-libraries/toc-general-purpose.rst @@ -0,0 +1,19 @@ +General Purpose +############### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 2 + + global-constants-and-functions + ../core-utility-libraries/app + events + collections diff --git a/es/core-libraries/toc-helpers.rst b/es/core-libraries/toc-helpers.rst new file mode 100644 index 0000000000..b9c1a38eaf --- /dev/null +++ b/es/core-libraries/toc-helpers.rst @@ -0,0 +1,33 @@ +Helpers +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +CakePHP features a number of helpers that aid in view creation. They assist in +creating well-formed markup (including forms), aid in formatting text, times and +numbers, and can even integrate with popular JavaScript libraries. Here is a +summary of the built-in helpers. + +Read :doc:`/views/helpers` to learn more about helpers, their API, and how you +can create and use your own helpers. + +.. toctree:: + :maxdepth: 1 + + /core-libraries/helpers/cache + /core-libraries/helpers/form + /core-libraries/helpers/html + /core-libraries/helpers/js + /core-libraries/helpers/number + /core-libraries/helpers/paginator + /core-libraries/helpers/rss + /core-libraries/helpers/session + /core-libraries/helpers/text + /core-libraries/helpers/time diff --git a/es/core-libraries/toc-utilities.rst b/es/core-libraries/toc-utilities.rst new file mode 100644 index 0000000000..ecd2ea3f0f --- /dev/null +++ b/es/core-libraries/toc-utilities.rst @@ -0,0 +1,31 @@ +Utilities +######### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 2 + + caching + ../core-utility-libraries/email + ../core-utility-libraries/file-folder + ../core-utility-libraries/hash + ../core-utility-libraries/httpsocket + ../core-utility-libraries/inflector + internationalization-and-localization + logging + ../core-utility-libraries/number + ../core-utility-libraries/router + ../core-utility-libraries/sanitize + ../core-utility-libraries/security + ../core-utility-libraries/set + ../core-utility-libraries/string + ../core-utility-libraries/time + ../core-utility-libraries/xml diff --git a/es/core-utility-libraries/app.rst b/es/core-utility-libraries/app.rst new file mode 100644 index 0000000000..3f7fed984c --- /dev/null +++ b/es/core-utility-libraries/app.rst @@ -0,0 +1,17 @@ +App Class +######### + +.. php:class:: App + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: App Class + :keywords lang=es: compatible implementation,model behaviors,path management,loading files,php class,class loading,model behavior,class location,component model,management class,autoloader,classname,directory location,override,conventions,lib,textile,cakephp,php classes,loaded diff --git a/es/core-utility-libraries/email.rst b/es/core-utility-libraries/email.rst new file mode 100644 index 0000000000..1b24aaf365 --- /dev/null +++ b/es/core-utility-libraries/email.rst @@ -0,0 +1,17 @@ +CakeEmail +######### + +.. php:class:: CakeEmail(mixed $config = null) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: CakeEmail + :keywords lang=es: sending mail,email sender,envelope sender,php class,database configuration,sending emails,meth,shells,smtp,transports,attributes,array,config,flexibility,php email,new email,sending email,models diff --git a/es/core-utility-libraries/file-folder.rst b/es/core-utility-libraries/file-folder.rst new file mode 100644 index 0000000000..5ed8e5803b --- /dev/null +++ b/es/core-utility-libraries/file-folder.rst @@ -0,0 +1,16 @@ +Folder & File +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Folder & File + :description lang=es: The Folder and File utilities are convenience classes to help you read, write, and append to files; list files within a folder and other common directory related tasks. + :keywords lang=es: file,folder,cakephp utility,read file,write file,append file,recursively copy,copy options,folder path,class folder,file php,php files,change directory,file utilities,new folder,directory structure,delete file diff --git a/es/core-utility-libraries/hash.rst b/es/core-utility-libraries/hash.rst new file mode 100644 index 0000000000..d60d0899e8 --- /dev/null +++ b/es/core-utility-libraries/hash.rst @@ -0,0 +1,17 @@ +Hash +#### + +.. php:class:: Hash + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Hash + :keywords lang=es: array array,path array,array name,numeric key,regular expression,result set,person name,brackets,syntax,cakephp,elements,php,set path diff --git a/es/core-utility-libraries/httpsocket.rst b/es/core-utility-libraries/httpsocket.rst new file mode 100644 index 0000000000..e70963f6e4 --- /dev/null +++ b/es/core-utility-libraries/httpsocket.rst @@ -0,0 +1,17 @@ +HttpSocket +########## + +.. php:class:: HttpSocket(mixed $config = array()) + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: HttpSocket + :keywords lang=es: array name,array data,query parameter,query string,php class,string query,test type,string data,google,query results,webservices,apis,parameters,cakephp,meth,search results diff --git a/es/core-utility-libraries/inflector.rst b/es/core-utility-libraries/inflector.rst new file mode 100644 index 0000000000..ec2f0561ad --- /dev/null +++ b/es/core-utility-libraries/inflector.rst @@ -0,0 +1,17 @@ +Inflector +######### + +.. php:class:: Inflector + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Inflector + :keywords lang=es: apple orange,word variations,apple pie,person man,latin versions,profile settings,php class,initial state,puree,slug,apples,oranges,user profile,underscore diff --git a/es/core-utility-libraries/number.rst b/es/core-utility-libraries/number.rst new file mode 100644 index 0000000000..597640778a --- /dev/null +++ b/es/core-utility-libraries/number.rst @@ -0,0 +1,18 @@ +CakeNumber +########## + +.. php:class:: CakeNumber() + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: NumberHelper + :description lang=es: The Number Helper contains convenience methods that enable display numbers in common formats in your views. + :keywords lang=es: number helper,currency,number format,number precision,format file size,format numbers diff --git a/es/core-utility-libraries/router.rst b/es/core-utility-libraries/router.rst new file mode 100644 index 0000000000..2e8d022aed --- /dev/null +++ b/es/core-utility-libraries/router.rst @@ -0,0 +1,15 @@ +Router +###### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Router + :keywords lang=es: array controller,php class,indexes,urls,configure router,parameters diff --git a/es/core-utility-libraries/sanitize.rst b/es/core-utility-libraries/sanitize.rst new file mode 100644 index 0000000000..834c0af258 --- /dev/null +++ b/es/core-utility-libraries/sanitize.rst @@ -0,0 +1,11 @@ +Data Sanitization +################# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/core-utility-libraries/security.rst b/es/core-utility-libraries/security.rst new file mode 100644 index 0000000000..87b2a98b9b --- /dev/null +++ b/es/core-utility-libraries/security.rst @@ -0,0 +1,17 @@ +Security +######## + +.. php:class:: Security + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Security + :keywords lang=es: security api,secret password,cipher text,php class,class security,text key,security library,object instance,security measures,basic security,security level,string type,fallback,hash,data security,singleton,inactivity,php encrypt,implementation,php security diff --git a/es/core-utility-libraries/set.rst b/es/core-utility-libraries/set.rst new file mode 100644 index 0000000000..8fb25ebd4f --- /dev/null +++ b/es/core-utility-libraries/set.rst @@ -0,0 +1,17 @@ +Set +### + +.. php:class:: Set + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Set + :keywords lang=es: array array,path array,array name,numeric key,regular expression,result set,person name,brackets,syntax,cakephp,elements,php,set path diff --git a/es/core-utility-libraries/string.rst b/es/core-utility-libraries/string.rst new file mode 100644 index 0000000000..8b72e67b03 --- /dev/null +++ b/es/core-utility-libraries/string.rst @@ -0,0 +1,17 @@ +String +###### + +.. php:class:: String + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: String + :keywords lang=es: array php,array name,string options,data options,result string,class string,string data,string class,placeholders,default method,key value,markup,rfc,replacements,convenience,templates diff --git a/es/core-utility-libraries/time.rst b/es/core-utility-libraries/time.rst new file mode 100644 index 0000000000..929c977095 --- /dev/null +++ b/es/core-utility-libraries/time.rst @@ -0,0 +1,18 @@ +CakeTime +######## + +.. php:class:: CakeTime() + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: CakeTime + :description lang=es: CakeTime class helps you format time and test time. + :keywords lang=es: time,format time,timezone,unix epoch,time strings,time zone offset,utc,gmt diff --git a/es/core-utility-libraries/xml.rst b/es/core-utility-libraries/xml.rst new file mode 100644 index 0000000000..5640c46d43 --- /dev/null +++ b/es/core-utility-libraries/xml.rst @@ -0,0 +1,17 @@ +Xml +### + +.. php:class:: Xml + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Xml + :keywords lang=es: array php,xml class,xml objects,post xml,xml object,string url,string data,xml parser,php 5,bakery,constructor,php xml,cakephp,php file,unicorns,meth diff --git a/es/development.rst b/es/development.rst new file mode 100644 index 0000000000..916491dd55 --- /dev/null +++ b/es/development.rst @@ -0,0 +1,32 @@ +Development +########### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +In this section we'll cover the various aspects of developing a CakePHP +application. Topics like Configuration, handling errors & exceptions, +debugging, and testing will be covered. + +.. toctree:: + :maxdepth: 1 + + development/configuration + development/routing + development/sessions + development/exceptions + development/errors + development/debugging + development/testing + development/rest + development/dispatch-filters + +.. meta:: + :title lang=es: Development + :keywords lang=es: development sessions,debugging,exceptions diff --git a/es/development/configuration.rst b/es/development/configuration.rst new file mode 100644 index 0000000000..322d2a7453 --- /dev/null +++ b/es/development/configuration.rst @@ -0,0 +1,15 @@ +Configuration +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Configuration + :keywords lang=es: finished configuration,legacy database,database configuration,value pairs,default connection,optional configuration,example database,php class,configuration database,default database,configuration steps,index database,configuration details,class database,host localhost,inflections,key value,database connection,piece of cake,basic web diff --git a/es/development/debugging.rst b/es/development/debugging.rst new file mode 100644 index 0000000000..dc23a04f21 --- /dev/null +++ b/es/development/debugging.rst @@ -0,0 +1,16 @@ +Debugging +######### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Debugging + :description lang=es: Debugging CakePHP with the Debugger class, logging, basic debugging and using the DebugKit plugin. + :keywords lang=es: code excerpt,stack trace,default output,error link,default error,web requests,error report,debugger,arrays,different ways,excerpt from,cakephp,ide,options diff --git a/es/development/dispatch-filters.rst b/es/development/dispatch-filters.rst new file mode 100644 index 0000000000..06f9e8df0c --- /dev/null +++ b/es/development/dispatch-filters.rst @@ -0,0 +1,16 @@ +Dispatcher Filters +################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Dispatcher Filters + :description lang=es: Dispatcher filters are a middleware layer for CakePHP allowing to alter the request or response before it is sent + :keywords lang=es: middleware, filters, dispatcher, request, response, rack, application stack, events, beforeDispatch, afterDispatch, router diff --git a/es/development/errors.rst b/es/development/errors.rst new file mode 100644 index 0000000000..910dd10998 --- /dev/null +++ b/es/development/errors.rst @@ -0,0 +1,15 @@ +Error Handling +############## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Error Handling + :keywords lang=es: stack traces,error constants,error array,default displays,anonymous functions,error handlers,default error,error level,exception handler,php error,error handler,write error,core classes,exception handling,configuration error,application code,callback,custom error,exceptions,bitmasks,fatal error diff --git a/es/development/exceptions.rst b/es/development/exceptions.rst new file mode 100644 index 0000000000..0f2418d9d0 --- /dev/null +++ b/es/development/exceptions.rst @@ -0,0 +1,15 @@ +Exceptions +########## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Exceptions + :keywords lang=es: uncaught exceptions,stack traces,logic errors,anonymous functions,renderer,html page,error messages,flexibility,lib,array,cakephp,php diff --git a/es/development/rest.rst b/es/development/rest.rst new file mode 100644 index 0000000000..5566464f1a --- /dev/null +++ b/es/development/rest.rst @@ -0,0 +1,15 @@ +REST +#### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: REST + :keywords lang=es: application programmers,default routes,core functionality,result format,mashups,recipe database,request method,easy access,config,soap,recipes,logic,audience,cakephp,running,api diff --git a/es/development/routing.rst b/es/development/routing.rst new file mode 100644 index 0000000000..29b5a128ce --- /dev/null +++ b/es/development/routing.rst @@ -0,0 +1,15 @@ +Routing +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Routing + :keywords lang=es: controller actions,default routes,mod rewrite,code index,string url,php class,incoming requests,dispatcher,url url,meth,maps,match,parameters,array,config,cakephp,apache,router diff --git a/es/development/sessions.rst b/es/development/sessions.rst new file mode 100644 index 0000000000..671d08ecd0 --- /dev/null +++ b/es/development/sessions.rst @@ -0,0 +1,15 @@ +Sessions +######## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Sessions + :keywords lang=es: session defaults,session classes,utility features,session timeout,session ids,persistent data,session key,session cookie,session data,last session,core database,security level,useragent,security reasons,session id,attr,countdown,regeneration,sessions,config diff --git a/es/development/testing.rst b/es/development/testing.rst new file mode 100644 index 0000000000..828e27438a --- /dev/null +++ b/es/development/testing.rst @@ -0,0 +1,15 @@ +Testing +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Testing + :keywords lang=es: web runner,phpunit,test database,database configuration,database setup,database test,public test,test framework,running one,test setup,de facto standard,pear,runners,array,databases,cakephp,php,integration diff --git a/es/epub-contents.rst b/es/epub-contents.rst index 11b3e5748f..94f3823f9b 100644 --- a/es/epub-contents.rst +++ b/es/epub-contents.rst @@ -4,8 +4,8 @@ Contents .. toctree:: :maxdepth: 3 - installation getting-started + installation cakephp-overview tutorials-and-examples diff --git a/es/getting-started/cakephp-conventions.rst b/es/getting-started/cakephp-conventions.rst index a3da764baa..3473c917bc 100644 --- a/es/getting-started/cakephp-conventions.rst +++ b/es/getting-started/cakephp-conventions.rst @@ -187,8 +187,8 @@ Si usas estas convenciones, CakePHP sabrá que una llamada a http://example.com/people/ se mapeará a una llamada al método index() del controlador PeopleController, donde el modelo Person será instanciado automáticamente para su uso (leerá los datos de la tabla 'people' en la base -de datos). Ninguna de estas relaciones necesita ser creada ni configurada s -nombras de la forma correcta los los ficheros que de todos modos tienes que +de datos). Ninguna de estas relaciones necesita ser creada ni configurada si +nombras de la forma correcta los ficheros que de todos modos tienes que crear para que tu aplicación funcione. Ahora conoces los fundamentos y convenciones que debes utilizar en CakePHP, diff --git a/es/installation/url-rewriting.rst b/es/installation/url-rewriting.rst new file mode 100644 index 0000000000..9b5b82801c --- /dev/null +++ b/es/installation/url-rewriting.rst @@ -0,0 +1,15 @@ +URL Rewriting +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: URL Rewriting + :keywords lang=es: url rewriting, mod_rewrite, apache, iis, plugin assets, nginx diff --git a/es/models.rst b/es/models.rst new file mode 100644 index 0000000000..d8008be622 --- /dev/null +++ b/es/models.rst @@ -0,0 +1,31 @@ +Models +###### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + models/associations-linking-models-together + models/retrieving-your-data + models/saving-your-data + models/deleting-data + models/data-validation + models/callback-methods + models/behaviors + models/datasources + models/model-attributes + models/additional-methods-and-properties + models/virtual-fields + models/transactions + +.. meta:: + :title lang=es: Models + :keywords lang=es: information workflow,csv file,object oriented programming,model class,model classes,model definition,internal model,core model,simple declaration,application model,php class,database table,data model,data access,external web,inheritance,different ways,validity,functionality,queries diff --git a/es/models/additional-methods-and-properties.rst b/es/models/additional-methods-and-properties.rst new file mode 100644 index 0000000000..82876048c2 --- /dev/null +++ b/es/models/additional-methods-and-properties.rst @@ -0,0 +1,15 @@ +Additional Methods and Properties +################################# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Additional Methods and Properties + :keywords lang=es: model classes,model functions,model class,interval,array diff --git a/es/models/associations-linking-models-together.rst b/es/models/associations-linking-models-together.rst new file mode 100644 index 0000000000..c5828d60eb --- /dev/null +++ b/es/models/associations-linking-models-together.rst @@ -0,0 +1,15 @@ +Associations: Linking Models Together +##################################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Associations: Linking Models Together + :keywords lang=es: relationship types,relational mapping,recipe database,relational database,this section covers,web applications,recipes,models,cakephp,storage diff --git a/es/models/behaviors.rst b/es/models/behaviors.rst new file mode 100644 index 0000000000..d2a8f17176 --- /dev/null +++ b/es/models/behaviors.rst @@ -0,0 +1,15 @@ +Behaviors +######### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Behaviors + :keywords lang=es: tree manipulation,manipulation methods,model behaviors,access control list,model class,tree structures,php class,business contract,class category,database table,bakery,inheritance,functionality,interaction,logic,cakephp,models,essence diff --git a/es/models/callback-methods.rst b/es/models/callback-methods.rst new file mode 100644 index 0000000000..c1b94ccc01 --- /dev/null +++ b/es/models/callback-methods.rst @@ -0,0 +1,15 @@ +Callback Methods +################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Callback Methods + :keywords lang=es: querydata,query conditions,model classes,callback methods,special functions,return values,counterparts,array,logic,decisions diff --git a/es/models/data-validation.rst b/es/models/data-validation.rst new file mode 100644 index 0000000000..ce31effb8d --- /dev/null +++ b/es/models/data-validation.rst @@ -0,0 +1,20 @@ +Data Validation +############### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + data-validation/validating-data-from-the-controller + +.. meta:: + :title lang=es: Data Validation + :keywords lang=es: validation rules,validation data,validation errors,data validation,credit card numbers,core libraries,password email,model fields,login field,model definition,php class,many different aspects,eight characters,letters and numbers,business rules,validation process,date validation,error messages,array,formatting diff --git a/es/models/data-validation/validating-data-from-the-controller.rst b/es/models/data-validation/validating-data-from-the-controller.rst new file mode 100644 index 0000000000..1a33ead821 --- /dev/null +++ b/es/models/data-validation/validating-data-from-the-controller.rst @@ -0,0 +1,15 @@ +Validating Data from the Controller +################################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Validating Data from the Controller + :keywords lang=es: password rules,validations,subset,array,logs,logic,email,first name last name,models,options,data model diff --git a/es/models/datasources.rst b/es/models/datasources.rst new file mode 100644 index 0000000000..0028653360 --- /dev/null +++ b/es/models/datasources.rst @@ -0,0 +1,15 @@ +DataSources +########### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: DataSources + :keywords lang=es: 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 diff --git a/es/models/deleting-data.rst b/es/models/deleting-data.rst new file mode 100644 index 0000000000..39ec2410f1 --- /dev/null +++ b/es/models/deleting-data.rst @@ -0,0 +1,15 @@ +Deleting Data +############# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Deleting Data + :keywords lang=es: doc models,custom logic,callback methods,model class,database model,callbacks,information model,request data,deleteall,fragment,leverage,array,cakephp,failure,recipes,benefit,delete,data model diff --git a/es/models/model-attributes.rst b/es/models/model-attributes.rst new file mode 100644 index 0000000000..f1ed88f029 --- /dev/null +++ b/es/models/model-attributes.rst @@ -0,0 +1,15 @@ +Model Attributes +################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Model Attributes + :keywords lang=es: alternate table,default model,database configuration,model example,database table,default database,model class,model behavior,class model,plural form,database connections,database connection,attribute,attributes,complete list,config,cakephp,api,class example diff --git a/es/models/retrieving-your-data.rst b/es/models/retrieving-your-data.rst new file mode 100644 index 0000000000..5151170809 --- /dev/null +++ b/es/models/retrieving-your-data.rst @@ -0,0 +1,15 @@ +Retrieving Your Data +#################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Retrieving Your Data + :keywords lang=es: upper case character,array model,order array,controller code,retrieval functions,model layer,model methods,model class,model data,data retrieval,field names,workhorse,desc,neighbors,parameters,storage,models diff --git a/es/models/saving-your-data.rst b/es/models/saving-your-data.rst new file mode 100644 index 0000000000..b776f6cc8c --- /dev/null +++ b/es/models/saving-your-data.rst @@ -0,0 +1,15 @@ +Saving Your Data +################ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Saving Your Data + :keywords lang=es: doc models,validation rules,data validation,flash message,null model,table php,request data,php class,model data,database table,array,recipes,success,reason,snap,data model diff --git a/es/models/transactions.rst b/es/models/transactions.rst new file mode 100644 index 0000000000..be4d034efa --- /dev/null +++ b/es/models/transactions.rst @@ -0,0 +1,15 @@ +Transactions +############ + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Transactions + :keywords lang=es: transaction methods,datasource,rollback,data source,begin,commit,nested transaction diff --git a/es/models/virtual-fields.rst b/es/models/virtual-fields.rst new file mode 100644 index 0000000000..56131fd3c8 --- /dev/null +++ b/es/models/virtual-fields.rst @@ -0,0 +1,15 @@ +Virtual fields +############## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Virtual fields + :keywords lang=es: sql expressions,array name,model fields,sql errors,virtual field,concatenation,model name,first name last name diff --git a/es/pdf-contents.rst b/es/pdf-contents.rst index a8e02a8721..524143fc86 100644 --- a/es/pdf-contents.rst +++ b/es/pdf-contents.rst @@ -15,4 +15,3 @@ Indices and tables ================== * :ref:`genindex` -* :ref:`modindex` diff --git a/es/plugins.rst b/es/plugins.rst new file mode 100644 index 0000000000..0baf408667 --- /dev/null +++ b/es/plugins.rst @@ -0,0 +1,22 @@ +Plugins +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + plugins/how-to-install-plugins + plugins/how-to-use-plugins + plugins/how-to-create-plugins + +.. meta:: + :title lang=es: Plugins + :keywords lang=es: plugin folder,plugins,controllers,models,views,package,application,database connection,little space diff --git a/es/plugins/how-to-create-plugins.rst b/es/plugins/how-to-create-plugins.rst new file mode 100644 index 0000000000..704aa09522 --- /dev/null +++ b/es/plugins/how-to-create-plugins.rst @@ -0,0 +1,15 @@ +How To Create Plugins +##################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: How To Create Plugins + :keywords lang=es: plugin folder,configuration database,management module,little space,webroot,contactmanager,array,config,cakephp,models,php,directories,blog,plugins,applications diff --git a/es/plugins/how-to-install-plugins.rst b/es/plugins/how-to-install-plugins.rst new file mode 100644 index 0000000000..9e8fbf8e67 --- /dev/null +++ b/es/plugins/how-to-install-plugins.rst @@ -0,0 +1,15 @@ +How To Install Plugins +###################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: How To Install Plugins + :keywords lang=es: plugin folder, install, git, zip, tar, submodule, manual, clone, contactmanager, enable diff --git a/es/plugins/how-to-use-plugins.rst b/es/plugins/how-to-use-plugins.rst new file mode 100644 index 0000000000..f3e4368686 --- /dev/null +++ b/es/plugins/how-to-use-plugins.rst @@ -0,0 +1,15 @@ +How To Use Plugins +################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: How To Use Plugins + :keywords lang=es: plugin folder,configuration database,bootstrap,management module,webroot,user management,contactmanager,array,config,cakephp,models,php,directories,blog,plugins,applications diff --git a/es/tutorials-and-examples/blog-auth-example/auth.rst b/es/tutorials-and-examples/blog-auth-example/auth.rst new file mode 100644 index 0000000000..8de2514848 --- /dev/null +++ b/es/tutorials-and-examples/blog-auth-example/auth.rst @@ -0,0 +1,18 @@ +Simple Authentication and Authorization Application +################################################### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +1. :doc:`/console-and-shells/code-generation-with-bake` Generating basic CRUD code +2. :doc:`/core-libraries/components/authentication`: User registration and login + +.. meta:: + :title lang=es: Simple Authentication and Authorization Application + :keywords lang=es: auto increment,authorization application,model user,array,conventions,authentication,urls,cakephp,delete,doc,columns diff --git a/es/tutorials-and-examples/blog/part-two.rst b/es/tutorials-and-examples/blog/part-two.rst index 92a82e6eed..0a613928a0 100644 --- a/es/tutorials-and-examples/blog/part-two.rst +++ b/es/tutorials-and-examples/blog/part-two.rst @@ -293,7 +293,7 @@ Lo primero, añadir una nueva acción ``add()`` en nuestro controlador PostsCont y será compartido para todos los controladores que hereden de él. Lo que la función add() hace es: si el formulario enviado no está vacío, intenta -salvar un nuevo artículo utilizando el modelo *Post*. Si no se guarda bien, +guardar un nuevo artículo utilizando el modelo *Post*. Si no se guarda bien, muestra la vista correspondiente, así podremos mostrar los errores de validación si el artículo no se ha guardado correctamente. diff --git a/es/tutorials-and-examples/simple-acl-controlled-application/part-two.rst b/es/tutorials-and-examples/simple-acl-controlled-application/part-two.rst new file mode 100644 index 0000000000..c2ac0c7c4d --- /dev/null +++ b/es/tutorials-and-examples/simple-acl-controlled-application/part-two.rst @@ -0,0 +1,15 @@ +Simple Acl controlled Application - part 2 +########################################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Simple Acl controlled Application - part 2 + :keywords lang=es: shell interface,magic solution,aco,unzipped,config,sync,syntax,cakephp,php,running,acl diff --git a/es/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst b/es/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst new file mode 100644 index 0000000000..31b9f42c7b --- /dev/null +++ b/es/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst @@ -0,0 +1,15 @@ +Simple Acl controlled Application +################################# + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Simple Acl controlled Application + :keywords lang=es: core libraries,auto increment,object oriented programming,database schema,sql statements,php class,stable release,code generation,database server,server configuration,reins,access control,shells,mvc,authentication,web server,cakephp,servers,checkout,apache diff --git a/es/views.rst b/es/views.rst new file mode 100644 index 0000000000..ab3c5850e9 --- /dev/null +++ b/es/views.rst @@ -0,0 +1,23 @@ +Views +##### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. toctree:: + :maxdepth: 1 + + views/themes + views/media-view + views/json-and-xml-views + views/helpers + +.. meta:: + :title lang=es: Views + :keywords lang=es: view logic,csv file,response elements,code elements,default extension,json,flash object,remote application,twig,subclass,ajax,reply,soap,functionality,cakephp,audience,xml,mvc diff --git a/es/views/helpers.rst b/es/views/helpers.rst new file mode 100644 index 0000000000..95248ed5f5 --- /dev/null +++ b/es/views/helpers.rst @@ -0,0 +1,15 @@ +Helpers +####### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Helpers + :keywords lang=es: php class,time function,presentation layer,processing power,ajax,markup,array,functionality,logic,syntax,elements,cakephp,plugins diff --git a/es/views/json-and-xml-views.rst b/es/views/json-and-xml-views.rst new file mode 100644 index 0000000000..aa81c1e9d1 --- /dev/null +++ b/es/views/json-and-xml-views.rst @@ -0,0 +1,11 @@ +JSON and XML views +################## + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. diff --git a/es/views/media-view.rst b/es/views/media-view.rst new file mode 100644 index 0000000000..1c33801e06 --- /dev/null +++ b/es/views/media-view.rst @@ -0,0 +1,17 @@ +Media Views +=========== + +.. php:class:: MediaView + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Media Views + :keywords lang=es: array php,true extension,zip name,document path,mimetype,boolean value,binary files,webroot,file extension,mime type,default view,file server,authentication,parameters diff --git a/es/views/themes.rst b/es/views/themes.rst new file mode 100644 index 0000000000..0b4a450ecc --- /dev/null +++ b/es/views/themes.rst @@ -0,0 +1,15 @@ +Themes +###### + +.. note:: + La documentación no es compatible actualmente con el idioma español en esta página. + + Por favor, siéntase libre de enviarnos un pull request en + `Github `_ o utilizar el botón **Improve this Doc** para proponer directamente los cambios. + + Usted puede hacer referencia a la versión en Inglés en el menú de selección superior + para obtener información sobre el tema de esta página. + +.. meta:: + :title lang=es: Themes + :keywords lang=es: production environments,theme folder,layout files,development requests,callback functions,folder structure,default view,dispatcher,symlink,case basis,layouts,assets,cakephp,themes,advantage diff --git a/fr/appendices.rst b/fr/appendices.rst index 3d33ac7910..bfb62d162f 100644 --- a/fr/appendices.rst +++ b/fr/appendices.rst @@ -7,6 +7,14 @@ de la version 2.x ainsi qu'un guide de migration de la version 1.3 vers 2.0. 2.5 Guide de Migration ====================== +.. toctree:: + :maxdepth: 1 + + appendices/2-6-migration-guide + +2.5 Guide de Migration +====================== + .. toctree:: :maxdepth: 1 @@ -70,7 +78,6 @@ Informations générales .. toctree:: :maxdepth: 1 - appendices/cakephp-development-process appendices/glossary diff --git a/fr/appendices/2-0-migration-guide.rst b/fr/appendices/2-0-migration-guide.rst index 71cfc15073..fddb75b2cf 100755 --- a/fr/appendices/2-0-migration-guide.rst +++ b/fr/appendices/2-0-migration-guide.rst @@ -1038,7 +1038,7 @@ 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 +L'élément 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 `. @@ -1221,7 +1221,7 @@ Le driver PDO va automatiquement echapper ces valeurs pour vous. 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 + type booléen 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 diff --git a/fr/appendices/2-1-migration-guide.rst b/fr/appendices/2-1-migration-guide.rst index a98ffc1306..bdf168d913 100644 --- a/fr/appendices/2-1-migration-guide.rst +++ b/fr/appendices/2-1-migration-guide.rst @@ -264,7 +264,7 @@ HtmlHelper sur le premier lien crumb. - :php:meth:`HtmlHelper::docType()` est par défaut HTML5. - :php:meth:`HtmlHelper::image()` a maintenant une option ``fullBase``. -- :php:meth:`HtmlHelper::media()` a été ajoutée. Vous pouvez utilisez cette +- :php:meth:`HtmlHelper::media()` a été ajoutée. Vous pouvez utiliser cette méthode pour créer des éléments audio/vidéo HTML5. - Le support du :term:`syntaxe de plugin` a été ajouté pour :php:meth:`HtmlHelper::script()`, :php:meth:`HtmlHelper::css()`, @@ -306,7 +306,7 @@ Vues étendues ------------- :php:class:`View` a une nouvelle méthode vous permettant d'enrouler -ou 'étendre' une vue/élement/layout avec un autre fichier. +ou 'étendre' une vue/élément/layout avec un autre fichier. Voir la section sur :ref:`extending-views` pour plus d'informations sur cette fonctionnalité. diff --git a/fr/appendices/2-3-migration-guide.rst b/fr/appendices/2-3-migration-guide.rst index 939b8795f1..7491f9d9ea 100755 --- a/fr/appendices/2-3-migration-guide.rst +++ b/fr/appendices/2-3-migration-guide.rst @@ -271,7 +271,7 @@ FormHelper en ajoutant ``'novalidate' => true`` dans les options de FormHelper::create(). - :php:meth:`FormHelper::input()` génère maintenant les elements d'input de type ``tel`` et ``email`` basé sur les noms de champ si l'option ``type`` - n'est pas specifiée. + n'est pas spécifiée. HtmlHelper ---------- diff --git a/fr/appendices/2-5-migration-guide.rst b/fr/appendices/2-5-migration-guide.rst index 4ada0583b6..b949737788 100644 --- a/fr/appendices/2-5-migration-guide.rst +++ b/fr/appendices/2-5-migration-guide.rst @@ -9,7 +9,7 @@ Cache - Un nouvel adaptateur a été ajouté pour ``Memcached``. Ce nouvel adaptateur utilise ext/memcached au lieu de ext/memcache. Il permet d'améliorer la - performance et les connections persistentes partagées. + performance et les connexions persistentes partagées. - L'adaptateur ``Memcache`` est maintenant déprécié en faveur de ``Memcached``. - :php:meth:`Cache::remember()` a été ajoutée. - :php:meth:`Cache::config()` accepte maintenant la clé ``database`` lors de diff --git a/fr/appendices/2-6-migration-guide.rst b/fr/appendices/2-6-migration-guide.rst new file mode 100644 index 0000000000..5e049eb18e --- /dev/null +++ b/fr/appendices/2-6-migration-guide.rst @@ -0,0 +1,170 @@ +2.6 Guide de Migration +###################### + +CakePHP 2.6 est une mise à jour complète à partir de l'API de 2.5. Cette page +souligne les changements et améliorations faits dans 2.6. + +Basics.php +========== + +- ``stackTrace()`` a été ajoutée pour être une fonction de wrapper pratique pour + ``Debugger::trace()``. + Elle affiche directement un peu comme ``debug()`` le fait. Mais seulement + si le niveau de debug est activé. +- Les nouvelles fonctions i18n ont été ajoutées. Les nouvelles fonctions vous + permettent d'inclure un message de contexte ce qui vous permet d'enlever une + éventuelle ambiguité dans des chaines de message. Par exemple 'read' peut + signifier plusieurs choses en anglais selon le contexte. Les nouvelles + fonctions ``__x``, ``__xn``, ``__dx``, ``__dxn``, ``__dxc``, ``__dxcn``, et + ``__xc`` fournissent un accès à ces nouvelles fonctionnalités. + +Cache +===== + +RedisEngine +----------- + +- ``RedisEngine`` a maintenant ``Inflector::slug(APP_DIR)`` comme préfixe par + défaut. + +Console +======= + +ConsoleOptionParser +------------------- + +- ``ConsoleOptionParser::removeSubcommand()`` a été ajoutée. + +Shell +----- + +- ``overwrite()`` a été ajoutée pour permettre de générer des barres de + progression ou pour éviter de générer de nombreuses lignes en remplaçant le + texte qui a déjà été affiché à l'écran. + +Controller +========== + +AuthComponent +------------- + +- L'option``userFields`` a été ajoutée à ``AuthComponent``. +- AuthComponent déclenche maintenant un event ``Auth.afterIdentify`` après qu'un + utilisateur a été identifié et s'est connecté. L'event va contenir + l'utilisateur connecté en données. + +Behavior +======== + +AclBehavior +----------- + +- ``Model::parentNode()`` prend maintenant le type (Aro, Aco) en premier + argument: ``$model->parentNode($type)``. + +Datasource +========== + +Mysql +----- + +- L'opérateur wildcard ``RLIKE`` a été ajouté pour permettre des correspondances + avec les expressions régulières. +- Les migrations de Schema avec MySQL supportent maintenant une clé ``after`` + lorsque on ajoute une colonne. Cette clé vous permet de spécifier après quelle + colonne la colonne à créer doit être ajoutée. + + +Model +===== + +Model +----- + +- ``Model::save()`` a l'option ``atomic`` importée de 3.0. +- ``Model::afterFind()`` utilise maintenant toujours un format cohérent pour + afterFind(). + Quand ``$primary`` est à false, les résultats vont toujours être localisés + dans ``$data[0]['ModelName']``. Vous pouvez définir la propriété + ``useConsistentAfterFind`` à false sur vos models pour restaurer le + comportement original. + +Network +======= + +CakeRequest +----------- + +- ``CakeRequest::param()`` peut maintenant lire des valeurs en utilisant + :ref:`hash-path-syntax` comme ``data()``. +- ``CakeRequest:setInput()`` a été ajoutée. + +HttpSocket +---------- + +- ``HttpSocket::head()`` a été ajoutée. +- Vous pouvez maintenant utiliser l'option ``protocol`` pour surcharger le + protocole spécifique à utiliser lorsque vous faîtes une requête. + +I18n +==== + +- La valeur de configuration ``I18n.preferApp`` peut maintenant être utilisée + pour controller l'ordre des traductions. Si défini à true, les traductions + de l'application seront préférées à celles des plugins. + +Utility +======= + +CakeTime +-------- + +- ``CakeTime::timeAgoInWords()`` supporte maintenant les formats de date + absolus compatibles avec ``strftime()``. Cela facilite la localisation des + formats de date. + +Hash +---- + +- ``Hash::get()`` lance maintenant une exception quand l'argument path est + invalide. +- ``Hash::nest()`` lance maintenant une exception quand les résultats de + l'opération d'imbrication ne retourne aucune donnée. + + +Validation +---------- + +- ``Validation::between`` a été dépréciée, vous devez utiliser + :php:meth:`Validation::lengthBetween` à la place. +- ``Validation::ssn`` a été dépréciée et peut être fournie en tant que plugin + autonome. + +View +==== + +HtmlHelper +---------- + +- :php:meth:`HtmlHelper::css()` a une nouvelle option ``once``. Elle fonctionne + de la même manière que l'option ``once`` de ``HtmlHelper::script()``. La + valeur par défaut est ``false`` pour maintenir une compatibilité rétroactive. +- L'argument ``$confirmMessage`` de :php:meth:`HtmlHelper::link()` a été + déprécié. Vous devez utiliser la clé ``confirm`` à la place dans ``$options`` + pour spécifier le message. + +FormHelper +---------- + +- L'argument ``$confirmMessage`` de :php:meth:`FormHelper::postLink()` a été + déprécié. Vous devez maintenant utiliser la clé ``confirm`` dans ``$options`` + pour spécifier le message. +- L'attribut ``maxlength`` va maintenant aussi être appliqué aux textareas, + quand le champ de la base de données correspondant est de type varchar, + selon les specs de HTML. + +PaginatorHelper +--------------- + +- :php:meth:`PaginatorHelper::meta()` a été ajoutée pour afficher les + meta-links (rel prev/next) pour un ensemble de résultats paginés. diff --git a/fr/appendices/new-features-in-cakephp-1-3.rst b/fr/appendices/new-features-in-cakephp-1-3.rst index 27a42db222..af71b2d8f2 100644 --- a/fr/appendices/new-features-in-cakephp-1-3.rst +++ b/fr/appendices/new-features-in-cakephp-1-3.rst @@ -69,7 +69,7 @@ pour plus d'informations. Le helper Pagination fournit des classes CSS supplémentaires pour le style et vous pouvez configurer la direction de sort() par défaut. -``PaginatorHelper::next()`` et ``PaginatorHelper::prev()`` générent maintenant +``PaginatorHelper::next()`` et ``PaginatorHelper::prev()`` génèrent maintenant des tags span par défaut, au lieu de divs. **Helper** diff --git a/fr/appendices/new-features-in-cakephp-2-0.rst b/fr/appendices/new-features-in-cakephp-2-0.rst index 657839c9f2..4c131d51e6 100755 --- a/fr/appendices/new-features-in-cakephp-2-0.rst +++ b/fr/appendices/new-features-in-cakephp-2-0.rst @@ -88,7 +88,7 @@ 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 +que votre application génère. Elle consolide plusieurs caractéristiques dans CakePHP. Lisez en plus sur :php:class:`CakeResponse`. CakeSession, SessionComponent diff --git a/fr/appendices/new-features-in-cakephp-2-1.rst b/fr/appendices/new-features-in-cakephp-2-1.rst index a322c78c61..9c34835a14 100644 --- a/fr/appendices/new-features-in-cakephp-2-1.rst +++ b/fr/appendices/new-features-in-cakephp-2-1.rst @@ -173,7 +173,7 @@ Quand ces méthodes sont combinés avec le :php:class:`RequestHandlerComponent` activé dans votre controller, le component décidera automatiquement si la réponse est déjà mise en cache dans le client et enverra un code de statut `304 Not Modified` avant le rendu de la vue. Sauter le processus de rendu de -vue sauvegarde les cycles CPU et la mémoire.:: +vue sauvegarde les cycles CPU et la mémoire. :: class ArticlesController extends AppController { public $components = array('RequestHandler'); diff --git a/fr/cakephp-overview/understanding-model-view-controller.rst b/fr/cakephp-overview/understanding-model-view-controller.rst index 04fbd7ddc1..e5a3cbb40e 100644 --- a/fr/cakephp-overview/understanding-model-view-controller.rst +++ b/fr/cakephp-overview/understanding-model-view-controller.rst @@ -91,7 +91,7 @@ patron MVC, qui transforme une application en un dossier élaboré maintenable, modulable et rapide. Elaborer les tâches de l'application en séparant les models, vues et controllers, allègent votre application. De nouvelles fonctionnalités sont ajoutées facilement, et les améliorations sur les vieilles -fonctionnalités se font en un clin d'oeil. La conception modulable et séparée +fonctionnalités se font en un clin d'œil. La conception modulable et séparée permet aussi aux développeurs et designeurs de travailler simultanément, avec la possibilité de `prototyper `_ rapidement : diff --git a/fr/cakephp-overview/where-to-get-help.rst b/fr/cakephp-overview/where-to-get-help.rst index 4afcd95c5f..fd362453f7 100644 --- a/fr/cakephp-overview/where-to-get-help.rst +++ b/fr/cakephp-overview/where-to-get-help.rst @@ -51,7 +51,7 @@ Les cas de Test Si vous avez toujours le sentiment que l'information fournie par l'API est insuffisante, regardez le code des cas de test fournis avec CakePHP. Ils peuvent servir d'exemples pratiques pour l'utilisation d'une fonction et de -données membres d'une classe.:: +données membres d'une classe. :: lib/Cake/Test/Case diff --git a/fr/console-and-shells.rst b/fr/console-and-shells.rst index 97b8eec443..cb156a9a2e 100644 --- a/fr/console-and-shells.rst +++ b/fr/console-and-shells.rst @@ -454,7 +454,7 @@ Vous pouvez aussi configurer les parsers d'option des sous-commandes, ce qui vous permet d'avoir des parsers d'option différents pour les sous-commandes et les tâches. ConsoleOptionParser implémente une interface courant et inclut les méthodes -pour configurer facilement les multiple options/arguments en une fois.:: +pour configurer facilement les multiple options/arguments en une fois. :: public function getOptionParser() { $parser = parent::getOptionParser(); @@ -551,7 +551,7 @@ gérer cela dans votre shell. .. php:method:: addArguments(array $args) Si vous avez un tableau avec plusieurs arguments, vous pouvez utiliser -``$parser->addArguments()`` pour ajouter plusieurs arguments en une fois.:: +``$parser->addArguments()`` pour ajouter plusieurs arguments en une fois. :: $parser->addArguments(array( 'node', array('help' => 'The node to create', 'required' => true), @@ -589,7 +589,7 @@ Les options ou les flags sont aussi fréquemment utilisés avec les outils de ligne de commande. ``ConsoleOptionParser`` supporte la création d'options avec les deux verbose et short aliases, fournissant les valeurs par défaut et créant des switches en boléen. Les options sont créées avec soit -``$parser->addOption()``, soit ``$parser->addOptions()``.:: +``$parser->addOption()``, soit ``$parser->addOptions()``. :: $parser->addOption('connection', array( 'short' => 'c' @@ -602,7 +602,7 @@ Ce qui est au-dessus vous permet l'utilisation soit de ``cake myshell --connection other``, ou soit de ``cake myshell -c other`` lors de l'appel au shell. Vous pouvez aussi créer des switches de boléen, ces switches ne consomment pas de valeurs, et leur présence les active juste dans -les paramètres parsés.:: +les paramètres parsés. :: $parser->addOption('no-commit', array('boolean' => true)); @@ -631,7 +631,7 @@ pour définir le comportement de l'option: .. php:method:: addOptions(array $options) Si vous avez un tableau avec plusieurs options, vous pouvez utiliser -``$parser->addOptions()`` pour ajouter plusieurs options en une fois.:: +``$parser->addOptions()`` pour ajouter plusieurs options en une fois. :: $parser->addOptions(array( 'node', array('short' => 'n', 'help' => 'The node to create'), @@ -1006,7 +1006,7 @@ API de Shell verbose. out() vous permet aussi d'utiliser les tags de formatage de couleur, ce qui permettra la sortie colorée sur les systèmes qui le supportent. Il y a plusieurs styles intégrées pour la coloration de texte, - et vous pouvez définir les votres. + et vous pouvez définir les vôtres. * ``error`` Messages d'Erreur. * ``warning`` Messages d'avertissement. @@ -1024,6 +1024,20 @@ API de Shell Sur les systèmes windows, la sortie brute est la sortie par défaut sauf si la variable d'environnement ``ANSICON`` est présente. +.. php:method:: overwrite($message = null, $newlines = 1, $size = null) + + :param string $method: Le message à afficher. + :param integer $newlines: Le nombre de nouvelle ligne à la suite du message. + :param integer $size: Le nombre d'octets à surcharger + + C'est une méthode utile pour générer des progess bars ou pour éviter de + générer trop de lignes. + + Attention: Vous ne pouvez pas surcharger du texte qui contient des retours + à la ligne. + + .. versionadded:: 2.6 + .. php:method:: runCommand($command, $argv) Lance le Shell avec argv fourni. @@ -1035,7 +1049,7 @@ API de Shell - Correspondance du nom de la tâche. - méthode main(). - Si un shell intégre une méthode main(), toute appel de méthode perdu + Si un shell intègre une méthode main(), toute appel de méthode perdu sera envoyé à main() avec le nom de la méthode originale dans argv. .. php:method:: shortPath($file) diff --git a/fr/console-and-shells/acl-shell.rst b/fr/console-and-shells/acl-shell.rst index 6c0b29693c..2fdd3ec794 100644 --- a/fr/console-and-shells/acl-shell.rst +++ b/fr/console-and-shells/acl-shell.rst @@ -46,7 +46,7 @@ Accorder et refuser l'accès =========================== Utilisez la commande d'accès pour accorder les permssions ACL. -Une fois executée, l'ARO spécifié (et ses enfants, si il en a) aura un accès +Une fois exécutée, l'ARO spécifié (et ses enfants, si il en a) aura un accès AUTORISÉ à l'action ACO spécifié (et les enfants de l'ACO, si il y en a):: ./Console/cake acl grant Group.1 controllers/Posts @@ -63,7 +63,7 @@ La seule différence est le remplacement de 'grant' en 'deny'. Vérification des permissions ============================ -Utilisez cette commande pour accorder les permissions ACL.:: +Utilisez cette commande pour accorder les permissions ACL. :: ./Console/cake acl check Group.1 controllers/Posts read diff --git a/fr/console-and-shells/code-generation-with-bake.rst b/fr/console-and-shells/code-generation-with-bake.rst index 87545ea31b..419dd4584b 100755 --- a/fr/console-and-shells/code-generation-with-bake.rst +++ b/fr/console-and-shells/code-generation-with-bake.rst @@ -151,10 +151,10 @@ et fixtures à n'importe quel moment dans votre processus de développement. En plus d'être reconstructibles à n'importe quel moment, les tests cuits sont maintenant capable de trouver autant de fixtures que possible. Dans le passé, tester impliquait souvent de se battre à travers de -nombreuses erreurs 'Manque la table'. Avec une detection des fixtures +nombreuses erreurs 'Manque la table'. Avec une détection des fixtures plus poussée, nous espérons rendre le test plus simple plus accessible. -Les cas de test générent aussi des méthodes squelettes de test pour chaque +Les cas de test génèrent aussi des méthodes squelettes de test pour chaque méthode publique non héritée dans vos classes. Vous enlevant une étape supplémentaire. @@ -205,7 +205,7 @@ Une nouveauté dans bake pour 1.3 est l'ajout de plus de templates. Dans 1.2, les vues bakées utilisaient les templates qui pouvaient être changés pour modifier les fichiers vues bakés générées. Dans 1.3, les templates sont utilisés pour générer toute sortie de bake générée. -Il y a des templates séparés poour les controllers, les ensembles d'action +Il y a des templates séparés pour les controllers, les ensembles d'action des controllers, les fixtures, les models, les cas de test, et les fichiers de vue de 1.2. Comme de plus en plus de templates, vous pouvez aussi avoir des ensembles de template multiple ou, de thèmes bakés. Les thèmes bakés peuvent diff --git a/fr/console-and-shells/completion-shell.rst b/fr/console-and-shells/completion-shell.rst index 3f3a4facff..4d6d15c290 100644 --- a/fr/console-and-shells/completion-shell.rst +++ b/fr/console-and-shells/completion-shell.rst @@ -13,7 +13,7 @@ comme like bash, zsh, fish etc... Sous Commandes ============== -Les Shell de Completion se compose d'un certain nombre de sous-commandes pour +Les Shell de Completion se composent d'un certain nombre de sous-commandes pour permettre au développeur de créer son script de completion. Chacun pour une étape différente dans le processus d'autocompletion. @@ -31,7 +31,7 @@ Retourne:: acl api bake command_list completion console i18n schema server test testsuite upgrade -Votre script de completion peut selectionner les commandes pertinentes de cette +Votre script de completion peut sélectionner les commandes pertinentes de cette liste pour continuer avec. (Pour celle-là et les sous-commandes suivantes.) subCommands diff --git a/fr/console-and-shells/i18n-shell.rst b/fr/console-and-shells/i18n-shell.rst index 4dc211aea5..bf879e9bde 100644 --- a/fr/console-and-shells/i18n-shell.rst +++ b/fr/console-and-shells/i18n-shell.rst @@ -16,7 +16,7 @@ Générer les fichiers POT ======================== Les fichiers POT peuvent être générés pour une application existante en -utilisant la commande ``extract``. Cette commande va scaner toutes les +utilisant la commande ``extract``. Cette commande va scanner toutes les fonctions de type ``__()`` de l'ensemble de votre application, et extraire les chaînes de caractères. Chaque chaîne unique dans votre application sera combinée en un seul fichier POT:: @@ -49,7 +49,7 @@ extraits dans vos models. Si le model a toujours une propriété ./Console/cake i18n extract --validation-domain validation_errors -Vous pouvez aussi éviter que le shell n'extrait des messages de validation:: +Vous pouvez aussi éviter que le shell n'extraie des messages de validation:: ./Console/cake i18n extract --ignore-model-validation diff --git a/fr/console-and-shells/schema-management-and-migrations.rst b/fr/console-and-shells/schema-management-and-migrations.rst index 19bc1badfb..e2f1351da1 100644 --- a/fr/console-and-shells/schema-management-and-migrations.rst +++ b/fr/console-and-shells/schema-management-and-migrations.rst @@ -32,7 +32,7 @@ Cela va supprimer et créer les tables en se basant sur le contenu de schema.php. Les fichiers de schéma peuvent aussi être utilisés pour générer des dumps sql. -Pour générer un fichier sql comprennant les définitions ``CREATE TABLE``, +Pour générer un fichier sql comprenant les définitions ``CREATE TABLE``, lancez:: $ Console/cake schema dump --write filename.sql @@ -108,7 +108,7 @@ 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 +classe de console shell schema ``SchemaShell`` dans le répertoire ``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. @@ -297,7 +297,7 @@ un fichier de schema. Un peu comme les ``indexes``:: ); 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 +paramè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. @@ -383,7 +383,7 @@ Si à un moment donné vous avez besoin de revenir en arrière et de retourner un état précédent à votre dernière mise à jour, vous devez être informé que ce n'est pas pour l'instant pas possible avec cake schema. -Plus précisemment, vous ne pouvez pas supprimer automatiquement vos tables +Plus précisément, vous ne pouvez pas supprimer automatiquement vos tables une fois qu'elles ont été créées. L'utilisation de ``update`` supprimera, au contraire, n'importe quel champ diff --git a/fr/console-and-shells/upgrade-shell.rst b/fr/console-and-shells/upgrade-shell.rst index 2895cecd5c..7af9faa602 100644 --- a/fr/console-and-shells/upgrade-shell.rst +++ b/fr/console-and-shells/upgrade-shell.rst @@ -76,7 +76,7 @@ La structure de votre dossier devrait ressembler à cela maintenant:: index.php Maintenant nous pouvons lancer la mise à jour shell en tapant ``cd`` puis le -chemin vers votre app et en lancant la commande:: +chemin vers votre app et en lançant la commande:: ./Console/cake upgrade all diff --git a/fr/contributing.rst b/fr/contributing.rst index 026cd023f6..d1e0455296 100644 --- a/fr/contributing.rst +++ b/fr/contributing.rst @@ -13,7 +13,7 @@ contribuer à CakePHP: contributing/code contributing/cakephp-coding-conventions contributing/backwards-compatibility - + contributing/cakephp-development-process .. meta:: diff --git a/fr/contributing/cakephp-coding-conventions.rst b/fr/contributing/cakephp-coding-conventions.rst index 720ab1654e..8206d2ef53 100644 --- a/fr/contributing/cakephp-coding-conventions.rst +++ b/fr/contributing/cakephp-coding-conventions.rst @@ -6,10 +6,15 @@ Les développeurs de CakePHP vont utiliser les normes de code suivantes. Il est recommandé que les autres personnes qui développent des IngredientsCake suivent les mêmes normes. -Vous pouvez utilisez le `CakePHP Code Sniffer +Vous pouvez utiliser le `CakePHP Code Sniffer `_ pour vérifier que votre code suit les normes requises. +Langue +====== + +Tout code et commentaire doit être écrit en Anglais. + Ajout de Nouvelles Fonctionnalités ================================== @@ -252,60 +257,133 @@ lignes distinctes et indentées avec une tabulation:: ->subject('Un super message') ->send(); -Commenter le Code -================= +DocBlocks +========= -Tous les commentaires doivent être écrits en anglais, et doivent clairement -décrire le block de code commenté. +Tous les blocs de commentaire, à l'exception du premier bloc dans un fichier, +doit toujours être précédé d'une ligne vierge. -Les commentaires doivent inclure les tags de -`phpDocumentor `_ suivants: +DocBlock d'Entête de Fichier +---------------------------- + +Tous les fichier PHP doivent contenir un DocBlock d'en-tête, qui doit +ressembler à cela:: + + `_ à inclure sont: -* `@author `_ * `@copyright `_ +* `@link `_ +* `@since `_ +* `@license `_ + + +DocBlocks de Classe +------------------- + +Les DocBlocks de classe doivent ressembler à ceci:: + + /** + * Short description of the class. + * + * Long description of class. + * Can use multiple lines. + * + * @deprecated 3.0.0 Deprecated in 2.6.0. Will be removed in 3.0.0. Use Bar instead. + * @see Bar + * @link http://book.cakephp.org/2.0/en/foo.html + */ + class Foo { + + } + +Les classes DocBlocks peuvent contenir les tags de +`phpDocumentor `_ suivants: + * `@deprecated `_ - Using the ``@version `` format, where ``version`` and ``description`` are mandatory. -* `@example `_ -* `@ignore `_ + Utiliser le format ``@version ``, où ``version`` et ``description`` sont obligatoires. * `@internal `_ * `@link `_ +* `@property `_ * `@see `_ * `@since `_ -* `@version `_ +* `@uses `_ + +DocBlocks des Attributs +----------------------- -Les tags de PhpDoc sont un peu du même style que les tags de JavaDoc dans -Java. Les tags sont seulement traités si ils sont la première chose dans la -ligne DocBlock, par exemple:: +Les DocBlocks des attributs doivent ressembler à cela:: /** - * Exemple de Tag. + * @var string|null Description of property. * - * @author ce tag est analysé, mais @version est ignoré - * @version 1.0 ce tag est aussi analysé + * @deprecated 3.0.0 Deprecated as of 2.5.0. Will be removed in 3.0.0. Use $_bla instead. + * @see Bar::$_bla + * @link http://book.cakephp.org/2.0/en/foo.html#properties */ + protected $_bar = null; -:: +Les DocBlocks des attributs peuvent contenir les tags +`phpDocumentor `_ suivants: + +* `@deprecated `_ + Using the ``@version `` format, where ``version`` and ``description`` are mandatory. +* `@internal `_ +* `@link `_ +* `@see `_ +* `@since `_ +* `@var `_ + +DocBlocks des Méthodes/Fonctions +-------------------------------- + +Les DocBlocks de méthode ou de fonctions doivent ressembler à ceci:: /** - * Exemple de tag inline phpDoc. + * Short description of the method. * - * Cette fonction travaille dur avec foo() pour gouverner le monde. + * Long description of method. + * Can use multiple lines. * - * @return void - */ - function bar() { - } - - /** - * Foo function + * @param string $param2 first parameter. + * @param array|null $param2 Second parameter. + * @return array An array of cakes. + * @throws Exception If something goes wrong. * - * @return void - */ - function foo() { - } + * @link http://book.cakephp.org/2.0/en/foo.html#bar + * @deprecated 3.0.0 Deprecated as of 2.5.0. Will be removed in 3.0.0. Use Bar::baz instead. + * @see Bar::baz + /* + public function bar($param1, $param2 = null) { + } + +Les DocBlocks des méthodes/fonctions peuvent contenir les tags +`phpDocumentor `_ suivants: -Les blocks de commentaires, avec une exception du premier block dans le -fichier, doivent toujours être précédés par un retour à la ligne. +* `@deprecated `_ + Using the ``@version `` format, where ``version`` and ``description`` are mandatory. +* `@internal `_ +* `@link `_ +* `@param `_ +* `@return `_ +* `@throws `_ +* `@see `_ +* `@since `_ +* `@uses `_ Types de Variables ------------------ diff --git a/fr/appendices/cakephp-development-process.rst b/fr/contributing/cakephp-development-process.rst similarity index 91% rename from fr/appendices/cakephp-development-process.rst rename to fr/contributing/cakephp-development-process.rst index 4bab6c6234..6cf2de3142 100644 --- a/fr/appendices/cakephp-development-process.rst +++ b/fr/contributing/cakephp-development-process.rst @@ -31,13 +31,13 @@ Nous maintenons 4 versions de CakePHP. nouvelle n'est introduite, à moins que ce soit absolument nécessaire. - **Branches de fonctionnalité** : Les branches de fonctionnalité contiennent des fonctionnalités non-finies, possiblement instable et sont recommandées - uniquement pour les utilisateurs avertis interessés dans la fonctionnalité + uniquement pour les utilisateurs avertis intéressés dans la fonctionnalité la plus avancée et qui souhaitent contribuer à la communauté. Les branches de fonctionnalité sont nommées selon la convention suivante de *version-fonctionnalité*. Un exemple serait *1.3-routeur* qui contiendrait de nouvelles fonctionnalités pour le Routeur dans 1.3. -Espèrons que cela vous aide à comprendre quel version est bonne pour vous. +Espérons que cela vous aide à comprendre quelle version est bonne pour vous. Une fois que vous choisissez votre version, vous vous sentirez peut-être contraints de contribuer à un report de bug ou de faire des commentaires généraux sur le code. @@ -47,11 +47,11 @@ généraux sur le code. - Si vous utilisez la branche de développement ou la branche de fonctionnalité, le premier endroit où aller est IRC. Si vous avez un commentaire et ne pouvez pas nous atteindre sur IRC après un jour ou deux, - merci de nnous soumettre un ticket. + merci de nous soumettre un ticket. -Si vous trouvez un problème, la meilleure réponse es d'écrire un test. Le +Si vous trouvez un problème, la meilleure réponse est d'écrire un test. Le meilleur conseil que nous pouvons offrir dans l'écriture des tests est de -regarder ceux qui sont inclus dans le coeur. +regarder ceux qui sont inclus dans le cœur. Comme toujours, si vous avez n'importe quelle question ou commentaire, visitez nous sur #cakephp sur irc.freenode.net. diff --git a/fr/contributing/code.rst b/fr/contributing/code.rst index 475ec17614..5c31be6f68 100644 --- a/fr/contributing/code.rst +++ b/fr/contributing/code.rst @@ -3,7 +3,7 @@ Code Les correctifs et les pull requests sont les meilleures façons de contribuer au code de CakePHP. Les pull requests peuvent être créés sur Github, et sont -préférés aux correctifs attachés au tickets. +préférés aux correctifs attachés aux tickets. Configuration initiale ====================== diff --git a/fr/contributing/documentation.rst b/fr/contributing/documentation.rst index cc0ce82d4f..ab46f4c1b8 100755 --- a/fr/contributing/documentation.rst +++ b/fr/contributing/documentation.rst @@ -70,7 +70,7 @@ caractères de ponctuation, avec une longueur de texte au moins aussi longue. - ``^`` Est utilisé pour les sous-sous-sous-sections. Les en-têtes ne doivent pas être imbriqués sur plus de 5 niveaux de profondeur. -Les en-têtes doivent être précedés et suivis par une ligne vide. +Les en-têtes doivent être précédés et suivis par une ligne vide. Les Paragraphes --------------- @@ -158,7 +158,11 @@ Les liens vers les documents externes peuvent être les suivants:: `Lien externe `_ -Le lien ci-dessus générera un lien pointant vers http://example.com +Le lien ci-dessus générera ce `Lien Externe `_ + +.. note:: + + Assurez-vous d'ajouter le underscore après le backtick, c'est important! Lien vers les autres pages ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -353,11 +357,11 @@ Notes et avertissements ----------------------- Il y a souvent des fois où vous voulez informer le lecteur d'une astuce -importante, une note spécials ou un danger potentiel. Les avertissements +importante, une note spéciale ou un danger potentiel. Les avertissements dans sphinx sont justement utilisés pour cela. Il y a trois types d'avertissements. -* ``.. tip::`` Les astuces sont utilisées pour documenter ou ré-itérer des +* ``.. tip::`` Les astuces sont utilisées pour documenter ou réitérer des informations intéressantes ou importantes. Le contenu de cette directive doit être écrit dans des phrases complètes et inclure toutes les ponctuations appropriées. @@ -374,7 +378,7 @@ Tous les avertissements sont faits de la même façon:: .. note:: - Indenté, précedé et suivi par une ligne vide. Exactement comme + Indenté, précédé et suivi par une ligne vide. Exactement comme un paragraphe. Ce texte n'est pas une partie de la note. diff --git a/fr/controllers.rst b/fr/controllers.rst index 5bac22bd60..5caffec831 100644 --- a/fr/controllers.rst +++ b/fr/controllers.rst @@ -4,7 +4,7 @@ Controllers (Contrôleurs) Les Controllers sont le 'C' dans MVC. Après que le routage a été appliqué et que le bon controller a été trouvé, l'action de votre controller est appelée. Votre controller devra gérer l'interprétation des données requêtées, -s'assurer que les bon models sont appelés, et que la bonne réponse ou vue est +s'assurer que les bons models sont appelés et que la bonne réponse ou vue est rendue. Les controllers peuvent être imaginés comme un homme au milieu entre le Model et la Vue. Le mieux est de garder des controllers peu chargés, et des models plus fournis. Cela vous aidera à réutiliser plus facilement votre @@ -14,7 +14,7 @@ Habituellement, les controllers sont utilisés pour gérer la logique autour d'un seul model. Par exemple, si vous construisez un site pour gérer une boulangerie en-ligne, vous aurez sans doute un RecettesController qui gère vos recettes et un IngredientsController qui gère vos ingrédients. Cependant, -il est aussi possible d'avoir des controllers qui fonctionnent avec plus qu'un +il est aussi possible d'avoir des controllers qui fonctionnent avec plus d'un model. Dans CakePHP, un controller est nommé d'après le model principal qu'il gère. @@ -103,16 +103,16 @@ RecipesController pourrait contenir les actions ``/app/Controller/RecettesController.php`` et contiendrait:: # /app/Controller/RecettesController.php - + class RecettesController extends AppController { public function view($id) { //la logique de l'action va ici.. } - + public function share($client_id, $recette_id) { //la logique de l'action va ici.. } - + public function search($query) { //la logique de l'action va ici.. } @@ -247,10 +247,10 @@ utiliser, et quel fichier de vue doit être rendu à partir du controller. 'prix_de_base' => 23.95 ); - // donne $couleur, $type, et $prix_de_base + // donne $couleur, $type, et $prix_de_base // disponible dans la vue: - $this->set($data); + $this->set($data); L'attribut ``$pageTitle`` n'existe plus. Utilisez @@ -260,7 +260,7 @@ utiliser, et quel fichier de vue doit être rendu à partir du controller. Depuis 2.5 la variable $title_for_layout est dépréciée, utilisez les blocks de vues à la place. -.. php:method:: render(string $action, string $layout, string $file) +.. php:method:: render(string $view, string $layout) La méthode :php:meth:`~Controller::render()` est automatiquement appelée à la fin de chaque action exécutée par le controller. Cette méthode exécute @@ -287,7 +287,7 @@ utiliser, et quel fichier de vue doit être rendu à partir du controller. fin de chaque action (à moins que vous n'ayez défini ``$this->autoRender`` à false), vous pouvez l'utiliser pour spécifier un fichier de vue alternatif en précisant le nom d'une action dans le controller, via - le paramètre ``$action``. + le paramètre ``$view``. Si ``$view`` commence avec un '/' on suppose que c'est un fichier de vue ou un élément dont le chemin est relatif au dossier ``/app/View``. Cela @@ -328,7 +328,7 @@ Par exemple:: } }      -Cela rendrait la vue ``app/Plugin/Users/View/UserDetails/custom_file.ctp`` +Cela rendrait la vue ``app/Plugin/Users/View/UserDetails/custom_file.ctp`` Contrôle de Flux ---------------- @@ -339,7 +339,7 @@ Contrôle de Flux :php:meth:`~Controller::redirect()`. Cette méthode prend son premier paramètre sous la forme d'une URL relative à votre application CakePHP. Quand un utilisateur a réalisé un paiement avec succès, vous aimeriez le - rediriger vers un écran affichant le reçu.:: + rediriger vers un écran affichant le reçu. :: public function regler_achats() { // Placez ici la logique pour finaliser l'achat... @@ -550,7 +550,7 @@ Autres Méthodes utiles $conditions = $this->postConditions( $this->request->data, array( - 'nb_items' => '>=', + 'nb_items' => '>=', 'referrer' => 'LIKE' ) ); @@ -601,7 +601,7 @@ Autres Méthodes utiles pour un élément avant de l'afficher. Prenons l'exemple de la mise en place d'un élément "derniers commentaires" dans le layout. Nous devons d'abord créer une méthode de controller qui retourne les données:: - + // Controller/CommentsController.php class CommentsController extends AppController { public function latest() { @@ -666,7 +666,7 @@ Autres Méthodes utiles ``Controller::params`` et ne place pas les arguments nommés dans la clé 'named'. Des parties supplémentaires dans le tableau ``$option`` vont aussi être disponibles dans le tableau Controller::params de l'action requêtée :: - + echo $this->requestAction('/articles/featured/limit:3'); echo $this->requestAction('/articles/view/5'); @@ -699,7 +699,7 @@ Autres Méthodes utiles La fonction :php:meth:`~Controller::loadModel()` devient pratique quand vous avez besoin d'utiliser un model qui n'est pas le model du controller par défaut ou un de ses models associés:: - + $this->loadModel('Article'); $recentArticles = $this->Article->find( 'all', @@ -757,7 +757,7 @@ référence à l'objet (``$this->{$helpername}``). :php:attr:`~Controller::$uses`, le nom du model primaire du controller courant doit également être inclu. Ceci est illustré dans l'exemple ci-dessous. - + Si vous ne souhaitez pas utiliser un Model dans votre controller, définissez ``public $uses = array()``. Cela vous permettra d'utiliser un controller sans avoir besoin d'un fichier Model correspondant. Cependant, diff --git a/fr/controllers/components.rst b/fr/controllers/components.rst index 086e2bb33f..2496e61719 100644 --- a/fr/controllers/components.rst +++ b/fr/controllers/components.rst @@ -6,8 +6,8 @@ qui sont partagés entre les controllers. CakePHP est également livré avec un fantastique ensemble de components, que vous pouvez utiliser pour vous aider. Si vous vous surprenez à vouloir copier et coller des choses entre vos controllers, alors vous devriez envisager de regrouper plusieurs -fonctionnalités dans un Component. Créer des components permettent de garder -un code de controller propre et vous permet de réutiliser du code entre des +fonctionnalités dans un Component. Créer des components permet de garder +un code de controller propre et de réutiliser du code entre différents projets. Chacun de ces components d'origine est détaillé dans son chapitre @@ -298,7 +298,7 @@ Les Callbacks méthode retourne false, le controller ne continuera pas de rediriger la requête. Les variables $url, $status et $exit ont la même signification que pour la méthode du controller. Vous pouvez aussi retourner une chaîne - de caractère qui sera interpretée comme une URL pour rediriger ou retourner + de caractère qui sera interprétée comme une URL pour rediriger ou retourner un array associatif avec la clé 'url' et éventuellement 'status' et 'exit'. diff --git a/fr/core-libraries/behaviors/acl.rst b/fr/core-libraries/behaviors/acl.rst index fc5ec66626..b9cd73da04 100644 --- a/fr/core-libraries/behaviors/acl.rst +++ b/fr/core-libraries/behaviors/acl.rst @@ -77,9 +77,8 @@ belongsTo Group:: } if (!$data['User']['group_id']) { return null; - } else { - return array('Group' => array('id' => $data['User']['group_id'])); } + return array('Group' => array('id' => $data['User']['group_id'])); } Dans l'exemple ci-dessus, le retour est un tableau qui ressemble aux résultats diff --git a/fr/core-libraries/behaviors/containable.rst b/fr/core-libraries/behaviors/containable.rst index 4e72bf1779..23718cf606 100644 --- a/fr/core-libraries/behaviors/containable.rst +++ b/fr/core-libraries/behaviors/containable.rst @@ -14,7 +14,7 @@ utilisateurs d'une façon propre et cohérente. Le behavior "Containable" vous permet de rationaliser et de simplifier les opérations de construction du model. Il agit en modifiant temporairement ou définitivement les associations de vos models. Il fait cela en utilisant -des "containements" pour génerer une série d'appels ``bindModel`` et +des "containements" pour générer une série d'appels ``bindModel`` et ``unbindModel``. Étant donné que Containable modifie seulement les relations déjà existantes, il ne vous permettra pas de restreindre les résultats pour des associations distantes. Pour cela, vous devriez voir les @@ -97,7 +97,7 @@ récupérées par un appel ``find()`` normal est assez étendue :: Pour certaines interfaces de votre application, vous pouvez ne pas avoir besoin d'autant d'information depuis le model Post. Le -``Behavior containable`` permet de reduire ce que le find() retourne. +``Behavior containable`` permet de réduire ce que le find() retourne. Par exemple, pour ne récupérer que les informations liées au post vous pouvez faire cela:: @@ -142,7 +142,7 @@ le ``behavior Containable`` en faisant quelque chose comme:: Le ``behavior Containable`` s'impose vraiment quand vous avez des associations complexes, et que vous voulez rogner le nombre d'information au même niveau. La propriété $recursive des models est utile si vous voulez éviter un niveau de -recursivité entier, mais pas pour choisir ce que vous garder à chaque niveau. +récursivité entier, mais pas pour choisir ce que vous garder à chaque niveau. Regardons ensemble comment la methode ``contain()`` agit. Le premier argument de la méthode accepte le nom, ou un tableau de noms, des @@ -168,7 +168,7 @@ Des associations plus profondes Containable permet également d'aller un peu plus loin : vous pouvez filtrer les données des models *associés*. si vous regardez les résultats d'un appel find() classique, notez le champ "auteur" dans le model "Comment". Si vous êtes -interéssés par les posts et les noms des commentaires des auteurs - et rien +intéressés par les posts et les noms des commentaires des auteurs - et rien d'autre - vous devez faire quelque chose comme:: $this->Post->contain('Comment.auteur'); @@ -209,7 +209,7 @@ du find ressemble à:: (... Comme vous pouvez le voir, les tableaux de Comment ne contiennent uniquement -que le champ auteur (avec le post\_id qui est requit par CakePHP pour présenter +que le champ auteur (avec le post\_id qui est requis par CakePHP pour présenter le résultat) Vous pouvez également filtrer les données associées à Comment en spécifiant une @@ -256,7 +256,7 @@ posts. L'opération $this->Post->find('all', array('contain' => 'Comment.author = "Daniel"')); retournerait TOUS les 3 posts, pas juste les 3 posts que Daniel a commenté. Cela ne va pas retourner tous les comments cependant, juste les comments de -Daniel.:: +Daniel. :: [0] => Array ( @@ -320,7 +320,7 @@ Daniel.:: Si vous voulez filtrer les posts selon les comments, pour que les posts non commentés par Daniel ne soient pas retournés, le plus simple est de -trouver tous les comments de Daniel et de faire un contain sur les Posts.:: +trouver tous les comments de Daniel et de faire un contain sur les Posts. :: $this->Comment->find('all', array( 'conditions' => 'Comment.author = "Daniel"', @@ -347,7 +347,7 @@ Examinons les associations des models suivants:: User->Post->PostAttachment->PostAttachmentHistory->HistoryNotes User->Post->Tag -Voici comment nous recupérons les associations ci-dessus avec le behavior +Voici comment nous récupérons les associations ci-dessus avec le behavior Containable :: $this->User->find('all', array( @@ -373,7 +373,7 @@ Containable :: )); Gardez à l'esprit que la clé 'contain' n'est utilisée qu'une seule fois dans -le model principal, vous n'avez pas besoin d'utiliser 'contain' a nouveau +le model principal, vous n'avez pas besoin d'utiliser 'contain' à nouveau dans les models liés. .. note:: diff --git a/fr/core-libraries/behaviors/translate.rst b/fr/core-libraries/behaviors/translate.rst index 997eea48af..3fce777c6a 100644 --- a/fr/core-libraries/behaviors/translate.rst +++ b/fr/core-libraries/behaviors/translate.rst @@ -32,7 +32,7 @@ Attacher le Behavior Translate à vos Models =========================================== Ajoutez-le à votre model en utilisant la propriété ``$actsAs`` comme dans -l'exemple suivant.:: +l'exemple suivant. :: class Post extends AppModel { public $actsAs = array( @@ -80,7 +80,7 @@ récupération de données avec les locales. Si tous les champs dans votre model sont traduits, assurez-vous d'ajouter les colonnes ``created`` et ``modified`` à votre table. CakePHP a besoin - d'au moins un champ différent d'une clé primaire avant d'enregister un + d'au moins un champ différent d'une clé primaire avant d'enregistrer un enregistrement. Conclusion @@ -94,7 +94,7 @@ identifiant d'une langue, pour ainsi dire. Lire le contenu traduit ======================= -Par défaut, le TranslateBehavior va automatiquement récupèrer et ajouter les +Par défaut, le TranslateBehavior va automatiquement récupérer et ajouter les données basées sur la locale courante. La locale courante est lue à partir de ``Configure::read('Config.language')`` qui est assignée par la classe :php:class:`L10n`. Vous pouvez surcharger cette valeur par défaut à la volée @@ -119,7 +119,7 @@ Récupérer tous les enregistrements de traduction pour un champ Si vous voulez avoir tous les enregistrements de traduction attachés à l'enregistrement de model courant, vous étendez simplement le **tableau champ** dans votre paramétrage du behavior, comme montré ci-dessous. Vous êtes -complètement libre de choisir le nommage.:: +complètement libre de choisir le nommage. :: class Post extends AppModel { public $actsAs = array( @@ -187,7 +187,7 @@ avez besoin, en utilisant la méthode bindTranslation. ``$fields`` st un tableau associatif composé du champ et du nom de l'association, dans lequel la clé est le champ traduisible et la valeur -est le nom fictif de l'association.:: +est le nom fictif de l'association. :: $this->Post->bindTranslation(array('name' => 'titleTranslation')); $this->Post->find('all', array('recursive' => 1)); // il est nécessaire d'avoir au moins un recursive à 1 pour que ceci fonctionne @@ -315,7 +315,7 @@ Pour que cela fonctionne vous devez créer le fichier du model actuel dans le dossier des models. La raison est qu'il n'y a pas de propriété pour définir le displayField directement dans le model utilisant ce behavior. -Assurez vous de changer le ``$displayField`` en ``'field'``.:: +Assurez vous de changer le ``$displayField`` en ``'field'``. :: class PostI18n extends AppModel { public $displayField = 'field'; // important diff --git a/fr/core-libraries/behaviors/tree.rst b/fr/core-libraries/behaviors/tree.rst index df52b3b905..edafed6798 100644 --- a/fr/core-libraries/behaviors/tree.rst +++ b/fr/core-libraries/behaviors/tree.rst @@ -58,7 +58,7 @@ exemple simple. Créons la table suivante :: name VARCHAR(255) DEFAULT '', 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); @@ -99,31 +99,29 @@ catégories, en visitant /categories. Vous devriez voir quelque chose comme : - My Categories - - Fun - - - Sport - - - Surfing - - Extreme knitting + - Fun - - Friends + - Sport - - Gerald - - Gwendolyn + - Surfing + - Extreme knitting + - Friends - - Work + - Gerald + - Gwendolyn - - Reports + - Work - - Annual - - Status + - Reports - - Trips + - Annual + - Status - - National - - International + - Trips + - National + - International Ajouter des données ------------------- @@ -144,45 +142,41 @@ tree prendra soin du reste. Si vous ne définissez pas l'id du parent (parent\_id), Le behavior Tree additionnera vos nouveaux ajouts au sommet de l'arbre:: - // pseudo code du controller + // pseudo code du controller $data = array(); $data['Category']['name'] = 'Other People\'s Categories'; $this->Category->save($data); Exécuter les extraits de code ci-dessus devrait modifier l'arbre comme suit: +- My Categories -- My Categories - - - Fun - - - Sport - - - Surfing - - Extreme knitting - - Skating **New** + - Fun - - Friends + - Sport - - Gerald - - Gwendolyn + - Surfing + - Extreme knitting + - Skating **New** + - Friends - - Work + - Gerald + - Gwendolyn - - Reports + - Work - - Annual - - Status + - Reports - - Trips + - Annual + - Status - - National - - International + - Trips + - National + - International - -- Other People's Categories **New** +- Other People's Categories **New** Modification des données ------------------------ @@ -201,37 +195,34 @@ même si l\'id du parent (parent\_id) est inclue dans les données passées à sauvegarder si les données ne changent pas, pas plus que la structure de données. Donc l\'arbre de données devrait maintenant ressembler à: -- My Categories - -- Fun +- My Categories - - Sport + - Fun - - Surfing - - Extreme fishing **Updated** - - Skating + - Sport - - Friends + - Surfing + - Extreme fishing **Updated** + - Skating - - Gerald - - Gwendolyn + - Friends + - Gerald + - Gwendolyn -- Work + - Work - - Reports + - Reports - - Annual - - Status + - Annual + - Status - - Trips + - Trips - - National - - International + - National + - International - - -- Other People's Categories +- Other People's Categories Déplacer les données autour de votre arbre est aussi une affaire simple. Supposons que Extreme fishing n'appartienne pas à Sport, mais devrait se @@ -244,40 +235,35 @@ trouver plutôt sous "D'autres catégories de gens". Avec le code suivant :: Comme on pouvait s'y attendre, la structure serait modifiée comme suit: +- My Categories -- My Categories - - - Fun - - - Sport - - - Surfing - - Skating + - Fun - - Friends + - Sport - - Gerald - - Gwendolyn + - Surfing + - Skating + - Friends - - Work + - Gerald + - Gwendolyn - - Reports + - Work - - Annual - - Status + - Reports - - Trips + - Annual + - Status - - National - - International + - Trips + - National + - International +- Other People's Categories -- Other People's Categories - - - Extreme fishing **déplacé** - + - Extreme fishing **Moved** Suppression des données ----------------------- @@ -294,34 +280,30 @@ n'importe quel model. Par exemple, avec le code suivant :: L'arbre des Catégories serait modifié comme suit: -- My Categories - - - Fun - - - Sport +- My Categories - - Surfing - - Skating + - Fun - - Friends + - Sport - - Gerald - - Gwendolyn + - Surfing + - Skating + - Friends - - Work + - Gerald + - Gwendolyn - - Trips + - Work - - National - - International + - Trips + - National + - International +- Other People's Categories -- Other People's Categories - - - Extreme fishing - + - Extreme fishing Interroger et utiliser vos données ---------------------------------- @@ -348,45 +330,45 @@ de permutations en plus des méthodes find de bases. :param $order: Chaîne SQL des conditions ORDER BY. :param $limit: SQL LIMIT déclaration. :param $page: pour accéder aux resultats paginés. - :param $recursive: Nombre du niveau de profondeur pour la recursivité des + :param $recursive: Nombre du niveau de profondeur pour la récursivité des models associés. - La méthode ``children`` prend la clé primaire (l\'id d'une ligne) et - retourne l'enfant (children), par défaut dans l'ordre d\'apparition dans - l'arbre. Le second paramètre optionnel definit si il faut ou non - retourner les enfants directs. En utilisant l'exemple des données - de la section précédente:: - - $allChildren = $this->Category->children(1); // un tableau plat à 11 éléments - // -- ou -- - $this->Category->id = 1; - $allChildren = $this->Category->children(); // un tableau plat à 11 éléments +La méthode ``children`` prend la clé primaire (l\'id d'une ligne) et +retourne les enfants (children), par défaut dans l'ordre d\'apparition dans +l'arbre. Le second paramètre optionnel definit si il faut ou non +retourner seulement les enfants directs. En utilisant l'exemple des données +de la section précédente:: + + $allChildren = $this->Category->children(1); // un tableau plat à 11 éléments + // -- ou -- + $this->Category->id = 1; + $allChildren = $this->Category->children(); // un tableau plat à 11 éléments - // Ne retourne que les enfants directs - $directChildren = $this->Category->children(1, true); // un tableau plat avec 2 éléments + // Ne retourne que les enfants directs + $directChildren = $this->Category->children(1, true); // un tableau plat avec 2 éléments - .. note:: +.. note:: - Si vous voulez un tableau recursif utilisez ``find('threaded')`` + Si vous voulez un tableau recursif utilisez ``find('threaded')`` - .. php:method:: childCount($id = null, $direct = false) +.. php:method:: childCount($id = null, $direct = false) - Comme avec la méthode ``children``, ``childCount`` prend la valeur - de la clé primaire (l\'id) d'une ligne et retourne combien d'enfant elle - contient. +Comme avec la méthode ``children``, ``childCount`` prend la valeur +de la clé primaire (l\'id) d'une ligne et retourne combien d'enfant elle +contient. - Le second paramètre optionnel definit si il faut ou non compter - les enfants directs. En reprenant l\'exemple ci dessus :: +Le second paramètre optionnel definit si il faut ou non compter +les enfants directs. En reprenant l\'exemple ci dessus :: - $totalChildren = $this->Category->childCount(1); // retournera 11 - // -- ou -- - $this->Category->id = 1; - $directChildren = $this->Category->childCount(); //retournera 11 + $totalChildren = $this->Category->childCount(1); // retournera 11 + // -- ou -- + $this->Category->id = 1; + $directChildren = $this->Category->childCount(); //retournera 11 - // Seulement les comptes des descendants directs de cette category - $numChildren = $this->Category->childCount(1, true); // retournera 2 + // Seulement les comptes des descendants directs de cette category + $numChildren = $this->Category->childCount(1, true); // retournera 2 - .. php:method:: generateTreeList ($conditions=null, $keyPath=null, $valuePath=null, $spacer= '_', $recursive=null) +.. php:method:: generateTreeList ($conditions=null, $keyPath=null, $valuePath=null, $spacer= '_', $recursive=null) :param $conditions: Utilise les mêmes conditions qu'un find(). :param $keyPath: Chemin du champ à utiliser pour la clé. @@ -396,340 +378,334 @@ de permutations en plus des méthodes find de bases. :param $recursive: Le nombre de niveaux de profondeur pour rechercher les enregistrements associés. - Cette méthode retourne des données similaires à :ref: `model-find-list`, - avec un préfixe en retrait pour montrer la structure de vos données. Voici - un exemple de ce à quoi vous attendre comme retour avec cette méthode :: +Cette méthode retourne des données similaires à :ref: `model-find-list`, +avec un préfixe en retrait pour montrer la structure de vos données. Voici +un exemple de ce à quoi vous attendre comme retour avec cette méthode :: - $treelist = $this->Category->generateTreeList(); + $treelist = $this->Category->generateTreeList(); - Sortie:: +Sortie:: - array( - [1] => "My Categories", - [2] => "_Fun", - [3] => "__Sport", - [4] => "___Surfing", - [16] => "___Skating", - [6] => "__Friends", - [7] => "___Gerald", - [8] => "___Gwendolyn", - [9] => "_Work", - [13] => "__Trips", - [14] => "___National", - [15] => "___International", - [17] => "Other People's Categories", - [5] => "_Extreme fishing" - ) + array( + [1] => "My Categories", + [2] => "_Fun", + [3] => "__Sport", + [4] => "___Surfing", + [16] => "___Skating", + [6] => "__Friends", + [7] => "___Gerald", + [8] => "___Gwendolyn", + [9] => "_Work", + [13] => "__Trips", + [14] => "___National", + [15] => "___International", + [17] => "Other People's Categories", + [5] => "_Extreme fishing" + ) - .. php:method:: getParentNode() +.. php:method:: getParentNode() - Cette fonction comme son nom l'indique, donne en retour le noeud - parent d'un nœud, ou *false* si le noeud n'a pas de parent (c'est - le nœud racine). Par exemple :: +Cette fonction comme son nom l'indique, donne en retour le noeud +parent d'un nœud, ou *false* si le noeud n'a pas de parent (c'est +le nœud racine). Par exemple :: - $parent = $this->Category->getParentNode(2); //<- id de fun - // $parent contient toutes les catégories + $parent = $this->Category->getParentNode(2); //<- id de fun + // $parent contient toutes les catégories - .. php:method:: getPath( $id = null, $fields = null, $recursive = null ) +.. php:method:: getPath( $id = null, $fields = null, $recursive = null ) - Le 'path' (chemin) quand vous vous réferez à des données hiérarchiques, - c'est comment retrouver où vous êtes depuis le sommet. - Par exemple le path (chemin) de la catégorie "International" est: +Le 'path' (chemin) quand vous vous réferez à des données hiérarchiques, +c'est comment retrouver où vous êtes depuis le sommet. +Par exemple le path (chemin) de la catégorie "International" est: - My Categories - - ... - - Work - - - Trips + - ... + - Work + - Trips - - ... - - International + - ... + - International +En utilisant l\'id de "international", getPath retournera chacun des +parents rencontrés (depuis le haut):: - En utilisant l\'id de "international", getPath retournera chacun des - parents rencontrés (depuis le haut):: - - $parents = $this->Category->getPath(15); + $parents = $this->Category->getPath(15); - :: +:: - // contenu de $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', ..)), - ) + // contenu de $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', ..)), + ) Utilisation avancée =================== - Le behavior Tree ne fonctionne pas uniquement en tâche de fond, - il y a un certain nombre de méthodes spécifiques dans le behavior Tree - pour répondre a vos besoins de données hierarchiques, et des problèmes - inattendus qui pourraient survenir durant le processus. +Le behavior Tree ne fonctionne pas uniquement en tâche de fond, +il y a un certain nombre de méthodes spécifiques dans le behavior Tree +pour répondre a vos besoins de données hierarchiques, et des problèmes +inattendus qui pourraient survenir durant le processus. - .. php:method:: moveDown() +.. php:method:: moveDown() - Utilisé pour déplacer un seul nœud dans l'arbre. Vous devez fournir l\' - ID de l'élément à déplacer et un nombre positif de combien de - positions le noeud devrait être déplacé vers le bas. - Tous les nœuds enfants pour le noeud spécifié seront également déplacés. +Utilisé pour déplacer un seul nœud dans l'arbre. Vous devez fournir l\' +ID de l'élément à déplacer et un nombre positif de combien de +positions le noeud devrait être déplacé vers le bas. +Tous les nœuds enfants pour le noeud spécifié seront également déplacés. - Voici l\'exemple d'une action d'un controller (dans un controller nommé - Category) qui déplace un noeud spécifié vers le bas de l'arbre:: +Voici l\'exemple d'une action d'un controller (dans un controller nommé +Category) qui déplace un noeud spécifié vers le bas de l'arbre:: - public function movedown($id = null, $delta = null) { - $this->Category->id = $id; - if (!$this->Category->exists()) { - throw new NotFoundException(__('Invalid category')); - } - - 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->redirect(array('action' => 'index')); + public function movedown($id = null, $delta = null) { + $this->Category->id = $id; + if (!$this->Category->exists()) { + throw new NotFoundException(__('Invalid category')); } - Par exemple, si vous souhaitez déplacer le "Sport" (id de 3) d'une - catégorie vers le bas, vous devriez requêter: /categories/movedown/3/1. + 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.'); + } - .. php:method:: moveUp() + $this->redirect(array('action' => 'index')); + } - Utilisé pour déplacer un seul nœud de l'arbre. Vous devez fournir l'ID - de l'élément à déplacer et un nombre positif de combien de positions le - noeud devrait être déplacé vers le haut. Tous les nœuds enfants seront - également déplacés. +Par exemple, si vous souhaitez déplacer le "Sport" (id de 3) d'une +catégorie vers le bas, vous devriez requêter: /categories/movedown/3/1. - Voici un exemple d\'un controller action (dans un controller categories) - déplacant un noeud plus haut dans un arbre:: +.. php:method:: moveUp() - public function moveup($id = null, $delta = null) { - $this->Category->id = $id; - if (!$this->Category->exists()) { - throw new NotFoundException(__('Invalid category')); - } +Utilisé pour déplacer un seul nœud de l'arbre. Vous devez fournir l'ID +de l'élément à déplacer et un nombre positif de combien de positions le +noeud devrait être déplacé vers le haut. Tous les nœuds enfants seront +également déplacés. - 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.'); - } +Voici un exemple d\'un controller action (dans un controller categories) +déplacant un noeud plus haut dans un arbre:: - $this->redirect(array('action' => 'index')); + public function moveup($id = null, $delta = null) { + $this->Category->id = $id; + if (!$this->Category->exists()) { + throw new NotFoundException(__('Invalid category')); } - Par exemple, si vous souhaitez déplacer la catégory "Gwendoline" (id de 8) - plus haut d'une position vous devriez requêter: /categories/moveup/8/1. - Maintenant l'ordre des Amis sera Gwendolyn, Gérald. - - .. php:method:: removeFromTree($id = null, $delete = false) + 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.'); + } - En utilisant cette méthode, un neud sera supprimée ou déplacée, tout en - conservant son sous-arbre, qui sera apparenté à un niveau supérieur. - Il offre plus de contrôle que: ref: `model-delete` qui, pour un model - en utilisant le behavior tree supprimera le noeud spécifié et tous - ses enfants. + $this->redirect(array('action' => 'index')); + } - Prenons l\'arbre suivant au début: +Par exemple, si vous souhaitez déplacer la catégory "Gwendoline" (id de 8) +plus haut d'une position vous devriez requêter: /categories/moveup/8/1. +Maintenant l'ordre des Amis sera Gwendolyn, Gérald. +.. php:method:: removeFromTree($id = null, $delete = false) - - My Categories +En utilisant cette méthode, un neud sera supprimée ou déplacée, tout en +conservant son sous-arbre, qui sera apparenté à un niveau supérieur. +Il offre plus de contrôle que: ref: `model-delete` qui, pour un model +en utilisant le behavior tree supprimera le noeud spécifié et tous +ses enfants. - - Fun +Prenons l'arbre suivant au début:: - - Sport +- My Categories - - Surfing - - Extreme knitting - - Skating + - Fun + - Sport - En executant le code suivant avec l\'id de 'Sport':: + - Surfing + - Extreme knitting + - Skating - $this->Node->removeFromTree($id); +En executant le code suivant avec l\'id de 'Sport':: - Le noeud Sport sera retiré du haut du noeud: + $this->Node->removeFromTree($id); - - My Categories +Le noeud Sport sera retiré du haut du noeud: - - Fun +- My Categories - - Surfing - - Extreme knitting - - Skating + - Fun - - Sport **Déplacé** + - Surfing + - Extreme knitting + - Skating - Cela démontre le behavior par défaut du ``removeFromTree`` de - déplacement d'un noeud pour ne plus avoir de parent, et de re-parenter tous - les enfants. +- Sport **Moved** - Si toutefois l'extrait de code suivant était utilisé avec l\'id 'Sport':: +Cela démontre le behavior par défaut du ``removeFromTree`` de +déplacement d'un noeud pour ne plus avoir de parent, et de re-parenter tous +les enfants. - $this->Node->removeFromTree($id, true); +Si toutefois l'extrait de code suivant était utilisé avec l\'id 'Sport':: - L'arbre deviendrait. + $this->Node->removeFromTree($id, true); +L'arbre deviendrait - - My Categories - - - Fun +- My Categories - - Surfing - - Extreme knitting - - Skating + - Fun + - Surfing + - Extreme knitting + - Skating - Ceci démontre l'utilisation alternative de ``removeFromTree``, les enfants - ont été reparentés et 'Sport' a été effacé. +Ceci démontre l'utilisation alternative de ``removeFromTree``, les enfants +ont été reparentés et 'Sport' a été effacé. - .. php:method:: reorder(array('id' => null, 'field' => $Model->displayField, 'order' => 'ASC', 'verify' => true)) +.. php:method:: reorder(array('id' => null, 'field' => $Model->displayField, 'order' => 'ASC', 'verify' => true)) - Réordonne les nœuds (et nœuds enfants) de l'arbre en fonction du champ et de la - direction spécifiée dans les paramètres. Cette méthode ne changera pas le - parent d'un nœud.:: +Réordonne les nœuds (et nœuds enfants) de l'arbre en fonction du champ et de la +direction spécifiée dans les paramètres. Cette méthode ne changera pas le +parent d'un nœud. :: - $model->reorder(array( - 'id' => , //id de l\'enregistrement à utiliser comme noeud haut pour réordonner, default: $Model->id - 'field' => , //champ à utiliser pour réordonner, par défaut: $Model->displayField - 'order' => , //direction de l\'ordonnement, par défaut: 'ASC' - 'verify' => //vérifier ou pas l'arbre avant de réordonner, par défaut: true - )); + $model->reorder(array( + 'id' => , //id de l\'enregistrement à utiliser comme noeud haut pour réordonner, default: $Model->id + 'field' => , //champ à utiliser pour réordonner, par défaut: $Model->displayField + 'order' => , //direction de l\'ordonnement, par défaut: 'ASC' + 'verify' => //vérifier ou pas l'arbre avant de réordonner, par défaut: true + )); - .. note:: +.. note:: - Si vous avez sauvegardé vos données ou fait d'autres opérations sur le - model, vous pouvez définir ``$model->id = null`` avant d'appeler - ``reorder``. Sinon, seuls les enfants du nœud actuel et ses enfants - seront réordonnés. + Si vous avez sauvegardé vos données ou fait d'autres opérations sur le + model, vous pouvez définir ``$model->id = null`` avant d'appeler + ``reorder``. Sinon, seuls les enfants du nœud actuel et ses enfants + seront réordonnés. Intégrité des données ===================== - En raison de la nature complexe auto-référentielle de ces structures de - données comme les arbres et les listes chaînées, elles peuvent parfois se - rompre par un appel négligent. Rassurez-vous, tout n'est pas perdu! Le - behavior Tree contient plusieurs fonctionnalités précédemment - non-documentées destinées à se remettre de telles situations. +En raison de la nature complexe auto-référentielle de ces structures de +données comme les arbres et les listes chaînées, elles peuvent parfois se +rompre par un appel négligent. Rassurez-vous, tout n'est pas perdu! Le +behavior Tree contient plusieurs fonctionnalités précédemment +non-documentées destinées à se remettre de telles situations. + +.. php:method:: recover($mode = 'parent', $missingParentAction = null) + +Le paramètre ``mode`` est utilisé pour spécifier la source de l'info qui +est correcte. La source opposée de données sera peuplée en fonction de +cette source d'information. Ex: si le champ MPTT est corrompu ou vide, avec +le ``$mode 'parent'`` la valeur du champ ``parent_id`` sera utilisée pour +peupler les champs gauche et droite. - .. php:method:: recover($mode = 'parent', $missingParentAction = null) +Le paramètre ``missingParentAction`` s'applique uniquement aux "parent" +mode et détermine ce qu'il faut faire si le champ parent contient un +identifiant qui n'est pas présent. - Le paramètre ``mode`` est utilisé pour spécifier la source de l'info qui - est correcte. La source opposée de données sera peuplée en fonction de - cette source d'information. Ex: si le champ MPTT est corrompu ou vide, avec - le ``$mode 'parent'`` la valeur du champ ``parent_id`` sera utilisée pour - peupler les champs gauche et droite. +Options ``$mode`` permises: - Le paramètre ``missingParentAction`` s'applique uniquement aux "parent" - mode et détermine ce qu'il faut faire si le champ parent contient un - identifiant qui n'est pas présent. +- ``'parent'`` - utilise l'actuel``parent_id``pour mettre à jour les champs + ``lft`` et ``rght``. +- ``'tree'`` - utilise les champs actuels ``lft``et``rght``pour mettre à jour + le champ ``parent_id`` - Options ``$mode`` permises: +Les options de ``missingParentActions`` autorisées durant l\'utilisation de +``mode='parent'``: - - ``'parent'`` - utilise l'actuel``parent_id``pour mettre à jour les champs - ``lft`` et ``rght``. - - ``'tree'`` - utilise les champs actuels ``lft``et``rght``pour mettre à jour - le champ ``parent_id`` +- ``null`` - ne fait rien et continue +- ``'return'`` - ne fait rien et fait un return +- ``'delete'`` - efface le noeud +- ``int`` - definit parent\_id à cet id - Les options de ``missingParentActions`` autorisées durant l\'utilisation de - ``mode='parent'``: +Exemple:: - - ``null`` - ne fait rien et continue - - ``'return'`` - ne fait rien et fait un return - - ``'delete'`` - efface le noeud - - ``int`` - definit parent\_id à cet id + // Reconstruit tous les champs gauche et droit en se basant sur parent_id + $this->Category->recover(); + // ou + $this->Category->recover('parent'); - Exemple:: + // Reconstruit tous les parent_id en se basant sur les champs lft et rght + $this->Category->recover('tree'); - // Reconstruit tous les champs gauche et droit en se basant sur parent_id - $this->Category->recover(); - // ou - $this->Category->recover('parent'); +.. php:method:: reorder($options = array()) - // Reconstruit tous les parent_id en se basant sur les champs lft et rght - $this->Category->recover('tree'); - - .. php:method:: reorder($options = array()) +Réordonne les nœuds (et nœuds enfants) de l'arbre en fonction du +champ et de la direction spécifiés dans les paramètres. Cette méthode ne +change pas le parent d'un nœud. - Réordonne les nœuds (et nœuds enfants) de l'arbre en fonction du - champ et de la direction spécifiés dans les paramètres. Cette méthode ne - change pas le parent d'un nœud. - - La réorganisation affecte tous les nœuds dans l'arborescence par défaut, - mais les options suivantes peuvent influer sur le processus: +La réorganisation affecte tous les nœuds dans l'arborescence par défaut, +mais les options suivantes peuvent influer sur le processus: - - ``'id'`` - ne réordonne que les noeuds sous ce noeud. - - ``'field``' - champ à utiliser pour le tri, par défaut le - ``displayField`` du model. - - ``'order'`` - ``'ASC'`` pour tri ascendant, ``'DESC'`` pour tri - descendant. - - ``'verify'`` - avec ou sans vérification avant tri. +- ``'id'`` - ne réordonne que les noeuds sous ce noeud. +- ``'field``' - champ à utiliser pour le tri, par défaut le + ``displayField`` du model. +- ``'order'`` - ``'ASC'`` pour tri ascendant, ``'DESC'`` pour tri + descendant. +- ``'verify'`` - avec ou sans vérification avant tri. - ``$options`` est utilisé pour passer tous les paramètres supplémentaires, - et les clés suivantes par défaut, toutes sont facultatives:: +``$options`` est utilisé pour passer tous les paramètres supplémentaires, +et les clés suivantes par défaut, toutes sont facultatives:: - array( - 'id' => null, - 'field' => $model->displayField, - 'order' => 'ASC', - 'verify' => true - ) + array( + 'id' => null, + 'field' => $model->displayField, + 'order' => 'ASC', + 'verify' => true + ) - .. php:method:: verify() +.. php:method:: verify() - Retourne ``True`` si l'arbre est valide sinon un tableau d'erreurs, - avec des champs pour le type, l'index, et le message d'erreur. +Retourne ``True`` si l'arbre est valide sinon un tableau d'erreurs, +avec des champs pour le type, l'index, et le message d'erreur. - Chaque enregistrement dans le tableau de sortie est un tableau de la forme - (type, id,message) +Chaque enregistrement dans le tableau de sortie est un tableau de la forme +(type, id,message) - - ``type`` est soit ``'index'`` ou ``'node'`` - - ``'id'`` est l\'id du noeud erroné. - - ``'message'`` dépend de l'erreur rencontrée +- ``type`` est soit ``'index'`` ou ``'node'`` +- ``'id'`` est l\'id du noeud erroné. +- ``'message'`` dépend de l'erreur rencontrée - Exemple d'utilisation:: +Exemple d'utilisation:: - $this->Category->verify(); + $this->Category->verify(); Exemple de sortie:: - Array - ( - [0] => Array - ( - [0] => node - [1] => 3 - [2] => left and right values identical - ) - [1] => Array - ( - [0] => node - [1] => 2 - [2] => The parent node 999 doesn't exist - ) - [10] => Array - ( - [0] => index - [1] => 123 - [2] => missing - ) - [99] => Array - ( - [0] => node - [1] => 163 - [2] => left greater than right - ) - - ) + Array + ( + [0] => Array + ( + [0] => "node" + [1] => 3 + [2] => "left and right values identical" + ) + [1] => Array + ( + [0] => "node" + [1] => 2 + [2] => "The parent node 999 doesn't exist" + ) + [10] => Array + ( + [0] => "index" + [1] => 123 + [2] => "missing" + ) + [99] => Array + ( + [0] => "node" + [1] => 163 + [2] => "left greater than right" + ) + + ) .. meta:: :title lang=fr: Tree - :keywords lang=fr: auto increment,représentation littérale,parent id,table catégories,table base de données,données hiérarchisées,valeur null,système de menu,intricacies,contrôle accès,hiérarchie,logique,élements,trees, arbres + :keywords lang=fr: auto increment,représentation littérale,parent id,table catégories,table base de données,données hiérarchisées,valeur null,système de menu,intricacies,contrôle accès,hiérarchie,logique,éléments,trees, arbres diff --git a/fr/core-libraries/caching.rst b/fr/core-libraries/caching.rst index f64d00f1e3..9ce8b9a9c8 100644 --- a/fr/core-libraries/caching.rst +++ b/fr/core-libraries/caching.rst @@ -32,7 +32,7 @@ votre propre système de mise en cache. Les moteurs de cache intégrés sont: * ``Wincache`` Utilise l'extension `Wincache `_. Wincache offre des fonctionnalités et des performances semblables à APC, mais optimisées pour Windows et IIS. -* ``XcacheEngine`` Similaire à APC, `Xcache `_. +* ``XcacheEngine`` `Xcache `_. est une extension PHP qui fournit des fonctionnalités similaires à APC. * ``MemcacheEngine`` Utilise l'extension `Memcache `_. Memcache fournit un cache très rapide qui peut être distribué au travers @@ -131,7 +131,7 @@ Si vous avez un moteur de cache nommé ``MonMoteurDeCachePerso`` il devra comme une app/librairie ou dans ``$plugin/Lib/Cache/Engine/MonMoteurDeCachePerso.php`` faisant parti d'un plugin. Les configurations de cache venant d'un plugin doivent utiliser la -notation par points de plugin.:: +notation par points de plugin. :: Cache::config('custom', array( 'engine' => 'CachePack.MyCustomCache', @@ -387,7 +387,7 @@ l'API de Cache le cache. Si il n'y a pas de ``$config`` spécifiée c'est la configuration par défaut qui sera appliquée. Cache::write() peut stocker n'importe quel type d'objet et elle est idéale pour - stocker les résultats des finds de vos models.:: + stocker les résultats des finds de vos models. :: if (($posts = Cache::read('posts')) === false) { @@ -411,7 +411,7 @@ l'API de Cache Si vous utilisez ``Cache::set()`` pour changer les paramètres pour une écriture, vous devez aussi utiliser ``Cache::set()`` avant de lire les données en retour. Si vous ne faites pas cela, les paramètres par défaut - seront utilisés quand la clé de cache est lue.:: + seront utilisés quand la clé de cache est lue. :: Cache::set(array('duration' => '+30 days')); Cache::write('results', $data); diff --git a/fr/core-libraries/components/access-control-lists.rst b/fr/core-libraries/components/access-control-lists.rst index d7137836e1..ceb8b1726e 100644 --- a/fr/core-libraries/components/access-control-lists.rst +++ b/fr/core-libraries/components/access-control-lists.rst @@ -351,7 +351,7 @@ nous avions façonnée pourrait ressembler dans une syntaxe INI : allow = porc_sale Maintenant que vous avez défini vos permissions, vous pouvez passer à la -section sur la :ref:`vérification des permissions ` +section sur la :ref:`vérification des permissions ` en utilisant le component ACL. Définir les permissions : ACL de CakePHP via une base de données diff --git a/fr/core-libraries/components/authentication.rst b/fr/core-libraries/components/authentication.rst index b9ab8d1661..f1018e6012 100755 --- a/fr/core-libraries/components/authentication.rst +++ b/fr/core-libraries/components/authentication.rst @@ -126,7 +126,14 @@ Les objets d'authentification supportent les clés de configuration suivante. .. versionadded:: 2.4 -Configurer différents champs pour l'utilisateur dans le tableau ``$components``:: +- ``userFields`` La liste des champs à récupérer depuis le ``userModel``. Cette + option est utile lorsque vous avez une large table d'utilisateurs et que vous + n'avez pas besoin de toutes les colonnes dans la session. Par défaut tous les + champs sont récupérés. + + .. versionadded:: 2.6 + + Configurer différents champs pour l'utilisateur dans le tableau ``$components``:: // Passer la configuration dans le tableau $components public $components = array( @@ -142,24 +149,27 @@ Configurer différents champs pour l'utilisateur dans le tableau ``$components`` 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.:: +ressemblerait à quelque chose comme. :: - // Passage de paramètre dans le tableau $components - public $components = array( - 'Auth' => array( - 'loginAction' => array( - 'controller' => 'users', - 'action' => 'login', - 'plugin' => 'users' - ), - 'authError' => 'Pensiez-vous réellement que vous étiez autorisés à voir cela ?', - 'authenticate' => array( - 'Form' => array( - 'fields' => array('username' => 'email') + // Passage de paramètre dans le tableau $components + public $components = array( + 'Auth' => array( + 'loginAction' => array( + 'controller' => 'users', + 'action' => 'login', + 'plugin' => 'users' + ), + 'authError' => 'Pensiez-vous réellement que vous étiez autorisés à voir cela ?', + 'authenticate' => array( + 'Form' => array( + 'fields' => array( + 'username' => 'mon_champ_username_personnalise', // 'username' par défaut + 'password' => 'mon_champ_password_personnalise' // 'password' par défaut ) ) ) - ); + ) + ); En plus de la configuration courante, l'authentification de base prend en charge les clés suivantes: @@ -194,18 +204,18 @@ Une simple fonction de connexion pourrait ressembler à cela :: public function login() { if ($this->request->is('post')) { + // Important: Utilisez login() sans argument! Voir warning ci-dessous. if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); // 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' + ); } } @@ -300,7 +310,7 @@ cookies, ces valeurs sont utilisées pour ré-identifier l'utilisateur et s'assurer que c'est un utilisateur valide. Comme avec les méthodes d'authentification de l'objet ``authenticate()``, la méthode ``getuser()`` devrait retourner un tableau d'information utilisateur en cas de succès, -et ``false`` en cas d'echec.:: +et ``false`` en cas d'echec. :: public function getUser($request) { $username = env('PHP_AUTH_USER'); @@ -343,7 +353,7 @@ Afficher les messages flash de Auth Pour afficher les messages d'erreur de session que Auth génère, vous devez ajouter les lignes de code suivante dans votre layout. Ajoutez les deux lignes suivantes au fichier ``app/View/Layouts/default.ctp`` dans la section body de -préférence avant la ligne content_for_layout.:: +préférence avant la ligne content_for_layout. :: echo $this->Session->flash(); echo $this->Session->flash('auth'); @@ -523,7 +533,11 @@ utilisateur que vous voulez pour la 'connexion':: 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) + ); + unset($this->request->data['User']['password']); $this->Auth->login($this->request->data['User']); return $this->redirect('/users/home'); } @@ -531,8 +545,14 @@ utilisateur que vous voulez pour la 'connexion':: .. warning:: - Soyez certain d'ajouter manuellement le nouvel id utilisateur au tableau passé - à la méthode de login. Sinon, l'id utilisateur ne sera pas disponible. + Assurez-vous d'ajouter manuellement le nouvel id utilisateur au tableau + passé à la méthode de login. Sinon, l'id utilisateur ne sera pas disponible. + +.. warning:: + + Assurez-vous d'enlever les champs de mot de passe avant de passer + manuellement les données dans ``$this->Auth->login()``, sinon celles-ci + seront sauvegardées non hashées dans la Session. Accéder à l'utilisateur connecté -------------------------------- @@ -593,7 +613,7 @@ pouvez créer vos propres gestionnaires dans un plugin par exemple. Configurer les gestionnaires d'autorisation ------------------------------------------- -Vous configurez les gestionnaires d'autorisations via +Vous configurez les gestionnaires d'autorisations via ``$this->Auth->authorize``. Vous pouvez configurer un ou plusieurs gestionnaires. L'utilisation de plusieurs gestionnaires vous donne la possibilité d'utiliser plusieurs moyens de vérifier les autorisations. @@ -877,7 +897,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. :php:meth:`SessionComponent::setFlash()`. Les clés disponibles sont: - - ``element`` - L'élement à utiliser , par défaut à 'default'. + - ``element`` - L'élément à utiliser , par défaut à 'default'. - ``key`` - La clé à utiliser, par défaut à 'auth'. - ``params`` - Un tableau de paramètres supplémentaires à utiliser par défaut à array() @@ -906,7 +926,7 @@ d'autorisation et d'authentification intégrée dans CakePHP. Contrôle la gestion des accès non autorisés. Par défaut, un utilisateur non autorisé est redirigé vers l'URL référente ou vers - ``AuthComponent::$loginAction`` ou '/'. + ``AuthComponent::$loginRedirect`` ou '/'. Si défini à false, une exception ForbiddenException est lancée au lieu de la redirection. diff --git a/fr/core-libraries/components/cookie.rst b/fr/core-libraries/components/cookie.rst index 5eb1d161fe..2eae6fe48e 100644 --- a/fr/core-libraries/components/cookie.rst +++ b/fr/core-libraries/components/cookie.rst @@ -130,7 +130,7 @@ Le Component Cookie offre plusieurs méthodes pour travailler avec les Cookies. .. php:method:: read(mixed $key = null) Cette méthode est utilisée pour lire la valeur d'une variable de cookie - avec le nom spécifié dans $key.:: + avec le nom spécifié dans $key. :: // Sortie "Larry" echo $this->Cookie->read('name'); diff --git a/fr/core-libraries/components/request-handling.rst b/fr/core-libraries/components/request-handling.rst index 8d17b82b6f..0161cd5a53 100644 --- a/fr/core-libraries/components/request-handling.rst +++ b/fr/core-libraries/components/request-handling.rst @@ -53,7 +53,7 @@ contenu que le client accepte. Par exemple:: // les réponses HTML (text/html) } elseif ($this->RequestHandler->accepts('xml')) { // executé seulement si le client accepte seulement - // les réponse XML + // les réponses XML } if ($this->RequestHandler->accepts(array('xml', 'rss', 'atom'))) { // Executé si le client accepte l'un des suivants: XML, RSS ou Atom @@ -73,7 +73,7 @@ D'autres méthodes de détections du contenu des requêtes: .. php:method:: isAtom() - Renvoie true si l'appel actuel accepte les réponse Atom, false dans le cas + Renvoie true si l'appel actuel accepte les réponses Atom, false dans le cas contraire. .. php:method:: isMobile() @@ -277,7 +277,7 @@ pour déterminer si la réponse n'a pas été modifiée depuis la dernière fois que le client a fait sa demande. Si la réponse est évaluée comme non modifiée, alors le processus de rendu de -vues est arrêter, réduisant le temps processeur. Un ``no content`` est retourné +vues est arrêté, réduisant le temps processeur. Un ``no content`` est retourné au client, augmentant la bande passante. Le code de réponse est défini à `304 Not Modified`. diff --git a/fr/core-libraries/components/security-component.rst b/fr/core-libraries/components/security-component.rst index 717230e1b3..5b42764213 100644 --- a/fr/core-libraries/components/security-component.rst +++ b/fr/core-libraries/components/security-component.rst @@ -295,7 +295,7 @@ En ajoutant simplement la ``SecurityComponent`` à votre tableau de component, vous pouvez bénéficier de la protection CSRF fournie. Par défaut les jetons CSRF sont valides 30 minutes et expire à l'utilisation. Vous pouvez contrôler la durée des jetons en paramétrant csrfExpires -dans le component.:: +dans le component. :: public $components = array( 'Security' => array( @@ -304,7 +304,7 @@ dans le component.:: ); Vous pouvez aussi définir cette propriété dans la partie ``beforeFilter`` -de votre controller.:: +de votre controller. :: public function beforeFilter() { $this->Security->csrfExpires = '+1 hour'; diff --git a/fr/core-libraries/components/sessions.rst b/fr/core-libraries/components/sessions.rst index e626da1205..f82d95bfd1 100644 --- a/fr/core-libraries/components/sessions.rst +++ b/fr/core-libraries/components/sessions.rst @@ -72,7 +72,7 @@ le nom/la clé utilisé. La méthode ``destroy`` supprimera le cookie de session et toutes les données de session stockées dans le fichier temporaire du système. Cela - va détruire la session PHP et ainsi en créer une nouvelle.:: + va détruire la session PHP et ainsi en créer une nouvelle. :: $this->Session->destroy(); @@ -112,7 +112,7 @@ Création de messages de notification et les notifications positives peuvent avoir des apparences différentes. CakePHP vous donne un moyen de le faire. En utilisant le paramètre ``$key`` vous pouvez stocker différents messages, - qui peuvent être séparément récupérer en sortie.:: + qui peuvent être séparément récupérer en sortie. :: // définit le message que ca va mal $this->Session->setFlash('Ca va mal.', 'default', array(), 'mal'); @@ -143,7 +143,7 @@ Création de messages de notification au layout de rendu. Les paramètres peuvent être passés en affectant la div de rendu, par exemple en ajoutant "class" dans le tableau $params qui appliquera une classe à la div de sortie en utilisant - ``$this->Session->flash()`` dans votre layout ou vue.:: + ``$this->Session->flash()`` dans votre layout ou vue. :: $this->Session->setFlash( 'Message Exemple', diff --git a/fr/core-libraries/events.rst b/fr/core-libraries/events.rst index 63f5aa978f..3c0460b597 100644 --- a/fr/core-libraries/events.rst +++ b/fr/core-libraries/events.rst @@ -17,12 +17,12 @@ vous aideront à atteindre ce but, il y a certains cas où vous avez besoin de communiquer proprement avec les autres parties du système sans avoir à coder en dur ces dépendances, ainsi réduire la cohésion et accroître le couplage de classe. Un motif de conception (design pattern) très réussi dans -l'ingénierie software est le modèle obervateur (Observer pattern), où les +l'ingénierie software est le modèle observateur (Observer pattern), où les objets peuvent générer des événements et notifier à des écouteurs (listener) possiblement anonymes des changements d'états internes. Les écouteurs (listener) dans le modèle observateur (Observer pattern) peuvent -s'abonner à de tel événements et choisir d'interagir sur eux, modifier l'état +s'abonner à de tels événements et choisir d'interagir sur eux, modifier l'état du sujet ou simplement faire des logs. Si vous avez utilisez JavaScript dans le passé, vous avez la chance d'être déjà familier avec la programmation événementielle. @@ -30,27 +30,28 @@ le passé, vous avez la chance d'être déjà familier avec la programmation CakePHP émule plusieurs aspects sur la façon dont les événements sont déclenchés et managés dans des frameworks JavaScript comme le populaire jQuery, tout en restant fidèle à sa conception orientée objet. Dans cette -implémentation, un objet événement est transporté a travers tous les écouteurs +implémentation, un objet événement est transporté à travers tous les écouteurs qui détiennent l'information et la possibilité d'arrêter la propagation des événements à tout moment. Les écouteurs peuvent s'enregistrer eux-mêmes ou peuvent déléguer cette tâche a d'autres objets et avoir la chance de modifier l'état et l'événement lui-même pour le reste des callbacks. Le sous-système d'event est au coeur des callbacks de Model, de Behavior, de -Controller, de View et de Helper. Si vous avez jamais utilisé aucun d'eux, +Controller, de View et de Helper. Si vous n'avez jamais utilisé aucun d'eux, vous êtes déjà quelque part familier avec les events dans CakePHP. -Example event usage -=================== +Exemple d'Utilisation d'Event +============================= -Let's suppose you are building a Cart plugin, and you'd like to focus on just -handling order logic. You don't really want to include shipping logic, emailing -the user or decrementing the item from the stock, but these are important tasks -to the people using your plugin. If you were not using events, you may try to -implement this by attaching behaviors to models, or adding components to your -controllers. Doing so represents a challenge most of the time, since you -would have to come up with the code for externally loading those behaviors or -attaching hooks to your plugin controllers. +Supposons que vous codez un Plugin de gestion de panier, et que vous vouliez +vous focaliser sur la logique lors de la commande. Vous ne voulez pas à ce +moment là inclure la logique pour l'expédition, l'email ou la décrémentation +du produit dans le stock, mais ce sont des tâches importantes pour les personnes +utilisant votre plugin. Si vous n'utilisiez pas les évènements vous auriez pu +implémenter cela en attachant des behaviors à vos modèles ou en ajoutant des +composants à votre controller. Doing so represents a challenge most of the time, +since you would have to come up with the code for externally loading those +behaviors or attaching hooks to your plugin controllers. Instead, you can use events to allow you to cleanly separate the concerns of your code and allow additional concerns to hook into your plugin using events. @@ -80,7 +81,7 @@ that an order has been created. You can then do tasks like send email notifications, update stock, log relevant statistics and other tasks in separate objects that focus on those concerns. -Accéder aux gestionnaires d'event +Accéder aux Gestionnaires d'Event ================================= In CakePHP events are triggered against event managers. Event managers are @@ -92,8 +93,8 @@ Each model has a separate event manager, while the View and Controller share one. This allows model events to be self contained, and allow components or controllers to act upon events created in the view if necessary. -Le gestionnaire d'événement global ----------------------------------- +Le gestionnaire d'Event global +------------------------------ 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 @@ -122,12 +123,12 @@ Souvenez-vous qu'une extrême flexibilité implique une extrême complexité. liste séparée et déclenchés **avant** que les instances de listeners le soient. -Distribution des événements -=========================== +Distribution des Events +======================= -Once you have obtained an instance of an event manager you can dispatch events -using :php:meth:`~CakeEventManager::dispatch()`. This method takes an instance -of the :php:class:`CakeEvent` class. Let's look at dispatching an event:: +Une fois obtenue l'instance d'un gestionnaire d'événement, vous pourrez distribuer +les événements via :php:meth:`~CakeEventManager::dispatch()`. Cette méthode prend en argument un instance +de la classe :php:class:`CakeEvent`. Regardons comment distribuer un événement:: // Create a new event and dispatch it. $event = new CakeEvent('Model.Order.afterPlace', $this, array( @@ -152,11 +153,11 @@ du controller. La classe du sujet est importante parce que les écouteurs (listeners) auront des accès immédiats aux propriétés des objets et la chance de les inspecter ou de les changer à la volée. -Finalement, le troisième argument est le paramètres d'événement. Ceci peut +Finalement, le troisième argument est le paramètre d'événement. Ceci peut être n'importe quelle donnée que vous considérez comme étant utile à passer avec laquelle les écouteurs peuvent interagir. Même si cela peut être n'importe quel type d'argument, nous vous recommandons de passer un tableau -associatif, pour rendre l'inspection plus facile. +associatif, pour rendre l'inspection plus facile. La méthode :php:meth:`CakeEventManager::dispatch()` accepte les objets événements comme arguments et notifie a tous les écouteurs et callbacks le @@ -181,10 +182,12 @@ UserStatistic responsable du calcul d'information utiles et de la compilation de statistiques dans le site global. Ce serait naturel de passer une instance de cette classe comme un callback, au lien d'implémenter une fonction statique personnalisé ou la conversion de n'importe quel autre contournement -pour déclencher les méthodes de cette classe. Un écouteur (listener) est créé -comme ci-dessous :: +pour déclencher les méthodes de cette classe. Un écouteur (listener) +``UserStatistics`` est créé comme ci-dessous :: + // Dans app/Lib/Event/UserStatistic.php App::uses('CakeEventListener', 'Event'); + class UserStatistic implements CakeEventListener { public function implementedEvents() { @@ -194,10 +197,11 @@ comme ci-dessous :: } public function updateBuyStatistic($event) { - // Code pour mettre à jour les statistiques + // Code to update statistics } } + // Dans un controller ou à n'importe quel endroit où $this->Order est accessible // Attache l'objet UserStatistic au gestionnaire d'événement 'Order' (commande) $statistics = new UserStatistic(); $this->Order->getEventManager()->attach($statistics); @@ -205,17 +209,46 @@ comme ci-dessous :: Comme vous pouvez le voir dans le code ci-dessus, la fonction `attach` peut manipuler les instances de l'interface `CakeEventListener`. En interne, le gestionnaire d'événement lira le tableau retourné par la méthode -`implementedEvents` et relie les callbacks en conséquence. +``implementedEvents`` et relie les callbacks en conséquence. -Registering anonymous listeners -------------------------------- +Enregistrer les Écouteurs Globaux +--------------------------------- + +Comme montré dans l'exemple ci-dessus, les écouteurs d'événement sont placés +par convention dans ``app/Lib/Event``. Suivre cette convention vous permet +de facilement localiser vos classes d'écouteurs. Il est aussi recommandé +d'attacher les écouteurs globaux pendant le processus de bootstrap de votre +application:: + + // Dans app/Config/bootstrap.php + + // Charge les écouteurs d'événement globaux. + require_once APP . 'Config' . DS . 'events.php' + +Un exemple de fichier de bootstrap d'événement pour notre application de caddie +ressemblerait à ceci:: + + // Dans app/Config/events.php -While event listener objects are generally a better way to implement listeners, -you can also bind any ``callable`` as an event listener. For example if we -wanted to put any orders into the log files, we could use a simple anonymous -function to do so:: + // Charge les écouteurs d'événement + App::uses('UserStatistic', 'Lib/Event'); + App::uses('ProductStatistic', 'Lib/Event'); + App::uses('CakeEventManager', 'Event'); + + // Attache les écouteurs. + CakeEventManager::instance()->attach(new UserStatistic()); + CakeEventManager::instance()->attach(new ProductStatistic()); + +Enregistrer les Écouteurs Anonymes +---------------------------------- - // Anonymous functions require PHP 5.3+ +Tandis que les objects d'écoute d'événements sont généralement une meilleure +manière d'implémenter les écouteurs, vous pouvez aussi attacher n'importe quel +``callable`` comme écouteur d'événement. Par exemple, si nous voulions +enregistrer chaque commande dans les fichiers de journalisation, nous +utiliserions une simple fonction anonyme pour le faire :: + + // Les fonctions anonymes requièrent PHP 5.3+ $this->Order->getEventManager()->attach(function($event) { CakeLog::write( 'info', @@ -223,8 +256,7 @@ function to do so:: ); }, 'Model.Order.afterPlace'); -In addition to anonymous functions you can use any other callable type that PHP -supports:: +En plus des fonctions anonymes, vous pouvez utiliser n'importe quel type de ``callable`` supporté par PHP:: $events = array( 'email-sending' => 'EmailSender::sendBuyEmail', @@ -236,12 +268,12 @@ supports:: .. _event-priorities: -Établir des priorités +Établir des Priorités --------------------- Dans certains cas, vous souhaitez exécuter un callback et être sûre qu'il sera exécuté avant, ou après tous les autres callbacks déjà lancés. Par exemple, -repensons a notre exemple de statistiques utilisateur. Il serait judicieux +repensons à notre exemple de statistiques utilisateur. Il serait judicieux de n'exécuter cette méthode que si nous sommes sûrs que l'événement n'a pas été annulé, qu'il n'y a pas d'erreur et que les autres callbacks n'ont pas changés l'état de 'order' lui même. Pour ces raisons vous pouvez utiliser les @@ -282,12 +314,12 @@ les méthodes appelables et les préférences de priorités. La clé appelable `callable` est une entrée de tableau spéciale que le gestionnaire (manager) lira pour savoir quelle fonction dans la classe il devrait appeler. -Obtenir des données d'événements comme paramètres de fonction -------------------------------------------------------------- +Obtenir des Données d'Event comme Paramètres de Fonction +-------------------------------------------------------- Certain développeurs pourraient préférer avoir les données d'événements passées comme des paramètres de fonctions au lieu de recevoir l'objet -événement. Bien que ce soit un préférence étrange et que l'utilisation d'objet +événement. Bien que ce soit une préférence étrange et que l'utilisation d'objet événement est bien plus puissant, ceci a été nécessaire pour fournir une compatibilité ascendante avec le précédent système d'événement et pour offrir aux développeurs chevronnés une alternative pour ce auquel ils sont habitués. @@ -325,12 +357,12 @@ l'événement `Model.Order.afterPlace` avec quelques données:: .. note:: Les paramètres ne peuvent être passés comme arguments de fonction que - si la donnée d'événement est un tableau. N'importe quelle autre type de + si la donnée d'événement est un tableau. N'importe quel autre type de données sera converti en paramètre de fonction, ne pas utiliser cette option est souvent plus adéquate. -Stopper des événements ----------------------- +Stopper des Events +------------------ Il y a des circonstances ou vous aurez besoin de stopper des événements de sorte que l'opération commencée est annulée. Vous voyez un exemple de cela @@ -353,13 +385,13 @@ callbacks ou appeler la méthode `stopPropagation` sur l'objet événement:: Stopper un événement peut avoir deux effets différents. Le premier peut toujours être attendu; n'importe quel callback après l'événement qui à -été stoppé ne sera appelé. Le seconde conséquence est optionnelle et dépend +été stoppé ne sera appelé. La seconde conséquence est optionnelle et dépend du code qui déclenche l'événement, par exemple, dans votre exemple `afterPlace` cela n'aurait pas de sens d'annuler l'opération tant que les données n'aurons pas toutes été enregistrées et le Caddie vidé. Néanmoins, si nous avons une `beforePlace` arrêtant l'événement cela semble valable. -Pour vérifier qu'un événement à été stoppé, vous appelez la méthode +Pour vérifier qu'un événement a été stoppé, vous appelez la méthode `isStopped()` dans l'objet événement:: public function place($order) { @@ -374,11 +406,11 @@ Pour vérifier qu'un événement à été stoppé, vous appelez la méthode // ... } -Dans l'exemple précédent la vente ne seraient pas enregistrée si l'événement -est stoppé durant le processus `beforePlace`. +Dans l'exemple précédent la vente ne serait pas enregistrée si l'événement +est stoppé durant le processus `beforePlace`. -Récupérer les résultats d'événement ------------------------------------ +Récupérer les Résultats d'Event +------------------------------- Chacune des fois ou un callback retourne une valeur, celle ci est stockée dans la propriété `$result` de l'objet événement. C'est utile dans certains cas @@ -389,7 +421,7 @@ la donnée $order (commande). Les résultats d'événement peuvent être modifiés soit en utilisant directement la propriété result de l'objet event ou en retournant une valeur dans le -callback lui même.:: +callback lui même. :: // Un écouteur (listener) de callback public function doSomething($event) { @@ -404,7 +436,7 @@ callback lui même.:: $event->result['order'] = $alteredData; } - // Utilisation du résultat de l'événement + // Utilisation du résultat de l'événement public function place($order) { $event = new CakeEvent('Model.Order.beforePlace', $this, array('order' => $order)); $this->getEventManager()->dispatch($event); @@ -425,7 +457,7 @@ modifier directement les objets est la meilleur solution puisque la référence est maintenue et que les modifications sont partagées à travers les appels callbacks. -Retirer des callbacks et écouteurs (listeners) +Retirer des Callbacks et Écouteurs (listeners) ---------------------------------------------- Si pour quelque raison que ce soit, vous voulez retirer certains callbacks @@ -447,9 +479,9 @@ deux premiers paramètres que vous avez utilisés pour les attacher:: $this->getEventManager()->detach($myFunction, 'My.event'); // Attacher un écouteur Cake (CakeEventListener) - $listener = new MyEventLister(); + $listener = new MyEventListener(); $this->getEventManager()->attach($listener); - + // Détacher une simple clé d'événement depuis un écouteur (listener) $this->getEventManager()->detach($listener, 'My.event'); @@ -474,7 +506,7 @@ Lecture Supplémentaire .. toctree:: :maxdepth: 1 - + /core-libraries/collections /models/behaviors /controllers/components diff --git a/fr/core-libraries/global-constants-and-functions.rst b/fr/core-libraries/global-constants-and-functions.rst index fc11362939..e9c4741970 100644 --- a/fr/core-libraries/global-constants-and-functions.rst +++ b/fr/core-libraries/global-constants-and-functions.rst @@ -58,7 +58,7 @@ CakePHP, comme le débogage et la traduction de contenu. message. Utile pour internationaliser un plugin: - ``echo __d('PluginName', 'This is my plugin');`` + ``echo __d('plugin_name', 'This is my plugin');`` .. php:function:: __dc(string $domain, string $msg, integer $category, mixed $args = null) @@ -137,6 +137,10 @@ CakePHP, comme le débogage et la traduction de contenu. la ligne depuis laquelle il a été appelé. Voir aussi :doc:`/development/debugging` +.. php:function:: stackTrace(array $options = array()) + + Imprine la stack trace si le niveau de DEBUG de l'application est supérieur à 0. + .. php:function:: env(string $key) Récupère une variable d'environnement depuis les sources disponibles. diff --git a/fr/core-libraries/helpers/cache.rst b/fr/core-libraries/helpers/cache.rst index 6c164f9a25..cef83f039e 100644 --- a/fr/core-libraries/helpers/cache.rst +++ b/fr/core-libraries/helpers/cache.rst @@ -26,7 +26,7 @@ Utilisation du Helper Il y a deux étapes à franchir avant de pouvoir utiliser le Helper Cache. Premièrement dans votre ``APP/Config/core.php`` dé-commenter l'appel Configure -write pour ``Cache.check``. Ceci dira à CakePHP de regarder dans le cache , et +write pour ``Cache.check``. Ceci dira à CakePHP de regarder dans le cache, et de générer l'affichage des fichiers en cache lors du traitement des demandes. Une fois que vous avez décommenté la ligne ``Cache.check`` vous devez @@ -44,7 +44,7 @@ votre bootstrap:: )); .. versionadded:: 2.3 - Si vous avez une configuration avec des domaines ou des languages multiples, + Si vous avez une configuration avec des domaines ou des langages multiples, vous pouvez utiliser `Configure::write('Cache.viewPrefix', 'YOURPREFIX');` pour stocker les fichiers de vue préfixés mis en cache. @@ -89,7 +89,7 @@ En paramétrant ``callbacks => true`` vous dites au CacheHelper (Assistant Cache) que vous voulez que les fichiers générés créent les components et les models pour le controller. De manière additionnelle, lance la méthode initialize du component, le beforeFilter -du controller , et le démarrage des callbacks de component. +du controller, et le démarrage des callbacks de component. .. note:: @@ -119,8 +119,8 @@ entourez-les par `` comme ci-dessous : .. note:: - Vous ne pouvez pas utilisez les tags ``nocache`` dans les éléments. - puisqu'il n'y a pas de callbacks autour des éléments, ils ne peuvent + Vous ne pouvez pas utiliser les tags ``nocache`` dans les éléments. + Puisqu'il n'y a pas de callbacks autour des éléments, ils ne peuvent être cachés. Il est à noter, qu'une fois une action mise en cache, la méthode du controller @@ -161,4 +161,4 @@ utilisez ``clearCache()``. .. meta:: :title lang=fr: CacheHelper :description lang=fr: Le helper Cache aide à la mise en cache de layouts et de vues entiers, faisant gagner du temps lors de récupération de données répétitives. - :keywords lang=en: cache helper,view caching,cache action,cakephp cache,nocache,clear cache + :keywords lang=fr: cache helper,view caching,cache action,cakephp cache,nocache,clear cache diff --git a/fr/core-libraries/helpers/form.rst b/fr/core-libraries/helpers/form.rst index 16641299ed..2044b71a4c 100644 --- a/fr/core-libraries/helpers/form.rst +++ b/fr/core-libraries/helpers/form.rst @@ -48,7 +48,7 @@ pleinement avantage du Helper Form (Helper Formulaire) est Tous les champs seront supposés dépendre de ce model (sauf si spécifié), et tous les models devront être liés à lui. Si vous ne spécifiez pas de model, CakePHP supposera que vous - utilisez le model par défaut pour le controller courant.:: + utilisez le model par défaut pour le controller courant. :: // si vous êtes sur /recipes/add echo $this->Form->create('Recipe'); @@ -65,7 +65,7 @@ pleinement avantage du Helper Form (Helper Formulaire) est Le helper Form utilise la propriété ``$this->request->data`` pour détecter automatiquement s'il faut créer un formulaire d'ajout ou de modification. Si ``$this->request->data`` contient un tableau nommé - après le model du formulaire , et que ce tableau contient une valeur + d'après le model du formulaire , et que ce tableau contient une valeur non nulle pour la clé primaire du model, alors le FormHelper créera un formulaire de modification pour cet enregistrement précis. Par exemple, si on va à l'adresse @@ -125,7 +125,7 @@ Il y plusieurs options pour create(): sont 'post', 'get', 'file', 'put' et 'delete'. Choisir 'post' ou 'get' changera la méthode de soumission du formulaire - en fonction de votre choix.:: + en fonction de votre choix. :: echo $this->Form->create('User', array('type' => 'get')); @@ -139,7 +139,7 @@ Il y plusieurs options pour create(): ajoutera un enctype "multipart/form-data" dans le tag du formulaire. Vous devez l'utiliser si vous avez des demandes de fichiers dans votre formulaire. L'absence de cet attribut enctype empêchera le - fonctionnement de l'envoi de fichiers.:: + fonctionnement de l'envoi de fichiers. :: echo $this->Form->create('User', array('type' => 'file')); @@ -252,7 +252,7 @@ Fermer le Formulaire Si une chaîne est fournie comme premier argument à end(), le FormHelper affichera un bouton submit nommé en conséquence en même temps - que la balise de fermeture du formulaire.:: + que la balise de fermeture du formulaire. :: echo $this->Form->end('Termine'); @@ -367,7 +367,7 @@ ce champ. En interne ``input()`` délègue aux autre méthode du FormHelper. Par exemple, supposons que votre model User contient les champs username (varchar), password (varchar), approved (datetime) et quote (text). Vous pouvez utiliser la méthode input() de l'Helper Formulaire (Formhelper) - pour créer une entrée appropriée pour tous les champs du formulaire.:: + pour créer une entrée appropriée pour tous les champs du formulaire. :: echo $this->Form->create(); @@ -444,7 +444,7 @@ ce champ. En interne ``input()`` délègue aux autre méthode du FormHelper. ``$form->inputs(array('legend' => 'Ma légende'));`` Générera un jeu de champs input avec une légende personnalisée. Vous pouvez personnaliser des champs input individuels a travers - ``$fields`` comme ceci.:: + ``$fields`` comme ceci. :: echo $form->inputs(array( 'name' => array('label' => 'label perso') @@ -683,7 +683,7 @@ comme les attributs html. Ce qui suit va couvrir les options spécifiques de et ``$options['after']`` Utilisez ces clés si vous avez besoin d'injecter quelques balises à la - sortie de la méthode input().:: + sortie de la méthode input(). :: echo $this->Form->input('field', array( 'before' => '--avant--', @@ -704,7 +704,7 @@ comme les attributs html. Ce qui suit va couvrir les options spécifiques de Pour les input de type radio l'attribut 'separator' peut être - utilisé pour injecter des balise pour séparer input/label.:: + utilisé pour injecter des balise pour séparer input/label. :: echo $this->Form->input('field', array( 'before' => '--avant--', @@ -741,7 +741,7 @@ comme les attributs html. Ce qui suit va couvrir les options spécifiques de * ``$options['inputDefaults']`` S'il vous semble répéter la même option dans de multiples appels input(), vous pouvez utiliser ``inputDefaults`` pour - garder un code propre.:: + garder un code propre. :: echo $this->Form->create('User', array( 'inputDefaults' => array( @@ -1018,7 +1018,7 @@ Ex: name=data[User][username], id=UserUsername méthodes utilisent également un paramètre spécial $options. Toutefois, dans ce cas, $options est utilisé avant tout pour spécifier les attributs des balises HTML - (comme la valeur ou l'id DOM d'un élément du formulaire).:: + (comme la valeur ou l'id DOM d'un élément du formulaire). :: echo $this->Form->text('username', array('class' => 'users')); @@ -1030,7 +1030,7 @@ Ex: name=data[User][username], id=UserUsername .. php:method:: password(string $fieldName, array $options) - Création d'un champ password.:: + Création d'un champ password. :: echo $this->Form->password('password'); @@ -1068,7 +1068,7 @@ Ex: name=data[User][username], id=UserUsername .. php:method:: textarea(string $fieldName, array $options) - Crée un champ input textarea (zone de texte).:: + Crée un champ input textarea (zone de texte). :: echo $this->Form->textarea('notes'); @@ -1122,7 +1122,7 @@ Ex: name=data[User][username], id=UserUsername Crée un élément de formulaire checkbox. Cette méthode génère également un input de formulaire caché pour forcer la soumission de données pour le champ - spécifié.:: + spécifié. :: echo $this->Form->checkbox('done'); @@ -1175,7 +1175,7 @@ Ex: name=data[User][username], id=UserUsername * ``$attributes['legend']`` Les éléments Radio sont enveloppés avec un legend et un fieldset par défaut. Définir ``$attributes['legend']`` à - false pour les retirer.:: + false pour les retirer. :: $options = array('H' => 'Homme', 'F' => 'Femme'); $attributes = array('legend' => false); @@ -1775,7 +1775,7 @@ le second paramètre de ``$this->Form->create()``. **FormHelper::hidden()** -Les champs cachés n'enlève plus les attributs de classe. Cela +Les champs cachés n'enlèvent plus les attributs de classe. Cela signifie que si il y a des erreurs de validation sur les champs cachés le nom de classe error-field sera appliqué. diff --git a/fr/core-libraries/helpers/html.rst b/fr/core-libraries/helpers/html.rst index 4218fe6e3a..df29120c49 100644 --- a/fr/core-libraries/helpers/html.rst +++ b/fr/core-libraries/helpers/html.rst @@ -88,7 +88,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. la feuille de style sera importée. Cette méthode d'inclusion CSS présume que le CSS spécifié se trouve dans - le répertoire /app/webroot/css si un chemin ne commence par un '/'.:: + le répertoire /app/webroot/css si un chemin ne commence par un '/'. :: echo $this->Html->css('forms'); @@ -99,7 +99,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Le premier paramètre peut être un tableau pour inclure des fichiers - multiples.:: + multiples. :: echo $this->Html->css(array('forms', 'tables', 'menu')); @@ -272,7 +272,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Construit les définitions de style CSS en se basant sur les clés et valeurs du tableau passé à la méthode. Particulièrement pratique si votre - fichier CSS est dynamique.:: + fichier CSS est dynamique. :: echo $this->Html->style(array( 'background' => '#633', @@ -290,7 +290,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. :param array $options: Un tableau de :term:`attributs html`. Créé une balise image formatée. Le chemin fournit devra être relatif à - /app/webroot/img/.:: + /app/webroot/img/. :: echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP')); @@ -301,7 +301,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. CakePHP Pour créer un lien d'image, spécifiez le lien de destination en - utilisant l'option ``url`` dans ``$htmlAttributes``.:: + utilisant l'option ``url`` dans ``$htmlAttributes``. :: echo $this->Html->image("recipes/6.jpg", array( "alt" => "Brownies", @@ -353,7 +353,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Méthode générale pour la création de liens HTML. Utilisez les ``$options`` pour spécifier les attributs des éléments et si le ``$title`` devra ou - non être échappé.:: + non être échappé. :: echo $this->Html->link( 'Enter', @@ -401,7 +401,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Delete - Les chaînes de requête peuvent aussi être créées avec ``link()``.:: + Les chaînes de requête peuvent aussi être créées avec ``link()``. :: echo $this->Html->link('View image', array( 'controller' => 'images', @@ -420,7 +420,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. tableau et incluez les noms pour TOUS les paramètres dans l'URL. En utilisant la syntaxe en chaîne pour les paramètres (par ex "recipes/view/6/comments:false" va résulter à ce que les caractères - seront echappés du HTML et le lien ne fonctionnera pas comme souhaité.:: + seront echappés du HTML et le lien ne fonctionnera pas comme souhaité. :: Html->link( @@ -462,7 +462,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Définir ``escape`` à false va aussi désactiver l'échappement des attributs du lien. Puisque depuis 2.4, vous pouvez utiliser l'option ``escapeTitle`` - pour juste désactiver l'échappement du titre et pas des attributs.:: + pour juste désactiver l'échappement du titre et pas des attributs. :: Html->link( @@ -639,7 +639,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. les attributs seront appliqués à toutes les balises script générées. Cette méthode d'inclusion de fichier JavaScript suppose que les fichiers - JavaScript spécifiés se trouvent dans le répertoire ``/app/webroot/js``.:: + JavaScript spécifiés se trouvent dans le répertoire ``/app/webroot/js``. :: echo $this->Html->script('scripts'); @@ -665,7 +665,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Le premier paramètre peut être un tableau pour inclure des - fichiers multiples.:: + fichiers multiples. :: echo $this->Html->script(array('jquery', 'wysiwyg', 'scripts')); @@ -678,7 +678,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. Vous pouvez insérer dans la balise script un bloc spécifique en - utilisant l'option ``block``.:: + utilisant l'option ``block``. :: echo $this->Html->script('wysiwyg', array('block' => 'scriptBottom')); @@ -794,7 +794,7 @@ couvrira les méthodes du Helper Html et comment les utiliser. :param array $thOptions: Un tableau d' :term:`attributs HTML` pour l'élément

. - Créé une ligne de cellule d'en-tête à placer dans la balise .:: + Créé une ligne de cellule d'en-tête à placer dans la balise
. :: echo $this->Html->tableHeaders(array('Date', 'Title', 'Active')); @@ -1028,7 +1028,7 @@ Changer la restitution des balises avec le Helper Html Création d'un chemin de navigation avec le Helper Html ====================================================== -.. php:method:: getCrumbs(string $separator = '»', string $startText = false) +.. php:method:: getCrumbs(string $separator = '»', string|array|bool $startText = false) CakePHP inclut la possibilité de créer automatiquement un chemin de navigation (fil d'Ariane) dans votre application. Pour mettre cela en @@ -1054,7 +1054,7 @@ Création d'un chemin de navigation avec le Helper Html .. php:method:: addCrumb(string $name, string $link = null, mixed $options = null) Maintenant, dans votre vue vous allez devoir ajouter ce qui suit - pour démarrer le fil d'Ariane sur chacune de vos pages.:: + pour démarrer le fil d'Ariane sur chacune de vos pages. :: $this->Html->addCrumb('Users', '/users'); $this->Html->addCrumb('Add User', array('controller' => 'users', 'action' => 'add')); diff --git a/fr/core-libraries/helpers/js.rst b/fr/core-libraries/helpers/js.rst index 47ba3fe606..4ad2eb0a7d 100644 --- a/fr/core-libraries/helpers/js.rst +++ b/fr/core-libraries/helpers/js.rst @@ -152,7 +152,7 @@ des ``$options``. 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 .:: +d'écrire moins, et de rendre votre code plus expressif . :: $this->Js->get('#foo')->event('click', $eventCode); @@ -292,7 +292,7 @@ méthode. **Options** - ``containment`` - Conteneur de l'action de déplacement. - - ``handle`` - Selecteur de l'élement. Seul cet élément + - ``handle`` - Selecteur de l'élément. Seul cet élément commencera l'action de tri. - ``revert`` - S'il faut ou pas utiliser un effet pour déplacer l'élément triable dans sa position finale. @@ -377,7 +377,7 @@ méthode. Définit la 'sélection' interne dans un sélecteur CSS. La sélection active est utilisée dans les opérations ultérieures jusqu'à ce qu'une - nouvelle soit faite.:: + nouvelle soit faite. :: $this->Js->get('#element'); @@ -399,7 +399,7 @@ méthode. **Options** - - ``handle`` - selecteur de l'élement. + - ``handle`` - selecteur de l'élément. - ``snapGrid`` - La grille de pixel qui déclenche les mouvements, un tableau(x, y) - ``container`` - L'élément qui agit comme un rectangle de selection pour @@ -643,14 +643,14 @@ méthode. Créé un extrait de code JavaScript contenant un ``alert()``. Par défaut, ``alert`` ne bufferise pas, et retourne le morceau de script - suivant.:: + suivant. :: $alert = $this->Js->alert('Zogotunga!'); .. php:method:: confirm($message) Créé un bout de code contenant ``confirm()``. Par défaut, ``confirm`` - ne bufferise pas, et retourne le morceau de script suivant.:: + ne bufferise pas, et retourne le morceau de script suivant. :: $alert = $this->Js->confirm('Vraiment certain?'); @@ -658,7 +658,7 @@ méthode. Créé un bout de code Javascript contenant ``prompt()``. Par défaut, ``prompt`` ne bufferise pas, et retourne le morceau de code - suivant.:: + suivant. :: $prompt = $this->Js->prompt('C'est quoi ta couleur préférée?', 'bleu'); @@ -689,7 +689,7 @@ méthode. echo $this->Js->submit('Save', array('update' => '#content')); Va créé un bouton submit et un événement onclick attaché. - L'événement click sera bufferisé par défaut.:: + L'événement click sera bufferisé par défaut. :: echo $this->Js->submit('Save', array( 'update' => '#content', @@ -737,7 +737,7 @@ méthode. avec la réponse. Vous pouvez utiliser les options de ``htmlAttributes`` pour ajouter des - attributs personnalisés.:: + attributs personnalisés. :: echo $this->Js->link('Page 2', array('page' => 2), array( 'update' => '#content', diff --git a/fr/core-libraries/helpers/paginator.rst b/fr/core-libraries/helpers/paginator.rst index f564633f6f..f4f74d8c54 100644 --- a/fr/core-libraries/helpers/paginator.rst +++ b/fr/core-libraries/helpers/paginator.rst @@ -151,7 +151,7 @@ Les options supportées sont: 'a' ou 'span' supplémentaires. Bien que cette méthode permette beaucoup de customisation pour ses sorties. -Elle est aussi prête pour être appelée sans aucun paramètres.:: +Elle est aussi prête pour être appelée sans aucun paramètres. :: echo $this->Paginator->numbers(); @@ -573,7 +573,7 @@ D'autres Méthodes :param string $model: Le model sur lequel paginer. Par défaut retourne une chaîne URL complètement paginée à utiliser - dans des contextes non-standard (ex. JavaScript).:: + dans des contextes non-standard (ex. JavaScript). :: echo $this->Paginator->url(http://github.com/array('sort'%20=%3E%20'titre'), true); @@ -623,6 +623,25 @@ D'autres Méthodes .. versionadded:: 2.4 La méthode ``param()`` a été ajoutée dans 2.4. +.. php:method:: meta(array $options = array()) + + Génère le meta-links pour un résultat paginé:: + + echo $this->Paginator->meta(); // Example output for page 5 + /* + + */ + + Vous pouvez également ajouter la génération de la fcontion meta à un block + nommé:: + + $this->Paginator->meta(array('block' => true)); + + Si true est envoyé, le block "meta" est utilisé. + +.. versionadded:: 2.6 + La méthode ``meta()`` a été ajoutée dans 2.6. + .. meta:: :title lang=fr: PaginatorHelper :description lang=fr: PaginationHelper est utilisé pour le contrôle des sorties paginées comme le nombre de page et les liens précédents/suivants. diff --git a/fr/core-libraries/helpers/rss.rst b/fr/core-libraries/helpers/rss.rst index 92d55dc80a..6f3e1d7c74 100644 --- a/fr/core-libraries/helpers/rss.rst +++ b/fr/core-libraries/helpers/rss.rst @@ -106,7 +106,7 @@ l'endroit où notre tableau ``$channelData`` va venir définir toutes les données meta pour notre flux. Ensuite il y a le fichier de vue pour mes posts/index. Un peu comme le fichier -de layout que nous avons crée, nous avons besoin de créer un répertoire +de layout que nous avons créé, nous avons besoin de créer un répertoire ``View/Posts/rss/`` et un nouveau ``index.ctp`` à l'intérieur de ce répertoire. Les contenus du fichier sont ci-dessous. @@ -126,7 +126,7 @@ layout:: 'description' => __("Most recent posts."), 'language' => 'en-us')); -La seconde partie de la vue génére les éléments pour les enregistrements +La seconde partie de la vue génère les éléments pour les enregistrements actuels du flux. Ceci est accompli en bouclant sur les données qui ont été passées à la vue ($items) et en utilisant la méthode :php:meth:`RssHelper::item()`. L'autre méthode que vous pouvez utiliser @@ -254,7 +254,7 @@ API de Rss Helper :rtype: string - Génére un élément XML. + Génère un élément XML. .. php:method:: item(array $att = array (), array $elements = array ()) diff --git a/fr/core-libraries/helpers/text.rst b/fr/core-libraries/helpers/text.rst index a6877ff14d..a12e5fb80b 100644 --- a/fr/core-libraries/helpers/text.rst +++ b/fr/core-libraries/helpers/text.rst @@ -24,7 +24,7 @@ longues étendues de texte. Ajoute les liens aux adresses email bien formées dans $text, selon toute les options définies dans ``$htmlOptions`` (regardez - :php:meth:`HtmlHelper::link()`).:: + :php:meth:`HtmlHelper::link()`). :: $myText = 'Pour plus d'informations sur nos pâtes et desserts fameux, contactez info@example.com'; @@ -72,7 +72,7 @@ longues étendues de texte. :param string $text: Le texte à convertir. Ajoute

autour du texte où la double ligne retourne et
où une - simple ligne retourne, sont trouvés.:: + simple ligne retourne, sont trouvés. :: $myText = 'For more information regarding our world-famous pastries and desserts. diff --git a/fr/core-libraries/internationalization-and-localization.rst b/fr/core-libraries/internationalization-and-localization.rst index e90e98a985..f8f0047b5c 100644 --- a/fr/core-libraries/internationalization-and-localization.rst +++ b/fr/core-libraries/internationalization-and-localization.rst @@ -59,9 +59,9 @@ traductions. CakePHP cherchera vos fichiers po dans les dossiers suivants :: Le domaine par défaut est 'default', donc votre dossier "locale" devrait ressembler à cela:: - /app/Locale/eng/LC_MESSAGES/default.po (Anglais) - /app/Locale/fra/LC_MESSAGES/default.po (Français) - /app/Locale/por/LC_MESSAGES/default.po (Portugais) + /app/Locale/eng/LC_MESSAGES/default.po (Anglais) + /app/Locale/fra/LC_MESSAGES/default.po (Français) + /app/Locale/por/LC_MESSAGES/default.po (Portugais) Pour créer ou éditer vos fichiers po, il est recommandé de ne pas utiliser votre éditeur de texte préféré. Pour créer un fichier po pour la première fois, @@ -141,27 +141,40 @@ Votre fichier de traduction pour cet exemple devra être dans :: Et pour les autres langues par rapport à celle par défaut:: - /app/Plugin/DebugKit/Locale/eng/LC_MESSAGES/debug_kit.po (English) - /app/Plugin/DebugKit/Locale/fra/LC_MESSAGES/debug_kit.po (French) - /app/Plugin/DebugKit/Locale/por/LC_MESSAGES/debug_kit.po (Portuguese) + /app/Plugin/DebugKit/Locale/eng/LC_MESSAGES/debug_kit.po (English) + /app/Plugin/DebugKit/Locale/fra/LC_MESSAGES/debug_kit.po (French) + /app/Plugin/DebugKit/Locale/por/LC_MESSAGES/debug_kit.po (Portuguese) La raison pour cela est que CakePHP va utiliser le nom du plugin en minuscule et avec des underscores, pour le comparer avec le domaine de traduction et va regarder dans le plugin si il y a une correspondance pour le fichier de traduction donné. +Controller l'Ordre de Traduction +================================ + +La valeur de configuration ``I18n.preferApp`` peut maintenant être utilisée +pour controller l'ordre des traductions. Si défini à true, les traductions +de l'application seront préférées à celles des plugins:: + + Configure::write('I18n.preferApp', true); + +Défini à ``false`` par défaut. + +.. versionadded:: 2.6 + Localisation dans CakePHP ========================= Pour changer ou définir le langage de votre application, tout ce que vous avez à faire est dans la partie suivante:: - Configure::write('Config.language', 'fra'); + Configure::write('Config.language', 'fra'); Ceci signale à CakePHP quelle locale utiliser (si vous utilisez une locale régionale, comme fr\_FR, la locale `ISO 639-2 `_) sera -utilisée au cas ou cela n'existerait pas), vous pouvez changer la langue +utilisée au cas où cela n'existerait pas), vous pouvez changer la langue à n'importe quel moment pendant une requête. Ex: dans votre bootstrap si vous avez défini les paramètres de langue par défaut, dans la partie beforefilter de votre (app) controller si c'est spécifique à la requête ou diff --git a/fr/core-libraries/logging.rst b/fr/core-libraries/logging.rst index 97d6d16708..2d7b2e58a8 100755 --- a/fr/core-libraries/logging.rst +++ b/fr/core-libraries/logging.rst @@ -50,7 +50,7 @@ pourrait ressembler à ceci:: Lorsque vous configurez le flux d'un log le paramètre de ``engine`` est utilisé pour localiser et charger le handler de log. Toutes les autres propriétés de configuration sont passées au constructeur des flux de log comme -un tableau.:: +un tableau. :: App::uses('BaseLog', 'Log/Engine'); @@ -174,7 +174,7 @@ l'utilisateur pour que la journalisation fonctionne correctement. Vous pouvez configurer/alterner la localisation de FileLog en utilisant :php:meth:`CakeLog::config()`. FileLog accepte un ``chemin`` qui permet aux -chemins personnalisés d'être utilisés.:: +chemins personnalisés d'être utilisés. :: CakeLog::config('chemin_perso', array( 'engine' => 'FileLog', @@ -428,4 +428,4 @@ niveau de log approprié. .. meta:: :title lang=fr: Journalisation (Logging) :description lang=fr: Journal Log de CakePHP de données du disque pour vous aider à debugger votre application sur des longues périodes de temps. - :keywords lang=en: cakephp logging,log errors,debug,logging data,cakelog class,ajax logging,soap logging,debugging,logs + :keywords lang=fr: cakephp logging,log errors,debug,logging data,cakelog class,ajax logging,soap logging,debugging,logs diff --git a/fr/core-utility-libraries/app.rst b/fr/core-utility-libraries/app.rst index 8513bede4d..e0e87ff1c2 100644 --- a/fr/core-utility-libraries/app.rst +++ b/fr/core-utility-libraries/app.rst @@ -15,7 +15,7 @@ un package ou dossier où d'autres classes se trouvent. Vous pouvez configurer chaque localisation de package dans votre application en utilisant ``App::build('APackage/SubPackage', $paths)`` pour informer le framework où chaque classe doit être chargée. Presque toute classe dans le framework -CakePHP peut être échangée avec une des votres compatible. Si vous souhaitez +CakePHP peut être échangée avec une des vôtres compatible. Si vous souhaitez utiliser votre propre classe à la place des classes que le framework fournit, ajoutez seulement la classe à vos dossiers libs émulant la localisation du répertoire à partir duquel CakePHP s'attend à le trouver. @@ -216,7 +216,7 @@ Trouver les objets que CakePHP connaît App::objects('Controller'); Vous pouvez aussi chercher seulement dans les objets de plugin en utilisant - la syntaxe de plugin avec les points.:: + la syntaxe de plugin avec les points:: // retourne array('MyPluginPost', 'MyPluginComment'); App::objects('MyPlugin.Model'); @@ -261,7 +261,7 @@ Inclure les fichiers avec App::import() :rtype: boolean - Au premier coup d'oeil, ``App::import`` a l'air compliqué, cependant pour + Au premier coup d'œil, ``App::import`` a l'air compliqué, cependant pour la plupart des utilisations, seuls 2 arguments sont nécessaires. .. note:: @@ -339,12 +339,12 @@ Pour charger les classes se trouvant dans des sous-répertoires, vous devrez ajouter ces chemins avec ``App::build()``:: // Charge la classe ClassInSomePackage dans app/Vendor/SomePackage/ClassInSomePackage.php - App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'SomePackage'))); + App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'SomePackage' . DS))); App::uses('ClassInSomePackage', 'Vendor'); Vos fichiers vendor ne suivent peut-être pas les conventions, ont une classe qui diffère du nom de fichier ou ne contiennent pas de classes. Vous pouvez -charger ces fichiers en utilisant ``App::import()``. Les exemples siuvants +charger ces fichiers en utilisant ``App::import()``. Les exemples suivants montrent comment charger les fichiers de vendor à partir d'un certain nombre de structures de chemin. Ces fichiers vendor pourraient être localisés dans n'importe quel dossier vendor. diff --git a/fr/core-utility-libraries/email.rst b/fr/core-utility-libraries/email.rst index 7956e9f0c4..82f64e2336 100644 --- a/fr/core-utility-libraries/email.rst +++ b/fr/core-utility-libraries/email.rst @@ -403,7 +403,7 @@ Exemple:: CakeEmail::deliver('you@example.com', 'Subject', 'Message', array('from' => 'me@example.com')); -Cette méthode va envoyer un email à you@example.com, à partir de me@example.com +Cette méthode va envoyer un email à you@example.com, à partir de me@example.com avec le sujet Subject et le contenu Message. Le retour de ``deliver()`` est une instance de :php:class:`CakeEmail` avec @@ -427,6 +427,7 @@ Envoyer des emails depuis CLI ============================= .. versionchanged:: 2.2 + La méthode ``domain()`` a été ajoutée dans 2.2 Quand vous envoyez des emails à travers un script CLI (Shells, Tasks, ...), @@ -439,7 +440,9 @@ de nom d'hôte dans un environnement CLI):: // au lieu de ``` (invalid) Un id de message valide peut permettre à ce message de ne pas finir dans un -dossier de spam. +dossier de spam. Si vous générez des liens dans les corps de vos emails, vous +pouvez aussi avoir besoin de définir la valeur de configuration +``App.fullBaseUrl``. .. meta:: :title lang=fr: CakeEmail diff --git a/fr/core-utility-libraries/hash.rst b/fr/core-utility-libraries/hash.rst index 88fe21a146..fa607f7905 100644 --- a/fr/core-utility-libraries/hash.rst +++ b/fr/core-utility-libraries/hash.rst @@ -10,7 +10,7 @@ puissant et utile pour construire du code plus intelligent et plus optimisé. CakePHP offre un ensemble d'utilitaires statiques très utile dans la classe Hash qui vous permet de faire justement cela. -La classe Hash de CakePHP peut être appelée à partir de n'inporte quel +La classe Hash de CakePHP peut être appelée à partir de n'importe quel model ou controller de la même façon que pour un appel à Inflector Exemple: :php:meth:`Hash::combine()`. @@ -25,7 +25,7 @@ disponibles dans toutes les méthodes. Une expression en chemin est faite depuis n'importe quel nombre de tokens. Les Tokens sont composés de deux groupes. Les Expressions sont utilisées pour parcourir le tableau de données, alors que les matchers sont utilisés pour qualifier les éléments. Vous -appliquez les matchers aux élements de l'expression. +appliquez les matchers aux éléments de l'expression. Types d'expression ------------------ @@ -67,12 +67,12 @@ Les Types d'Attribut Correspondants | | à 2. | +--------------------------------+--------------------------------------------+ | ``[id>=2]`` | Match les éléments avec un id supérieur | -| | égal à 2. | +| | ou égal à 2. | +--------------------------------+--------------------------------------------+ | ``[id<2]`` | Match les éléments avec un id inférieur | | | à 2. | +--------------------------------+--------------------------------------------+ -| ``[id<=2]`` | Match les éléménts avec un id inférieur | +| ``[id<=2]`` | Match les éléments avec un id inférieur | | | ou égal à 2. | +--------------------------------+--------------------------------------------+ | ``[text=/.../]`` | Match les éléments qui ont des valeurs | @@ -83,22 +83,26 @@ Les Types d'Attribut Correspondants .. versionchanged:: 2.5 Le support des matcher a été ajouté dans ``insert()`` et ``remove()``. -.. php:staticmethod:: get(array $data, $path) +.. php:staticmethod:: get(array $data, $path, $default = null) :rtype: mixed ``get()`` est une version simplifiée de ``extract()``, elle ne supporte que les expressions de chemin direct. Les chemins avec ``{n}``, ``{s}`` ou les matchers ne sont pas supportés. Utilisez ``get()`` quand vous - voulez exactement une valeur sortie d'un tableau. + voulez exactement une valeur sortie d'un tableau. Le troisième paramètre + sera retourné si le chemin demandé n'a pas été trouvé dans le tableau. + + .. versionchanged:: 2.5 + Le troisième argument ``$default = null`` optionel a été ajouté. .. php:staticmethod:: extract(array $data, $path) :rtype: array ``Hash::extract()`` supporte toutes les expressions, les components - matcher de la :ref:`hash-path-syntax`. Vous pouvez utilisez l'extract pour - récupèrer les données à partir des tableaux, le long des chemins + matcher de la :ref:`hash-path-syntax`. Vous pouvez utiliser l'extract pour + récupérer les données à partir des tableaux, le long des chemins arbitraires rapidement sans avoir à parcourir les structures de données. A la place, vous utilisez les expressions de chemin pour qualifier les éléments que vous souhaitez retourner :: @@ -146,7 +150,7 @@ Les Types d'Attribut Correspondants :rtype: array - Retire tous les éléments d'un tableau qui matche avec $path.:: + Retire tous les éléments d'un tableau qui matche avec $path. :: $a = array( 'pages' => array('name' => 'page'), @@ -168,7 +172,7 @@ Les Types d'Attribut Correspondants multiples en une fois. .. versionchanged:: 2.5 - Depuis 2.5.0, les expressions matchant l'attribut fonctionnenent avec + Depuis 2.5.0, les expressions matchant l'attribut fonctionnent avec remove() .. php:staticmethod:: combine(array $data, $keyPath = null, $valuePath = null, $groupPath = null) @@ -176,11 +180,11 @@ Les Types d'Attribut Correspondants :rtype: array Crée un tableau associatif en utilisant $keyPath en clé pour le chemin - à construire, et optionnellement $valuePath comme chemin pour récupèrer + à construire, et optionnellement $valuePath comme chemin pour récupérer les valeurs. Si $valuePath n'est pas spécifiée, ou ne matche rien, les valeurs seront initialisées à null. Vous pouvez grouper en option les valeurs par ce qui est obtenu en suivant le chemin spécifié dans - $groupPath.:: + $groupPath. :: $a = array( array( @@ -279,7 +283,7 @@ Les Types d'Attribut Correspondants */ Vous pouvez fournir des tableaux pour les deux $keyPath et $valuePath. Si - vous le faîtes, la première valeur sera utlisée comme un format de chaîne + vous le faîte, la première valeur sera utilisée comme un format de chaîne de caractères, pour les valeurs extraites par les autres chemins:: $result = Hash::combine( @@ -658,7 +662,7 @@ Les Types d'Attribut Correspondants .. php:staticmethod:: apply(array $data, $path, $function) - Appliquer un callback à un ensemble de valuers extraites en utilisant + Appliquer un callback à un ensemble de valeurs extraites en utilisant $function. La fonction va récupérer les valeurs extraites en premier argument. @@ -667,7 +671,7 @@ Les Types d'Attribut Correspondants :rtype: array Trie un tableau selon n'importe quelle valeur, déterminé par une - :ref:`hash-path-syntax`. Seuls les élements de type expression sont + :ref:`hash-path-syntax`. Seuls les éléments de type expression sont supportés par cette méthode:: $a = array( diff --git a/fr/core-utility-libraries/httpsocket.rst b/fr/core-utility-libraries/httpsocket.rst index da1f82411c..9c4f897efa 100755 --- a/fr/core-utility-libraries/httpsocket.rst +++ b/fr/core-utility-libraries/httpsocket.rst @@ -121,7 +121,7 @@ Gérer la réponse Les réponses des requêtes faîtes avec ``HttpSocket`` sont des instances de ``HttpResponse``. L'objet vous donne quelques méthodes accessor pour accéder -au contenu de la réponse HTTP. Cette classe intégre le +au contenu de la réponse HTTP. Cette classe intègre le `ArrayAccess `_ et `__toString() `_, donc vous pouvez continuer en utilisant ``$http->response`` en tableau et le @@ -156,7 +156,7 @@ retour des méthodes de requête en chaîne:: * ``isOk()`` retourne si le code est 200; * ``isRedirect()`` retourne si le code est 301, 302, 303 or 307 et la *localisation* du header est définie. -* ``getHeader()`` vous permet de récupèrer les headers, voir la prochaine +* ``getHeader()`` vous permet de récupérer les headers, voir la prochaine section. Obtenir des headers à partir d'une réponse @@ -222,7 +222,7 @@ Gérer les certificats SSL ------------------------- Quand vous faites des requêtes vers des services en SSL, HttpSocket va -s'attendre à valider le certicat SSL en utilisant la validation peer. Si le +s'attendre à valider le certificat SSL en utilisant la validation peer. Si le certificat échoue la validation peer ou ne correspond pas au nom d'hôte qu'on souhaite accéder, la connexion va échouer, et une exception va être lancée. Par défaut HttpSocket va utiliser le fichier d'autorité du certificat @@ -233,7 +233,7 @@ suivantes pour configurer la façon dont les certificats sont gérés: Ce n'est **pas recommandé**. - ``ssl_verify_host`` Défini à false si vous souhaitez ignorer les erreurs de correspondance du nom d'hôte. -- ``ssl_allow_self_signed`` Défini à true pour activer les certicats que l'on +- ``ssl_allow_self_signed`` Défini à true pour activer les certificats que l'on accepte soi-même. Cela nécessite que ``ssl_verify_peer`` soit activé. - ``ssl_cafile`` Défini au chemin absolu du fichier de l'Autorité de Certification que vous souhaitez utiliser pour vérifier les certificats SSL. @@ -245,7 +245,7 @@ Ces options sont fournies dans les arguments du constructeur:: )); Autoriserait les certificats signés soi-même pour toutes les requêtes faîtes -avec le socket crée. +avec le socket créé. .. versionadded:: 2.3 La validation de certificats SSL a été ajoutée dans 2.3. @@ -305,7 +305,7 @@ Utiliser l'authentification =========================== HttpSocket supporte des méthodes d'authentification HTTP Basic et Digest. Vous -pouvez maintenant créer des objets d'authenrification personnalisée pour +pouvez maintenant créer des objets d'authentification personnalisés pour supporter des protocoles comme OAuth. Pour utiliser un système d'authentification, vous devez configurer l'instance ``HttpSocket``:: @@ -340,7 +340,7 @@ utiliser avec HttpSocket. Vous pouvez créer le fichier } -Pour configurer HttpSocket afin d'utiliser votre configuraiton auth, vous +Pour configurer HttpSocket afin d'utiliser votre configuration auth, vous pouvez utiliser la nouvelle méthode ``configAuth()``:: $http->configAuth('YourMethod', array('config1' => 'value1', 'config2' => 'value2')); diff --git a/fr/core-utility-libraries/number.rst b/fr/core-utility-libraries/number.rst index 8f1386c4d4..ca19dc293e 100644 --- a/fr/core-utility-libraries/number.rst +++ b/fr/core-utility-libraries/number.rst @@ -70,7 +70,7 @@ automatiqement la sortie dans la vue. +---------------------+----------------------------------------------------+ | after | Le symbole de la monnaie à placer après les nombres| | | décimaux | - | | ex: 'c'. Définit le boléeen à false pour utiliser | + | | ex: 'c'. Définit le booléen à false pour utiliser | | | aucun symbole décimal | | | ex: 0.35 => $0.35. | +---------------------+----------------------------------------------------+ @@ -124,7 +124,7 @@ automatiqement la sortie dans la vue. :param string $currency: Défini une monnaie connu pour :php:meth:`CakeNumber::currency()`. - Setter/getter pour la monnaie par défaut. Ceci retire la necessité de + Setter/getter pour la monnaie par défaut. Ceci retire la nécessité de toujours passer la monnaie à :php:meth:`CakeNumber::currency()` et change toutes les sorties de monnaie en définissant les autres par défaut. @@ -143,7 +143,7 @@ automatiqement la sortie dans la vue. ex: 0, 'Free!' - `places` Nombre de décimal à utiliser. ex. 2. - `thousands` Séparateur des milliers. ex: ','. - - `decimals` Symbole de Séparateur des Decimales. ex: '.'. + - `decimals` Symbole de Séparateur des décimales. ex: '.'. - `negative` Symbole pour les nombres négatifs. Si égal à '()', le nombre sera entouré avec ( et ). - `escape` La sortie doit-elle être échappée de htmlentity? Par défaut @@ -158,7 +158,7 @@ automatiqement la sortie dans la vue. de fraction. Ajoute le format de monnaie au helper Number. Facilite la réutilisation - des formats de monnaie.:: + des formats de monnaie. :: // appelé par NumberHelper $this->Number->addFormat('BRL', array('before' => 'R$', 'thousands' => '.', 'decimals' => ',')); @@ -168,7 +168,7 @@ automatiqement la sortie dans la vue. CakeNumber::addFormat('BRL', array('before' => 'R$', 'thousands' => '.', 'decimals' => ',')); Vous pouvez maintenant utiliser `BRL` de manière courte quand vous - formattez les montants de monnaie:: + formatez les montants de monnaie:: // appelé par NumberHelper echo $this->Number->currency($value, 'BRL'); @@ -200,7 +200,7 @@ automatiqement la sortie dans la vue. Cette méthode affiche un nombre avec le montant de précision spécifié (place de la décimal). Elle arrondira afin de maintenir le niveau de - précision défini.:: + précision défini. :: // appelé avec NumberHelper echo $this->Number->precision(456.91873645, 2 ); @@ -216,7 +216,7 @@ automatiqement la sortie dans la vue. .. php:method:: toPercentage(mixed $number, int $precision = 2, array $options = array()) :param float $number: La valeur à convertir. - :param integer $precision: Le nomnbre de décimal à afficher. + :param integer $precision: Le nombre de décimal à afficher. :param array $options: Options, voir ci-dessous. +---------------------+----------------------------------------------------+ @@ -230,7 +230,7 @@ automatiqement la sortie dans la vue. Comme precision(), cette méthode formate un nombre selon la précision fournie (où les nombres sont arrondis pour parvenir à ce degré de précision). Cette méthode exprime aussi le nombre en tant que - pourcentage et préfixe la sortie avec un signe de pourcent.:: + pourcentage et préfixe la sortie avec un signe de pourcent. :: // appelé avec NumberHelper. Sortie: 45.69% echo $this->Number->toPercentage(45.691873645); @@ -348,7 +348,7 @@ automatiqement la sortie dans la vue. Le paramètre $number est le nombre que vous planifiez sur le formatage de sortie. Avec aucun $options fourni, le nombre 1236.334 sortirait - 1,236. Notez que la valeur de precision par défaut est aucune décimale. + 1,236. Notez que la valeur de précision par défaut est aucune décimale. Le paramètre $options prend les mêmes clés que :php:meth:`CakeNumber::format()` lui-même: diff --git a/fr/core-utility-libraries/security.rst b/fr/core-utility-libraries/security.rst index 6b32aab493..9f86d7ca26 100644 --- a/fr/core-utility-libraries/security.rst +++ b/fr/core-utility-libraries/security.rst @@ -104,7 +104,7 @@ L'API de Security :rtype: string - Génére un hash d'autorisation. + Génère un hash d'autorisation. .. php:staticmethod:: getInstance( ) diff --git a/fr/core-utility-libraries/set.rst b/fr/core-utility-libraries/set.rst index f4aa478386..a41f8455e0 100644 --- a/fr/core-utility-libraries/set.rst +++ b/fr/core-utility-libraries/set.rst @@ -54,7 +54,7 @@ quelles options sont disponibles. | | littérale. | +--------------------------------+--------------------------------------------+ | {[a-z]+} | Toute chaîne entre accolades (à part | -| | {n} et {s}) est interpretée comme une | +| | {n} et {s}) est interprétée comme une | | | expression régulière. | +--------------------------------+--------------------------------------------+ @@ -326,7 +326,7 @@ quelles options sont disponibles. en clé, et en option $path2 comme chemin pour obtenir les valeurs. Si $path2 n'est pas spécifié, toutes les valeurs seront initialisées à null (utile pour Set::merge). Vous pouvez en option grouper les valeurs par - ce qui est obtenu quand on suit le chemin spécifié dans $groupPath.:: + ce qui est obtenu quand on suit le chemin spécifié dans $groupPath. :: $result = Set::combine(array(), '{n}.User.id', '{n}.User.Data'); // $result == array(); @@ -711,7 +711,7 @@ quelles options sont disponibles. Set::extract utilise la syntaxe basique XPath 2.0 pour retourner les sous-ensembles de vos données à partir d'un fin ou d'un find all. Cette - fonction vous permet de récupèrer vos données rapidement sans avoir + fonction vous permet de récupérer vos données rapidement sans avoir à boucler à travers des tableaux multi-dimensionnels ou de traverser à travers les structures en arbre. @@ -898,7 +898,7 @@ quelles options sont disponibles. :rtype: array - Insére $data dans un tableau comme défini dans $path.:: + Insére $data dans un tableau comme défini dans $path. :: $a = array( 'pages' => array('name' => 'page') @@ -1055,7 +1055,7 @@ quelles options sont disponibles. :rtype: boolean Set::matches peut être utilisé pour voir si un item unique ou un xpath - donné admet certaines conditions.:: + donné admet certaines conditions. :: $a = array( array('Article' => array('id' => 1, 'title' => 'Article 1')), @@ -1159,7 +1159,7 @@ quelles options sont disponibles. :rtype: array - Normalise une liste de chaîne ou de tableau.:: + Normalise une liste de chaîne ou de tableau. :: $a = array('Tree', 'CounterCache', 'Upload' => array( @@ -1375,7 +1375,7 @@ quelles options sont disponibles. :rtype: array - Retire un élémént d'un Set ou d'un tableau selon ce qui est défini par $path:: + Retire un élément d'un Set ou d'un tableau selon ce qui est défini par $path:: $a = array( 'pages' => array('name' => 'page'), @@ -1401,7 +1401,7 @@ quelles options sont disponibles. Set::reverse est au fond l'opposé de :php:func:`Set::map`. Elle convertit un objet en un tableau. Si $object n'est pas un objet, reverse va - simplement retourner $object.:: + simplement retourner $object. :: $result = Set::reverse(null); // Null @@ -1506,7 +1506,7 @@ quelles options sont disponibles. :rtype: array - Trie un tableau selon toute valeur, determiné par un chemin Set-compatible:: + Trie un tableau selon toute valeur, déterminé par un chemin Set-compatible:: $a = array( 0 => array('Person' => array('name' => 'Jeff')), diff --git a/fr/core-utility-libraries/string.rst b/fr/core-utility-libraries/string.rst index cd978b6a74..bfb933693c 100644 --- a/fr/core-utility-libraries/string.rst +++ b/fr/core-utility-libraries/string.rst @@ -60,7 +60,7 @@ d'une ``View``, utilisez la classe ``String``:: permettre les remplacements de clé/valeur:: String::insert('Mon nom est :name et j'ai :age ans.', array('name' => 'Bob', 'age' => '65')); - // génére: "Mon nom est Bob et j'ai 65 ans." + // génère: "Mon nom est Bob et j'ai 65 ans." .. php:staticmethod:: cleanInsert($string, $options = array()) @@ -264,10 +264,10 @@ d'une ``View``, utilisez la classe ``String``:: du résultat. Extrait un excerpt de ``$haystack`` surrounding the ``$needle`` - avec un nombre de caractères de chaque côté determiné par ``$radius``, + avec un nombre de caractères de chaque côté déterminé par ``$radius``, et prefix/suffix with ``$ending``. Cette méthode est spécialement pratique pour les résultats recherchés. La chaîne requêtée ou les mots clés peuvent - être montrés dans le document résultant.:: + être montrés dans le document résultant. :: // appelé avec TextHelper echo $this->Text->excerpt($lastParagraph, 'method', 50, '...'); @@ -287,7 +287,7 @@ d'une ``View``, utilisez la classe ``String``:: :param string $and: Le mot utilisé pour le dernier join. Crée une liste séparée avec des virgules, où les deux derniers items sont - joins avec 'and'.:: + joins avec 'and'. :: // appelé avec TextHelper echo $this->Text->toList($colors); diff --git a/fr/core-utility-libraries/time.rst b/fr/core-utility-libraries/time.rst index 9e0e31119d..6435a9856c 100644 --- a/fr/core-utility-libraries/time.rst +++ b/fr/core-utility-libraries/time.rst @@ -32,7 +32,7 @@ Formatage :rtype: integer Convertit étant donné le time (dans le time zone du serveur) vers le time - de l'utilisateur, étant donné son/sa sortie de GMT.:: + de l'utilisateur, étant donné son/sa sortie de GMT. :: // appel via TimeHelper echo $this->Time->convert(time(), 'Asia/Jakarta'); @@ -173,7 +173,7 @@ Formatage :rtype: integer - Va retourner la date en un nombre défini sur Greenwich Mean Time (GMT).:: + Va retourner la date en un nombre défini sur Greenwich Mean Time (GMT). :: // Appelé avec TimeHelper echo $this->Time->gmt('Aug 22, 2011'); diff --git a/fr/deployment.rst b/fr/deployment.rst index d61fff7295..efefe25f3d 100644 --- a/fr/deployment.rst +++ b/fr/deployment.rst @@ -45,7 +45,7 @@ le debug change les types de choses suivantes: * Les messages de Debug, créés avec :php:func:`pr()` et :php:func:`debug()` sont désactivés. * Les caches du Coeur de CakePHP sont flushés tous les 999 jours, au lieu de - tous les 10 seconds en développement. + toutes les 10 secondes en développement. * Les vues d'Erreur sont moins informatives, et renvoient des messages génériques d'erreur à la place. * Les Erreurs ne sont pas affichées. @@ -54,7 +54,7 @@ le debug change les types de choses suivantes: En plus des éléments ci-dessus, beaucoup de plugins et d'extensions d'application utilisent ``debug`` pour modifier leur comportement. -Vous pouvez créer une variable d'environnement pour définir le niveau de +Vous pouvez créer une variable d'environnement pour définir le niveau de debug dynamiquement entre plusieurs environnements. Cela va éviter de déployer une application avec debug > 0 et vous permet de ne pas avoir à changer de niveau de debug chaque fois avant de déployer vers un environnement de diff --git a/fr/development/configuration.rst b/fr/development/configuration.rst index 46c35c98a8..bbfaea567d 100755 --- a/fr/development/configuration.rst +++ b/fr/development/configuration.rst @@ -136,24 +136,78 @@ En utilisant :php:meth:`App::build()` dans bootstrap.php nous pouvons définir des chemins supplémentaires où CakePHP va recherchez les classes:: App::build(array( - 'Model' => array('/path/to/models', '/next/path/to/models'), - 'Model/Behavior' => array('/path/to/behaviors', '/next/path/to/behaviors'), - 'Model/Datasource' => array('/path/to/datasources', '/next/path/to/datasources'), - 'Model/Datasource/Database' => array('/path/to/databases', '/next/path/to/database'), - 'Model/Datasource/Session' => array('/path/to/sessions', '/next/path/to/sessions'), - 'Controller' => array('/path/to/controllers', '/next/path/to/controllers'), - 'Controller/Component' => array('/path/to/components', '/next/path/to/components'), - 'Controller/Component/Auth' => array('/path/to/auths', '/next/path/to/auths'), - 'Controller/Component/Acl' => array('/path/to/acls', '/next/path/to/acls'), - 'View' => array('/path/to/views', '/next/path/to/views'), - 'View/Helper' => array('/path/to/helpers', '/next/path/to/helpers'), - 'Console' => array('/path/to/consoles', '/next/path/to/consoles'), - 'Console/Command' => array('/path/to/commands', '/next/path/to/commands'), - 'Console/Command/Task' => array('/path/to/tasks', '/next/path/to/tasks'), - 'Lib' => array('/path/to/libs', '/next/path/to/libs'), - 'Locale' => array('/path/to/locales', '/next/path/to/locales'), - 'Vendor' => array('/path/to/vendors', '/next/path/to/vendors'), - 'Plugin' => array('/path/to/plugins', '/next/path/to/plugins'), + 'Model' => array( + '/path/to/models', + '/next/path/to/models' + ), + 'Model/Behavior' => array( + '/path/to/behaviors', + '/next/path/to/behaviors' + ), + 'Model/Datasource' => array( + '/path/to/datasources', + '/next/path/to/datasources' + ), + 'Model/Datasource/Database' => array( + '/path/to/databases', + '/next/path/to/database' + ), + 'Model/Datasource/Session' => array( + '/path/to/sessions', + '/next/path/to/sessions' + ), + 'Controller' => array( + '/path/to/controllers', + '/next/path/to/controllers' + ), + 'Controller/Component' => array( + '/path/to/components', + '/next/path/to/components' + ), + 'Controller/Component/Auth' => array( + '/path/to/auths', + '/next/path/to/auths' + ), + 'Controller/Component/Acl' => array( + '/path/to/acls', + '/next/path/to/acls' + ), + 'View' => array( + '/path/to/views', + '/next/path/to/views' + ), + 'View/Helper' => array( + '/path/to/helpers', + '/next/path/to/helpers' + ), + 'Console' => array( + '/path/to/consoles', + '/next/path/to/consoles' + ), + 'Console/Command' => array( + '/path/to/commands', + '/next/path/to/commands' + ), + 'Console/Command/Task' => array( + '/path/to/tasks', + '/next/path/to/tasks' + ), + 'Lib' => array( + '/path/to/libs', + '/next/path/to/libs' + ), + 'Locale' => array( + '/path/to/locales', + '/next/path/to/locales' + ), + 'Vendor' => array( + '/path/to/vendors', + '/next/path/to/vendors' + ), + 'Plugin' => array( + '/path/to/plugins', + '/next/path/to/plugins' + ), )); .. note:: @@ -185,14 +239,15 @@ variable et comment elle affecte votre application CakePHP. debug Change la sortie de debug de CakePHP. - 0 = mode Production. Pas de sortie. - 1 = Montre les erreurs et les avertissements. - 2 = Montre les erreurs, avertissements, et le SQL. [le log SQL est - seulement montré quand vous ajoutez $this->element('sql\_dump') - à votre vue ou votre layout.] + + * 0 = mode Production. Pas de sortie. + * 1 = Montre les erreurs et les avertissements. + * 2 = Montre les erreurs, avertissements, et le SQL. [le log SQL est + seulement montré quand vous ajoutez $this->element('sql\_dump') + à votre vue ou votre layout.] Error - Configure le getionnaire d'Error handler utilisé pour gérer les erreurs + Configure le gestionnaire d'Error handler utilisé pour gérer les erreurs pour votre application. Par défaut :php:meth:`ErrorHandler::handleError()` est utilisé. Cela affichera les erreurs en utilisant :php:class:`Debugger`, quand debug > 0 @@ -254,11 +309,11 @@ Routing.prefixes tableau de noms préfixés de routes que vous voulez utiliser. En savoir plus sur cela plus tard. Cache.disable - Quand défini à true, la mise en cache persistente est désativée côté-site. + Quand défini à true, la mise en cache persistante est désactivée côté-site. Cela mettra toutes les lectures/écritures du :php:class:`Cache` en échec. Cache.check Si défini à true, active la mise en cache de la vue. L'activation est - toujours necéssaire dans les controllers, mais cette variable permet + toujours nécessaire dans les controllers, mais cette variable permet la détection de ces configurations. Session Contient un tableau de configurations à utiliser pour la configuration @@ -302,7 +357,7 @@ Session Session.handler à . Pour utiliser les sessions en base de données, lancez le schéma - ``app/Config/Schema/sessions.php`` en utilisant la commnde de shell de + ``app/Config/Schema/sessions.php`` en utilisant la commande de shell de cake: ``cake schema create Sessions``. Security.salt @@ -365,15 +420,15 @@ Classe Configure .. php:class:: Configure Malgré quelques petites choses à configurer dans CakePHP, il -est parfois utilie d'avoir vos propres règles de configuration pour votre -application. Dans le passé, vous avoiez peut-être défini des valeurs +est parfois utile d'avoir vos propres règles de configuration pour votre +application. Dans le passé, vous aviez peut-être défini des valeurs de configuration personnalisées en définissant des variables ou des constantes dans certains fichiers. Faire cela, vous force à inclure ce fichier de configuration chaque fois que vous souhaitez utiliser ces valeurs. La nouvelle classe Configure de CakePHP peut être utilisée pour stocker et -récupèrer des valeurs spécifiques d'exécution ou d'application. Attention, +récupéré des valeurs spécifiques d'exécution ou d'application. Attention, cette classe vous permet de stocker tout dedans, puis de l'utiliser dans toute autre partie de votre code: une tentative évidente de casser le modèle MVC avec lequel CakePHP a été conçu. Le but principal de la classe Configure @@ -607,10 +662,10 @@ Restaurer la configuration de runtime .. php:staticmethod:: restore($name, $cacheConfig = 'default') :param string $name: La clé de stockage à charger. - :param string $cacheConfig: La configuration de cache à partir de laquel + :param string $cacheConfig: La configuration de cache à partir de laquelle on charge les données. -Une fois que vous avez stocké la configuration executée, vous aurez +Une fois que vous avez stocké la configuration exécutée, vous aurez probablement besoin de la restaurer afin que vous puissiez y accéder à nouveau. ``Configure::restore()`` fait exactement cela:: @@ -632,9 +687,9 @@ plugins. Les readers de configuration ont besoin d'implémenter l' lecture, comme seule méthode requise. Si vous aimez vraiment les fichiers XML, vous pouvez créer un reader de config simple Xml pour votre application:: - // dans app/Lib/Configure/XmlReader.php + // dans app/Lib/Configure/MyXmlReader.php App::uses('Xml', 'Utility'); - class XmlReader implements ConfigReaderInterface { + class MyXmlReader implements ConfigReaderInterface { public function __construct($path = null) { if (!$path) { $path = APP . 'Config' . DS; @@ -656,12 +711,18 @@ vous pouvez créer un reader de config simple Xml pour votre application:: Dans votre ``app/Config/bootstrap.php``, vous pouvez attacher ce reader et l'utiliser:: - App::uses('XmlReader', 'Configure'); - Configure::config('xml', new XmlReader()); + App::uses('MyXmlReader', 'Configure'); + Configure::config('xml', new MyXmlReader()); ... Configure::load('my_xml'); +.. warning:: + + Ce n'dest pas une bonne idée de nommer votre classe de configuration + ``XmlReader`` car ce nom de classe est déjà utilisé en interne par PHP + `XMLReader `_ + La méthode ``read()`` du reader de config, doit retourner un tableau d'informations de configuration que la ressource nommé ``$key`` contient. @@ -678,7 +739,7 @@ d'informations de configuration que la ressource nommé ``$key`` contient. identifiées par ``$key`` et retourner un tableau de données dans le fichier. -.. php:method:: dump($key) +.. php:method:: dump($key, $data) :param string $key: L'identifieur dans lequel écrire. :param array $data: La donnée à supprimer. @@ -694,7 +755,7 @@ d'informations de configuration que la ressource nommé ``$key`` contient. Lancé quand les erreurs apparaissent quand le chargement/stockage/restauration des données de configuration. Les implémentations de :php:interface:`ConfigReaderInterface` devraient - lancer cette erreur quand elles rencontrent une erreur. + lancer cette exception quand elles rencontrent une erreur. Readers de Configuration intégrés --------------------------------- @@ -723,7 +784,7 @@ Readers de Configuration intégrés :php:exc:`ConfigureException`. Charger votre fichier de configuration personnalisé en insérant ce qui suit - dans app/Config/bootstrap.php: + dans app/Config/bootstrap.php:: Configure::load('customConfig'); @@ -731,7 +792,7 @@ Readers de Configuration intégrés Vous permet de lire les fichiers de configuration qui sont stockés en fichiers .ini simples. Les fichiers ini doivent être compatibles avec la - fonction php ``parse_ini_file``, et bénéficie des améliorations suivantes: + fonction PHP ``parse_ini_file``, et bénéficie des améliorations suivantes: * Les valeurs séparées par des points sont étendues dans les tableaux. * Les valeurs de la famille des boléens comme 'on' et 'off' sont converties diff --git a/fr/development/debugging.rst b/fr/development/debugging.rst index a38a60f112..77e78a7c2a 100644 --- a/fr/development/debugging.rst +++ b/fr/development/debugging.rst @@ -30,7 +30,7 @@ aussi la ligne et le fichier dont ils sont originaires par défaut. La sortie de cette fonction est seulement montrée si la variable de debug du coeur a été définie à une valeur supérieure à 0. -.. versionchanged:: 2.1 +.. versionchanged:: 2.1 La sortie de ``debug()`` ressemble plus ``var_dump()``, et utilise :php:class:`Debugger` en interne. @@ -113,12 +113,12 @@ est défini à une valeur supérieure à 0. .. php:staticmethod:: Debugger::trace($options) - Retourne le stack trace courant. Chaque ligne des traces inlut la méthode - appelée, incluant chaque fichier et ligne d'où est originaire l'appel.:: + Retourne le stack trace courant. Chaque ligne des traces inclut la méthode + appelée, incluant chaque fichier et ligne d'où est originaire l'appel. :: //Dans PostsController::index() pr( Debugger::trace() ); - + //sorties PostsController::index() - APP/Controller/DownloadsController.php, line 48 Dispatcher::_invoke() - CORE/lib/Cake/Routing/Dispatcher.php, line 265 @@ -138,17 +138,17 @@ est défini à une valeur supérieure à 0. Récupérer un extrait du fichier dans $path (qui est un chemin de fichier absolu), mettant en évidence le numéro de la ligne $line avec le nombre - de lignes $context autour.:: + de lignes $context autour. :: pr( Debugger::excerpt(ROOT.DS.LIBS.'debugger.php', 321, 2) ); - + //sortira ce qui suit. Array ( [0] => * @access public [1] => */ [2] => function excerpt($file, $line, $context = 2) { - + [3] => $data = $lines = array(); [4] => $data = @explode("\n", file_get_contents($file)); ) @@ -180,10 +180,10 @@ est défini à une valeur supérieure à 0. Utiliser Logging pour debug =========================== -Les messages de Logging est une autre bonne façon de debugger les applications, +Logger des messages est une autre bonne façon de debugger les applications, et vous pouvez utiliser :php:class:`CakeLog` pour faire le logging dans votre application. Tous les objets qui étendent :php:class:`Object` ont une méthode -d'instanciation `log()` qui peut être utilisé pour les messages de log:: +d'instanciation `log()` qui peut êtreui peut être utilisée pour logger les messages:: $this->log('Got here', 'debug'); @@ -203,12 +203,18 @@ a été chargée:: Kit de Debug ============ -DebugKit est un plugin qui fournit un nombre de bons outiles de debug. Il +DebugKit est un plugin qui fournit un nombre de bons outils de debug. Il fournit principalement une barre d'outils dans le HTML rendu, qui fournit une pléthore d'informations sur votre application et la requête courante. Vous pouvez télécharger `DebugKit `_ sur github. +xdebug +====== + +Si votre environnement a l'extension php xdebug, des erreurs fatales vont +montrer des détails de stack trace supplémentaires de xdebug. Plus de détails +sur `xdebug `_ . .. meta:: :title lang=fr: Debugger diff --git a/fr/development/dispatch-filters.rst b/fr/development/dispatch-filters.rst index a12dc5ff08..2ecfb7f7e7 100644 --- a/fr/development/dispatch-filters.rst +++ b/fr/development/dispatch-filters.rst @@ -12,7 +12,7 @@ de requêtes. CakePHP fournit une interface propre et extensible pour de tels cas pour attacher les filtres au cycle de dispatchement, de la même façon qu'une -couce middleware pour fournir des services empilables ou des routines +couche middleware pour fournir des services empilables ou des routines pour chaque requête. Nous les appelons `Dispatcher Filters`. Configurer les Filtres @@ -73,9 +73,9 @@ de PHP5.3 d'attacher des fonctions anonymes en tant que filtres:: La clé ``on`` prend seulement ``before`` et ``after`` comme valeurs valides, et cela signifie bien évidemment si le filtre doit être lancé avant ou après -que tout code du controller soit executé. En plus de définir les filtres avec +que tout code du controller soit exécuté. En plus de définir les filtres avec la clé ``callable``, vous pouvez aussi définir une priorité pour vos filtres, -si aucun n'est spécifié alors par défaut ``10`` et séléctionné pour vous. +si aucun n'est spécifié alors par défaut ``10`` et sélectionné pour vous. Puisque tous les filtres auront une priorité par défaut à ``10``, vous aurez envie de lancer un filtre avant tout autre dans la liste, sélectionner des @@ -134,7 +134,7 @@ Classes Filter Les filtres de Dispatcher, quand définis en tant que noms de classe dans configuration, doivent étendre la classe ``DispatcherFilter`` fournie dans le répertoire `Routing` de CakePHP. -Créeons un simple filtre pour répondre à une URL spécifique avec un texte +Créons un simple filtre pour répondre à une URL spécifique avec un texte 'Hello World':: App::uses('DispatcherFilter', 'Routing'); @@ -162,7 +162,7 @@ de choses à expliquer ici, commençons avec la valeur ``$priority``. Comme mentionné avant, quand vous utilisez les classes de filtre, vous pouvez seulement définir l'ordre dans lequel elles sont lancées en utilisant la propriété ``$priority`` dans la classe, la valeur par défaut est -10 si la propriété est déclarée, cela signifie qu'il sera executé _après_ que +10 si la propriété est déclarée, cela signifie qu'il sera exécuté _après_ que la classe de Router a parsé la requête. Nous ne voulons pas que cela arrive dans notre exemple précédent, parce que probablement, vous n'avez pas de controller configuré pour répondre à cette URL, donc nous avons choisi @@ -170,7 +170,7 @@ de controller configuré pour répondre à cette URL, donc nous avons choisi ``DispatcherFilter`` propose deux méthodes qui peuvent être écrasées dans des sous-classes, elles sont ``beforeDispatch`` et ``afterDispatch``, et sont -executées respectivement avant ou après que tout controller soit executé. +exécutées respectivement avant ou après que tout controller soit exécuté. Les deux méthodes reçoivent un objet :php:class:`CakeEvent` contenant les objets ``request`` et ``response`` (instances :php:class:`CakeRequest` et :php:class:`CakeResponse`) avec @@ -184,7 +184,7 @@ et retourner un objet comme cela en réponse immédiatement au client. Nous avons aussi ajouté ``$event->stopPropagation()`` pour empêcher d'autres filtres d'être exécuté après celui-ci. -Créeons maintenant un autre filtre pour modifier les headers de réponse dans +Créons maintenant un autre filtre pour modifier les headers de réponse dans toute page publique, dans notre cas, ce serait tout ce qui est servi à partir de ``PagesController``:: @@ -245,13 +245,13 @@ petite milliseconde pour cette mission-critical API endpoint:: Dans l'exemple précédent, nous avons selectionné une priorité à ``9`` pour notre filtre, donc pour sauter toute autre logique, soit placé dans des filtres personnalisés, soit dans des filtres du coeur comme le système de -routing interne de CakePHP. Bien que cela ne soit pas necéssaire, cela +routing interne de CakePHP. Bien que cela ne soit pas nécessaire, cela montre comment faire pour que votre code important se lance en premier au cas où vous auriez besoin de trim au plus gros possible à partir de certaines requêtes. Pour des raisons évidentes, ceci a le potentiel de rendre la maintenance de -votre app très difficile. Les filtres sont un outil extrèmement puissant +votre app très difficile. Les filtres sont un outil extrêmement puissant quand on les utilise sagement, ajoutez les gestionnaires de réponse pour chaque URL dans votre app n'est pas une bonne utilisation pour cela. Mais si vous avez une raison valide de le faire, alors vous avez une solution diff --git a/fr/development/errors.rst b/fr/development/errors.rst index 79cc878b82..b97b721bac 100644 --- a/fr/development/errors.rst +++ b/fr/development/errors.rst @@ -88,7 +88,7 @@ pour gérer vos erreurs. Ce qui suit serait à faire:: Cette classe/méthode va afficher 'Il y a eu une erreur!' chaque fois qu'une erreur apparaît. Depuis que vous pouvez définir un gestionnaire d'erreur comme tout type de callback, vous pouvez utiliser une fonction anonyme si vous -utilisez PHP5.3 ou supérieur.:: +utilisez PHP5.3 ou supérieur. :: Configure::write('Error.handler', function($code, $description, $file = null, $line = null, $context = null) { echo 'Oh non quelque chose est apparu'; diff --git a/fr/development/exceptions.rst b/fr/development/exceptions.rst index e9688c260d..6f87fc1292 100755 --- a/fr/development/exceptions.rst +++ b/fr/development/exceptions.rst @@ -106,7 +106,7 @@ pas été trouvés:: En utilisant les exceptions pour les erreurs HTTP, vous pouvez garder à la fois votre code propre, et donner les réponses complètement REST aux -appications clientes et aux utilisateurs. +applications clientes et aux utilisateurs. De plus, les exceptions de couche du framework suivantes sont disponibles, et seront lancées à partir de certains components du coeur de CakePHP: @@ -178,7 +178,7 @@ seront lancées à partir de certains components du coeur de CakePHP: Ces classes d'exception étendent toutes :php:exc:`CakeException`. En étendant CakeException, vous pouvez créer vos propres erreurs 'framework'. -Toutes les Exceptions standardes que CakePHP va aussi lancer les CakeException +Toutes les Exceptions standards que CakePHP va aussi lancer les CakeException étendues. .. versionadded:: 2.3 @@ -302,7 +302,7 @@ utilisé quand vous créez une exception:: 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 de template spécifique, et que vous utilisez un code égal ou supérieur -à ``500``, vous verrez le template ``error500``. Pour toute autre code +à ``500``, vous verrez le template ``error500``. Pour tout autre code d'erreur, vous aurez le template ``error400``. Si vous avez défini un template d'erreur pour votre exception personnalisée, ce template va être utilisé en mode développement. Si vous souhaitez votre propre gestionnaire d'exception @@ -351,7 +351,7 @@ ceci:: Vous pouvez lancer tout code que vous souhaitez à l'intérieur de ``handleException``. Le code ci-dessus afficherait simplement 'Oh noes! ' -plus le message d'exception. Vouspouvez définir des gestionnaires d'exception +plus le message d'exception. Vous pouvez définir des gestionnaires d'exception comme tout type de callback, même une fonction anonyme si vous utilisez PHP 5.3:: diff --git a/fr/development/rest.rst b/fr/development/rest.rst index 700d09bfa4..37177d8e71 100644 --- a/fr/development/rest.rst +++ b/fr/development/rest.rst @@ -172,7 +172,7 @@ Le XML rendu va au final ressembler à ceci:: Créer la logique pour l'action edit est un peu vicieux, mais pas de beaucoup. -Puisque nous fournissons un API qui sort du XML, c'est un chois naturel pour +Puisque nous fournissons un API qui sort du XML, c'est un choix naturel pour recevoir le XML en entrée. Ne vous inquiétez pas, les classes :php:class:`RequestHandler` et :php:class:`Router` facilitent beaucoup les choses. Si une requête POST ou PUT a un content-type XML, diff --git a/fr/development/routing.rst b/fr/development/routing.rst index f78df4169c..7dbc19aff5 100644 --- a/fr/development/routing.rst +++ b/fr/development/routing.rst @@ -50,7 +50,7 @@ que CakePHP est configuré avec un ensemble de routes par défaut. Le routing de CakePHP par défaut va vous faire aller assez loin dans toute application. Vous pouvez accéder à une action directement par l'URL en mettant son nom dans la requête. Vous pouvez aussi passer des paramètres aux -actions de votre controller en utilisant l'URL.:: +actions de votre controller en utilisant l'URL. :: modèle URL des routes par défaut: http://example.com/controller/action/param1/param2/param3 @@ -147,7 +147,7 @@ de la route:: array('controller' => 'products', 'action' => 'display', 5) ); -Cet exemple montre comment vous pouvez utilisez le deuxième paramètre de +Cet exemple montre comment vous pouvez utiliser le deuxième paramètre de ``connect()`` pour définir les paramètres par défaut. Si vous construisez un site qui propose des produits pour différentes catégories de clients, vous pourriez considérer la création d'une route. Cela vous permet de vous lier @@ -528,7 +528,7 @@ Arguments Passés Les arguments passés sont des arguments supplémentaires ou des segments du chemin qui sont utilisés lors d'une requête. Ils sont souvent utilisés -pour transmettre des paramètres aux méthodes de vos controllers.:: +pour transmettre des paramètres aux méthodes de vos controllers. :: http://localhost/calendars/view/recent/mark @@ -947,12 +947,12 @@ API du Router Le premier paramètre va être utilisé comme nom de controller alors que le second est utilisé en nom d'action. La syntaxe '/\*' rend cette route greedy puisqu'elle ca matcher les requêtes comme `/posts/index` ainsi que - les requêtes comme ``/posts/edit/1/foo/bar`` .:: + les requêtes comme ``/posts/edit/1/foo/bar`` . :: Router::connect('/home-page', array('controller' => 'pages', 'action' => 'display', 'home')); Ce qui est au-dessus montre l'utilisation d'un paramètre de route par - défaut. Et fournit les paramètres de routing pour une route statique.:: + défaut. Et fournit les paramètres de routing pour une route statique. :: Router::connect( '/:lang/:controller/:action/:id', @@ -974,7 +974,7 @@ API du Router du tableau de route régulière. Ex. ``'pass' => array('slug')``. * ``persist`` est utilisé pour définir lesquels des paramètres de route - devrait être automatiquement inclus quand on génére les nouvels URLs. + devrait être automatiquement inclus quand on génère les nouvels URLs. Vous pouvez écraser les paramètres persistentes en les redéfinissant dans une URL ou les retirer en configurant le paramètre à ``false``. Ex. ``'persist' => array('lang')``. @@ -1031,7 +1031,7 @@ API du Router chaînes de requête HTML échappées '&'. * full - Si à true, l'URL de base complète sera précédée. - Génére une URL pour l'action spécfiée. Retourne une URL pointant vers + Génère une URL pour l'action spécfiée. Retourne une URL pointant vers une combinaison de controller et d'action. $url peut être: * Empty - la méthode trouve l'adresse du controller/de l'action actuel. @@ -1095,7 +1095,7 @@ API du Router :param string $url: La chaîne URL à parser. - Parse une URL entrante, et génére un tableau de paramètres requêtés sur + Parse une URL entrante, et génère un tableau de paramètres requêtés sur lequel le Dispatcher peut agir. Etendre cette méthode vous permet de personnaliser comment les URLs entrantes sont converties en un tableau. Retourne ``false`` à partir d'une URL pour indiquer un échec de match. diff --git a/fr/development/sessions.rst b/fr/development/sessions.rst index aadf044412..158aed98ce 100644 --- a/fr/development/sessions.rst +++ b/fr/development/sessions.rst @@ -19,15 +19,15 @@ niveau ``Session``, et un certain nombre d'options sont disponibles: * ``Session.timeout`` - Le nombre de *minutes* avant que le gestionnaire de session de CakePHP ne fasse expirer la session. - Cela affecte ``Session.autoRegenerate`` (ci-dessous), et cela est geré par + Cela affecte ``Session.autoRegenerate`` (ci-dessous), et cela est géré par CakeSession. * ``Session.cookieTimeout`` - Le nombre de *minutes* avant que le cookie de - session n'expire. Si il n'est pas défini, il utilisera la même valeur que + session n'expire. S'il n'est pas défini, il utilisera la même valeur que ``Session.timeout``. Cela affecte le cookie de session, et est geré directement par PHP. -* ``Session.checkAgent`` - Le user agent doit il être verifié, sur chaque +* ``Session.checkAgent`` - Le user agent doit-il être vérifié, sur chaque requête. Si le useragent ne matche pas, la session sera détruite. * ``Session.autoRegenerate`` - Activer cette configuration, allume @@ -37,7 +37,7 @@ niveau ``Session``, et un certain nombre d'options sont disponibles: fois que le compte à rebours atteint 0, l'id de session sera regénéré. C'est une bonne option à utiliser pour les applications qui necéssitent de changer fréquemment les ids de session pour des raisons de sécurité. Vous pouvez - contrôler le nombre de requêtes necéssaires pour regénérer la session en + contrôler le nombre de requêtes nécessaires pour regénérer la session en modifiant :php:attr:`CakeSession::$requestCountdown`. * ``Session.defaults`` - Vous permet d'utiliser les configurations de session @@ -168,7 +168,7 @@ Cette interface est utilisée pour tous les gestionnaires de session personnalisés à l'intérieur de CakePHP, et peut être utilisé pour créer des gestionnaires de session personnalisées user land. En implémentant simplement l'interface dans votre classe et en définissant -``Session.handler.engine`` au nom de classe que vous avez crée. CakePHP +``Session.handler.engine`` au nom de classe que vous avez créé. CakePHP va tenter de charger le gestionnaire à partir de l'intérieur de ``app/Model/Datasource/Session/$classname.php``. Donc si votre nom de classe est ``AppSessionHandler``, le fichier devrait être @@ -224,7 +224,7 @@ Les Sessions de Cache La classe Cache peut aussi être utilisée pour stocker les sessions. Cela vous permet de stocker les sessions dans un cache comme APC, memcache, ou Xcache. Il y a some caveats dans l'utilisation des sessions en cache, puisque -si vous exhaust l'espace de cache, les sessions vont commencer à expirer +si vous avez épuisé l'espace de cache, les sessions vont commencer à expirer puisque les enregistrements sont évincés. Pour utiliser les sessions basées sur le Cache, vous pouvez configurer votre @@ -345,7 +345,7 @@ Selon le contexte dans lequel vous êtes dans votre application, vous avez différentes classes qui fournissent un accès à la session. Dans les controllers, vous pouvez utiliser :php:class:`SessionComponent`. Dans la vue, vous pouvez utiliser :php:class:`SessionHelper`. Dans -tout autre partie de votre application, vous pouvez utiliser +toute autre partie de votre application, vous pouvez utiliser ``CakeSession`` pour accéder aussi à la session. Comme les autres interfaces de session, ``CakeSession`` fournit une interface simple de CRUD. diff --git a/fr/development/testing.rst b/fr/development/testing.rst index aeea608bcf..3dc3035a45 100755 --- a/fr/development/testing.rst +++ b/fr/development/testing.rst @@ -14,13 +14,25 @@ Installer PHPUnit CakePHP utilise PHPUnit as its underlying test framework. PHPUnit est le standard de-facto pour le test unitaire dans PHP. Il offre un ensemble de fonctionnalités profondes et puissantes pour s'assurer que votre code fait -ce que vous pensez qu'il doit faire. PHPUnit peut être installé à travers -le `PEAR installer `_. Pour installer PHPUnit, lancez -ce qui suit:: +ce que vous pensez qu'il doit faire. + +Installation via Composer +------------------------- +Les dernières versions de phpunit ne fonctionnent pas avec cake:: + + "phpunit/phpunit": "3.7.32" + +Installation via Package .phar +------------------------------ + +Vous pouvez également télécharger le fichier directement. Assurez-vous de +récupérer la bonne version depuis https://phar.phpunit.de/. +Assurez-vous également que /usr/local/bin est dans le include_path de votre +fichier php.ini :: - pear upgrade PEAR - pear config-set auto_discover 1 - pear install pear.phpunit.de/PHPUnit-3.7.32 + wget https://phar.phpunit.de/phpunit-3.7.32.phar + chmod +x phpunit.phar + mv phpunit.phar /usr/local/bin/phpunit .. note:: @@ -29,10 +41,6 @@ ce qui suit:: Selon la configuration de votre système, vous devrez lancer les commandes précédentes avec ``sudo``. -Une fois que PHPUnit est installé avec l'installeur PEAR, vous devrez confirmer -que les librairies PHPUnit sont sur le ``include_path`` de PHP. Vous pouvez -faire cela en vérifiant votre fichier php.ini et en vous assurant que les -fichiers de PHPUnit sont dans un des répertoires de ``include_path``. .. tip:: @@ -71,8 +79,8 @@ Vérifier la Configuration Test Après avoir installé PHPUnit et configuré le ``$test`` de la configuration de la base de données, vous pouvez vous assurer que vous êtes prêt à écrire et -lancer vos propres tests en lancant un de ceux présents dans le coeur. Il y a -deux exécuteurs integrés pour le test, nous commencerons en utilisant +lancer vos propres tests en lançant un de ceux présents dans le coeur. Il y a +deux exécuteurs intégrés pour le test, nous commencerons en utilisant l'exécution par le navigateur. Les tests peuvent être accessibles par le navigateur à http://localhost/votre_app/test.php. Vous devriez voir une liste des cas de test du coeur. Cliquez sur le test 'AllConfigure'. Vous devriez voir @@ -101,7 +109,7 @@ conventions. En ce qui concerne les tests: Vous pouvez aussi utiliser l'annotation ``@test`` pour marquer les méthodes en méthodes de test. -Quand vous avez crée un cas de test, vous pouvez l'exécuter en naviguant sur +Quand vous avez créé un cas de test, vous pouvez l'exécuter en naviguant sur ``http://localhost/votre_app/test.php`` (selon votre configuration spécifique) Cliquez sur les cas de test de App, et cliquez ensuite sur le lien de votre fichier spécifique. Vous pouvez lancer les tests à partir des lignes de @@ -129,7 +137,7 @@ bar HTML. Notre helper ressemblerait à cela:: } C'est un exemple très simple, mais ce sera utile pour montrer comment vous -pouvez créer un cas de test simple. Après avoir créer et sauvegardé notre +pouvez créer un cas de test simple. Après avoir créé et sauvegardé notre helper, nous allons créer le fichier de cas de tests dans ``app/Test/Case/View/Helper/ProgressHelperTest.php``. Dans ce fichier, nous allons commencer avec ce qui suit:: @@ -212,7 +220,7 @@ environnement. Vous pouvez accéder au web runner en allant sur test.php va changer en fonction de votre configuration. Mais le fichier est au même niveau que ``index.php``. -Une fois que vous chargé les test runner, vous pouvez naviguer dans les +Une fois que vous chargé les tests runners, vous pouvez naviguer dans les suites test de App, Core et Plugin. Cliquer sur un cas de test individuel va lancer ce test et afficher les résultats. @@ -233,7 +241,7 @@ La couverture du code inline utilise les lignes vertes pour indiquer les lignes qui ont été exécutées. Si vous vous placez sur une ligne verte, une info-bulle indiquera quels tests couvre la ligne. Les lignes en rouge n'ont pas été lancées, et n'ont pas été testées par vos tests. Les lignes grises -sont considerées comme du code non exécuté par xdebug. +sont considérées comme du code non exécuté par xdebug. .. _run-tests-from-command-line: @@ -243,7 +251,7 @@ Lancer les tests à partir d'une ligne de commande CakePHP fournit un shell ``test`` pour lancer les tests. Vous pouvez lancer les tests de app, core et plugin facilement en utilisant le shell test. Il accepte aussi tous les arguments que vous vous attendez à trouver -sur l'outil de ligne de commnde du PHPUnit normal. A partir de votre répertoire +sur l'outil de ligne de commande du PHPUnit normal. A partir de votre répertoire app, vous pouvez faire ce qui suit pour lancer les tests:: # Lancer un test de model dans app @@ -257,7 +265,7 @@ app, vous pouvez faire ce qui suit pour lancer les tests:: .. note:: - Si vous lancez des tests qui intéragissent avec la session, c'est + Si vous lancez des tests qui interagissent avec la session, c'est généralement une bonne idée d'utiliser l'option ``--stderr``. Cela réglera les problèmes des échecs de test dûs aux avertissements des headers_sent. @@ -270,10 +278,10 @@ Vous pouvez aussi lancer le shell ``test`` dans le répertoire de projet racine. Cela vous montre une liste complète de tous les tests que vous avez actuellement. Vous pouvez ainsi choisir librement quel(s) test(s) lancer:: - # Lancer test dans le réperoire de projet racine pour le dossier applicaton appelé app + # Lancer test dans le répertoire de projet racine pour le dossier application appelé app lib/Cake/Console/cake test app - # Lancer test dans le repértoire de projets racine pour une application dans ./myapp + # Lancer test dans le répertoire de projets racine pour une application dans ./myapp lib/Cake/Console/cake test -app myapp app @@ -287,7 +295,7 @@ filtrer les méthodes de test:: ./Console/cake test core Console/ConsoleOutput --filter testWriteArray -Le paramètre filter est utilisé commme une expression régulière sensible à la +Le paramètre filter est utilisé comme une expression régulière sensible à la casse pour filtrer les méthodes de test à lancer. Générer une couverture de code @@ -343,7 +351,7 @@ temporairement des tables de données chargées avec des données d'exemple qui peuvent être utilisées par le test. Le bénéfice de l'utilisation de fixtures est que votre test n'a aucune chance d'abimer les données de l'application qui tourne. De plus, vous pouvez commencer à tester -votre code avant dee développer réellement en live le contenu pour +votre code avant de développer réellement en live le contenu pour une application. CakePHP utilise la connexion nommée ``$test`` dans votre fichier de @@ -354,8 +362,8 @@ d'utiliser les fixtures de la base de données. CakePHP effectue ce qui suit pendant le chemin d'une fixture basée sur un cas de test: -#. Crée les tables pour chacun des fixtues necéssaires. -#. Remplit les tables avec les données, si les données sont fournis dans la fixture. +#. Crée les tables pour chacun des fixtures nécessaires. +#. Remplit les tables avec les données, si les données sont fournies dans la fixture. #. Lance les méthodes de test. #. Vide les tables de fixture. #. Retire les tables de fixture de la base de données. @@ -364,7 +372,7 @@ Créer les fixtures ------------------ A la création d'une fixture, vous pouvez définir principalement deux choses: -comment la table est créée (quels champs font parti de la table), et quels +comment la table est créée (quels champs font partie de la table), et quels enregistrements seront remplis initialement dans la table. Créons notre première fixture, qui sera utilisée pour tester notre propre model Article. Crée un fichier nommé ``ArticleFixture.php`` dans votre répertoire @@ -402,7 +410,7 @@ fixture devra utiliser la source de données ``test_mydb``. Si la connexion par ``test`` pour réduire la possibilité de trucher accidentellement toutes les données de votre application quand vous lancez des tests. -Nous utilisons ``$fields`` pour spécifier les champs qui feront parti de cette +Nous utilisons ``$fields`` pour spécifier les champs qui feront partie de cette table, et comment ils sont définis. Le format utilisé pour définir ces champs est le même qu'utilisé avec :php:class:`CakeSchema`. Les clés disponibles pour la définition de la table sont: @@ -429,8 +437,8 @@ la définition de la table sont: ``default`` Valeur par défaut que le champ prend. -Nos pouvons définir un ensemble d'enregistrements qui seront remplis après que -la table de fixture est crée. Le format est directement fairly forward, +Nous pouvons définir un ensemble d'enregistrements qui seront remplis après que +la table de fixture est créée. Le format est directement fairly forward, ``$records`` est un tableau d'enregistrements. Chaque item dans ``$records`` devrait être une unique ligne. A l'intérieur de chaque ligne, il devrait y avoir un tableau associatif des colonnes et valeurs pour la ligne. Gardez juste @@ -446,7 +454,7 @@ Depuis que les enregistrements pour une fixture sont déclarées en propriété de classe, vous ne pouvez pas facilement utiliser les fonctions ou autres données dynamiques pour définir les fixtures. Pour résoudre ce problème, vous pouvez définir ``$records`` dans la fonction init() de votre fixture. Par -exemple, si vous voulez tous les timestamps crées et mis à jours pour +exemple, si vous voulez tous les timestamps créés et mis à jours pour refléter la date d'aujourd'hui, vous pouvez faire ce qui suit:: class ArticleFixture extends CakeTestFixture { @@ -525,7 +533,7 @@ Si vous voulez utiliser une connexion différente, utilisez:: public $import = array('table' => 'articles', 'connection' => 'other'); } -Puisqu'on utilise votre connexion à la base de données CakePHP, si il y a un +Puisqu'on utilise votre connexion à la base de données CakePHP, s'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 :: @@ -624,7 +632,7 @@ Disons que nous avons déjà notre model Article défini dans Nous voulons maintenant configurer un test qui va utiliser la définition du model, mais à travers les fixtures, pour tester quelques fonctionnalités dans le model. Le test suite de CakePHP charge un petit ensemble minimum de fichiers -(pour garder les test isolés), ainsi nous devons commencer par charger notre +(pour garder les tests isolés), ainsi nous devons commencer par charger notre model - dans ce cas le model Article que nous avons déjà défini. Créons maintenant un fichier nommé ``ArticleTest.php`` dans votre répertoire @@ -1116,7 +1124,7 @@ dans notre component. Nous créons le fichier } public function testAdjust() { - // Tester notre méthode adjust avec les configuraitons de différents paramètres + // Tester notre méthode adjust avec les configurations de différents paramètres $this->PagematronComponent->adjust(); $this->assertEquals(20, $this->Controller->paginate['limit']); @@ -1143,7 +1151,7 @@ important de s'assurer que ces classes sont couvertes par des cas de test. Tout d'abord, nous créons un helper d'exemple à tester. ``CurrencyRendererHelper`` va nous aider à afficher les monnaies dans nos vues -et pour siplifier, il ne va avoir qu'une méthode ``usd()``. +et pour simplifier, il ne va avoir qu'une méthode ``usd()``. :: @@ -1241,8 +1249,8 @@ Vous pouvez ensuite lancer ce test en ligne de commande en utilisant:: Créer des Tests pour les Plugins ================================ -Les Tests pour les plugins sont crées dans leur propre répertoire à -l'intérieur du dossier des plugins.:: +Les Tests pour les plugins sont créés dans leur propre répertoire à +l'intérieur du dossier des plugins. :: /app /Plugin @@ -1255,7 +1263,7 @@ Ils travaillent comme des tests normaux mais vous devrez vous souvenir d'utiliser les conventions de nommage pour les plugins quand vous importez des classes. Ceci est un exemple d'un testcase pour le model ``BlogPost`` à partir du chapitre des plugins de ce manuel. -Une différence par rapport aux autres test est dans la première +Une différence par rapport aux autres tests est dans la première ligne où 'Blog.BlogPost' est importé. Vous devrez aussi préfixer les fixtures de votre plugin avec ``plugin.blog.blog_post``:: @@ -1305,7 +1313,7 @@ Ajouter une config de base de données de test Utiliser une base de données séparée juste pour Jenkins est généralement une bonne idée, puisque cela évite au sang de couler et évite un certain nombre -de problèmes basiques. Une fois que vous avez crée une nouvelle base de données +de problèmes basiques. Une fois que vous avez créé une nouvelle base de données dans un serveur de base de données auquel jenkins peut accéder (habituellement localhost). Ajoutez une *étape de script shell* au build qui contient ce qui suit:: @@ -1328,7 +1336,7 @@ Cela s'assure que vous aurez toujours la bonne configuration de la base de données dont Jenkins a besoin. Faites la même chose pour tout autre fichier de configuration dont vous auriez besoin. Il est souvent une bonne idée de supprimer et re-créer la base de données avant chaque build aussi. -Cela vous évite des echecs de chaînes, où un buid cassé entraîne l'echec +Cela vous évite des échecs de chaînes, où un buid cassé entraîne l'echec des autres. Ajoutez une autre *étape de script shell* au build qui contient ce qui suit:: @@ -1355,7 +1363,7 @@ Lancer un build --------------- Vous devriez être capable de lancer un build maintenant. Vérifiez la sortie de -la console et faites tous les changements necéssaires pour obtenir un build +la console et faites tous les changements nécessaires pour obtenir un build précédent. diff --git a/fr/epub-contents.rst b/fr/epub-contents.rst index fa4335638c..d1ee23b360 100644 --- a/fr/epub-contents.rst +++ b/fr/epub-contents.rst @@ -4,8 +4,8 @@ Contenu .. toctree:: :maxdepth: 3 - installation getting-started + installation cakephp-overview controllers views @@ -15,7 +15,9 @@ Contenu console-and-shells development deployment - tutorials-and-examples + tutorials-and-examples/blog-auth-example/auth + tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application + tutorials-and-examples/simple-acl-controlled-application/part-two contributing appendices diff --git a/fr/getting-started/a-typical-cakephp-request.rst b/fr/getting-started/a-typical-cakephp-request.rst index a091670b96..fbb8a2989b 100644 --- a/fr/getting-started/a-typical-cakephp-request.rst +++ b/fr/getting-started/a-typical-cakephp-request.rst @@ -53,4 +53,4 @@ Noir = élément obligatoire, Gris = élément optionnel, Bleu = rappel (callbac .. meta:: :title lang=fr: Une requête CakePHP typique - :keywords lang=fr: élement optionnel,model utilisation,controller classe,custom cake,business logic,exemple requête,requête url,flow diagram,ingrédients basiques,bases de données,envoyer emails,callback,cakes,manipulation,authentification,router,serveur web,paramètres,cakephp,models + :keywords lang=fr: élément optionnel,model utilisation,controller classe,custom cake,business logic,exemple requête,requête url,flow diagram,ingrédients basiques,bases de données,envoyer emails,callback,cakes,manipulation,authentification,router,serveur web,paramètres,cakephp,models diff --git a/fr/getting-started/cakephp-conventions.rst b/fr/getting-started/cakephp-conventions.rst index f99f2ded43..59fbb4d155 100644 --- a/fr/getting-started/cakephp-conventions.rst +++ b/fr/getting-started/cakephp-conventions.rst @@ -39,16 +39,16 @@ underscore, la méthode ne sera pas accessible directement à partir du web mais est disponible pour une utilisation interne. Par exemple:: class NewsController extends AppController { - + public function latest() { $this->_findNewArticles(); } - + protected function _findNewArticles() { // Logique pour trouver les derniers articles de nouvelles } } - + Alors que la page http://www.exemple.com/news/latest/ est accessible pour l'utilisateur comme d'habitude, quelqu'un qui essaie d'aller sur la page @@ -155,13 +155,14 @@ CakePHP n'accepte pas les clés primaires composées. Dans l'éventualité où v voulez manipuler directement les données de votre table de jointure, cela veut dire que vous devez soit utiliser les appels directs à :ref:`query `, soit ajouter une clé primaire pour être en mesure -d'agir sur elle comme un model normal. Exemple: +d'agir sur elle comme un model normal. Exemple:: CREATE TABLE posts_tags ( - id INT(10) NOT NULL AUTO_INCREMENT, - post_id INT(10) NOT NULL, - tag_id INT(10) NOT NULL, - PRIMARY KEY(id)); + id INT(10) NOT NULL AUTO_INCREMENT, + post_id INT(10) NOT NULL, + tag_id INT(10) NOT NULL, + PRIMARY KEY(id + ); Plutôt que d'utiliser une clé auto-incrémentée comme clé primaire, vous pouvez aussi utiliser un champ char(36). CakePHP utilisera alors un UUID de 36 @@ -182,13 +183,13 @@ Le schéma classique est En utilisant les conventions CakePHP dans le nommage des différentes parties de votre application, vous gagnerez des fonctionnalités sans les tracas et les affres de la configuration. Voici un exemple récapitulant les conventions -abordées : +abordées: - Nom de la table dans la base de données : "personnes" - Classe du Model : "Personne", trouvée dans /app/Model/Personne.php - Classe du Controller : "PersonnesController", trouvée dans - /app/Controller/PersonnesController.php - Gabarit de la Vue : trouvé dans /app/View/Personnes/index.ctp +- Nom de la table dans la base de données : "personnes" +- Classe du Model : "Personne", se trouvant dans /app/Model/Personne.php +- Classe du Controller : "PersonnesController", se trouvant dans + /app/Controller/PersonnesController.php +- Template de Vue : se trouve dans /app/View/Personnes/index.ctp En utilisant ces conventions, CakePHP sait qu'une requête de type http://exemple.com/personnes/ sera liée à un appel à la fonction index() du @@ -207,4 +208,3 @@ s'articulent. .. meta:: :title lang=fr: Conventions de CakePHP :keywords lang=fr: expérience de développement web,maintenance cauchemard,méthode index,systèmes légaux,noms de méthode,classe php,système uniforme,fichiers de config,tenets,pommes,conventions,controller conventionel,bonnes pratiques,maps,visibilité,nouveaux articles,fonctionnalité,logique,cakephp,développeurs - diff --git a/fr/installation/advanced-installation.rst b/fr/installation/advanced-installation.rst index 7faf0f2d12..ebea3447cb 100644 --- a/fr/installation/advanced-installation.rst +++ b/fr/installation/advanced-installation.rst @@ -26,7 +26,7 @@ vous n'aurez pas besoin de faire d'autres changements. Installer CakePHP avec composer =============================== -Composer est un outil de gestion de dépendance pour PHP 5.3+. Il règle +Composer est un outil de gestion de dépendances pour PHP 5.3+. Il règle plusieurs problèmes que l'installateur PEAR a, et simplifie la gestion de plusieurs versions de librairies. Puisque CakePHP publie un package PEAR, vous pouvez installer CakePHP en utilisant @@ -37,7 +37,7 @@ application CakePHP ressemblerait à ce qui suit:: { "name": "example-app", "require": { - "cakephp/cakephp": "2.5.*" + "cakephp/cakephp": "2.6.*" }, "config": { "vendor-dir": "Vendor/" diff --git a/fr/installation/url-rewriting.rst b/fr/installation/url-rewriting.rst index 7ef404071f..523f979b61 100644 --- a/fr/installation/url-rewriting.rst +++ b/fr/installation/url-rewriting.rst @@ -209,7 +209,7 @@ faire, suivez ces étapes: #. Utilisez Notepad ou tout autre éditeur XML-safe, copiez le code suivant dans votre nouveau fichier web.config... -:: +.. code-block:: xml diff --git a/fr/models/additional-methods-and-properties.rst b/fr/models/additional-methods-and-properties.rst index 83b65c9971..f4c63698a9 100644 --- a/fr/models/additional-methods-and-properties.rst +++ b/fr/models/additional-methods-and-properties.rst @@ -50,7 +50,7 @@ champ unique. :php:meth:`Model::escapeField(string $field = null, string $alias = null)` ========================================================================== -Echappe le nom du champ et ajoute le nom du model. L'echappement est fait en +Echappe le nom du champ et ajoute le nom du model. L'échappement est fait en fonction des règles du driver de la base de données courante. :php:meth:`Model::exists($id)` diff --git a/fr/models/associations-linking-models-together.rst b/fr/models/associations-linking-models-together.rst index 4d44746053..e00008651a 100644 --- a/fr/models/associations-linking-models-together.rst +++ b/fr/models/associations-linking-models-together.rst @@ -42,11 +42,15 @@ plusieurs vers un belongsTo Plusieurs recipes appartiennent plusieurs vers plusieurs hasAndBelongsToMany Les recipes ont, et appartiennent à plusieurs ingrédients. ========================== ===================== ============================================================ +Pour clarifier davantage la définition des associations dans les modèles: +Si la table d'un model contient la clé étrangère (other_model_id), le type +de relation dans ce model est **toujours** un Model **belongsTo** OtherModel. + Les associations se définissent en créant une variable de classe nommée comme l'association que vous souhaitez définir. La variable de classe peut quelquefois se limiter à une chaîne de caractère, mais peut également être aussi complète qu'un tableau multi-dimensionnel utilisé pour définir les -spécificité de l'association. +spécificités de l'association. :: @@ -61,7 +65,7 @@ spécificité de l'association. ); } -Dans l'exemple ci-dessus, la première occurence du mot 'Recipe' est ce que +Dans l'exemple ci-dessus, la première occurrence du mot 'Recipe' est ce que l'on appelle un 'Alias'. C'est un identifiant pour la relation et cela peut être ce que vous souhaitez. En règle générale, on choisit le même nom que la classe qu'il référence. Toutefois, **les alias pour chaque model doivent être @@ -139,7 +143,7 @@ simplement en poursuivant les associations de votre model:: .. note:: - Rappelez-vous que les associations sont définis dans 'un sens'. Si vous + Rappelez-vous que les associations sont définies dans 'un sens'. Si vous définissez User hasMany Recipe, cela n'a aucun effet sur le model Recipe. Vous avez besoin de définir Recipe belongsTo User pour pouvoir accéder au model User à partir du model Recipe. @@ -211,7 +215,7 @@ Les clés possibles pour les tableaux d'association incluent: associer au model actuel. Si l\'on souhaite définir la relation ’User a un Profile’, la valeur associée à la clé 'className' devra être ‘Profile’. -- **foreignKey**: le nom de la clé etrangère que l'on trouve dans +- **foreignKey**: le nom de la clé étrangère que l'on trouve dans l'autre model. Ceci sera particulièrement pratique si vous avez besoin de définir des relations hasOne multiples. La valeur par défaut de cette clé est le nom du model actuel (avec des underscores) @@ -361,7 +365,7 @@ counterCache - Cache your count() Cette fonction vous aide à mettre en cache le count des données liées. Au lieu de compter les enregistrements manuellement via ``find('count')``, le model suit lui-même tout ajout/suppression à travers le model ``$hasMany`` -associé et augmente/diminue un champ numérique dedié dans la table du model +associé et augmente/diminue un champ numérique dédié dans la table du model parent. Le nom du champ est le nom du model particulier suivi par un underscore @@ -371,7 +375,7 @@ et le mot "count":: Disons que vous avez un model appelé ``ImageComment`` et un model appelé ``Image``, vous ajouteriez un nouveau champ numérique (INT) à la -table ``images`` et l'appeleriez ``image_comment_count``. +table ``images`` et l'appelleriez ``image_comment_count``. Ici vous trouverez quelques exemples supplémentaires: @@ -441,7 +445,7 @@ User users.messages\_read Compte les ``Message`` lus --------- ---------------------- ------------------------------------------- User users.messages\_unread Compte les ``Message`` non lus --------- ---------------------- ------------------------------------------- -Message messages.is\_read Determines si un ``Message`` est lu ou non. +Message messages.is\_read Détermines si un ``Message`` est lu ou non. ========= ====================== =========================================== Avec la configuration de votre ``belongsTo`` qui ressemblerait à cela:: @@ -509,7 +513,7 @@ Les clés possibles pour les tableaux d'association hasMany sont : model actuel. Si l'on souhaite définir la relation ‘User hasMany Comment’ (l'User a plusieurs Comments), la valeur associée à la clef 'className' devra être ‘Comment’. -- **foreignKey**: le nom de la clé etrangère que l'on trouve dans l'autre +- **foreignKey**: le nom de la clé étrangère que l'on trouve dans l'autre model. Ceci sera particulièrement pratique si vous avez besoin de définir des relations hasMany multiples. La valeur par défaut de cette clé est le nom du model actuel (avec des underscores) suffixé avec ‘\_id’ @@ -587,7 +591,7 @@ hasAndBelongsToMany (HABTM) --------------------------- Très bien. A ce niveau, vous pouvez déjà vous considérer comme un professionnel -des associations de models CakePHP. Vous vous êtes déjà assez compétents +des associations de models CakePHP. Vous êtes déjà assez compétent dans les 3 types d'associations afin de pouvoir effectuer la plus grande partie des relations entre les objets. @@ -601,7 +605,7 @@ entre les models n'est pas exclusif dans le cadre d'une relation HABTM. Par exemple, relions notre model Recipe avec un model Ingredient en utilisant HABTM. Le fait d'utiliser les tomates en Ingredient pour la recipe de Spaghettis de ma grand-mère ne "consomme" pas l'Ingredient. Je peux aussi -utiliser mes Spaghettis pour une Recipe Salade. +utiliser mes tomates pour une Recipe Salade. Les liens entre des objets liés par une association hasMany sont exclusifs. Si mon User "hasMany" Comment, un commentaire ne sera lié qu'à un @@ -693,7 +697,7 @@ Les clés possibles pour un tableau définissant une association HABTM sont : actuel. Ceci sera particulièrement pratique si vous avez besoin de définir des relations HABTM multiples. La valeur par défaut de cette clé est le nom du model actuel (avec des underscores) suffixé avec ‘\_id'. -- **associationForeignKey**: Le nom de la clé etrangère que l'on trouve +- **associationForeignKey**: Le nom de la clé étrangère que l'on trouve dans l'autre model. Ceci sera particulièrement pratique si vous avez besoin de définir des relations HABTM multiples. La valeur par défaut de cette clé est le nom de l'autre model (avec des underscores) suffixé @@ -796,7 +800,7 @@ association many to many. Considérons ce qui suit En d'autres termes, un Student peut avoir plusieurs (many) Courses et un Course peut être pris par plusieurs (many) Students. C'est une association -simple de many to many nécéssitant une table comme ceci:: +simple de many to many nécessitant une table comme ceci:: id | student_id | course_id @@ -808,7 +812,7 @@ souhaiterions serait comme ceci:: Le problème est que hasAndBelongsToMany ne va pas supporter ce type de scénario parce que quand les associations hasAndBelongsToMany sont sauvegardées, -l'association est d'abord supprimée. Vous perderiez les données supplémentaires +l'association est d'abord supprimée. Vous perdriez les données supplémentaires dans les colonnes qui ne seraient pas remplacées dans le nouvel ajout. .. versionchanged:: 2.1 @@ -821,7 +825,7 @@ dans les colonnes qui ne seraient pas remplacées dans le nouvel ajout. La façon d'implémenter nos exigences est d'utiliser un **join model**, autrement connu comme une association **hasMany through**. Cela étant fait, l'association est elle-même un model. Ainsi, vous pouvez -créer un nouveau model CourseMembership. Regardez les models suivants.:: +créer un nouveau model CourseMembership. Regardez les models suivants. :: // Student.php class Student extends AppModel { @@ -1039,7 +1043,7 @@ ci-dessous:: ); } -**Récupérer un tableau imbriqué d'enregitrements associés:** +**Récupérer un tableau imbriqué d'enregistrements associés:** Si votre table a un champ ``parent_id``, vous pouvez aussi utiliser :ref:`model-find-threaded` pour récupérer un tableau imbriqué d'enregistrements diff --git a/fr/models/behaviors.rst b/fr/models/behaviors.rst index 7d4a843744..2e6d8606b3 100644 --- a/fr/models/behaviors.rst +++ b/fr/models/behaviors.rst @@ -34,7 +34,7 @@ section nous couvrirons le schéma d'usage classique pour ajouter des behaviors aux models, l'utilisation des behaviors intégrés à CakePHP et la manière de créer nos propres behaviors. -Au final, les Behaviors sont +Au final, les Behaviors sont `Mixins `_ avec les callbacks. Il y a un certain nombre de Behaviors inclus dans CakePHP. Pour en savoir @@ -256,10 +256,10 @@ Cela vous permet de munge le nom de la méthode pour des informations supplémentaires, un peu comme ``Model::findAllByXX``. Si le behavior du dessus est attaché à un model, ce qui suit arrivera:: - $model->doReleaseTheHounds('homer', 'lenny'); + $model->doReleaseTheHounds('karl', 'lenny'); // sortira - 'ReleaseTheHounds', 'homer', 'lenny' + 'ReleaseTheHounds', 'karl', 'lenny' Callbacks du Behavior ===================== diff --git a/fr/models/callback-methods.rst b/fr/models/callback-methods.rst index 848df6b3ea..ae270b5028 100644 --- a/fr/models/callback-methods.rst +++ b/fr/models/callback-methods.rst @@ -112,7 +112,7 @@ beforeSave ``beforeSave(array $options = array())`` Placez toute logique de pré-enregistrement dans cette fonction. Cette fonction -s'exécute immediatement après que les données du model ont été validées avec +s'exécute immédiatement après que les données du model ont été validées avec succès, mais juste avant que les données ne soient sauvegardées. Cette fonction devrait toujours retourner true si voulez que l'opération d'enregistrement se poursuive. @@ -182,7 +182,7 @@ dépendent de cet enregistrement soient aussi supprimés. .. tip:: - Assurez vous que beforeDelete() retourne true, ou votre + Assurez-vous que beforeDelete() retourne true, ou votre suppression ne va pas marcher. :: @@ -199,9 +199,8 @@ dépendent de cet enregistrement soient aussi supprimés. )); if ($count == 0) { return true; - } else { - return false; } + return false; } afterDelete diff --git a/fr/models/data-validation.rst b/fr/models/data-validation.rst index 5790445017..1e60dd3e9e 100644 --- a/fr/models/data-validation.rst +++ b/fr/models/data-validation.rst @@ -61,7 +61,7 @@ quelques-unes de ces règles pré-définies:: 'message' => 'Chiffres et lettres uniquement !' ), 'between' => array( - 'rule' => array('between', 5, 15), + 'rule' => array('lengthBetween', 5, 15), 'message' => 'Entre 5 et 15 caractères' ) ), @@ -291,9 +291,9 @@ Ce sera plus explicite avec un exemple pratique:: 'last' => true ), 'regleLogin-2' => array( - 'rule' => array('minLength', 8), + 'rule' => array('minLength', 8), 'message' => 'Taille minimum de 8 caractères' - ) + ) ) ); @@ -502,7 +502,7 @@ souhaitez:: 'required' => 'create' )) ->add('password', 'size', array( - 'rule' => array('between', 8, 20), + 'rule' => array('lengthBetween', 8, 20), 'message' => 'Password should be at least 8 chars long' )); @@ -515,7 +515,7 @@ champ unique:: 'required' => 'create' ), 'size' => array( - 'rule' => array('between', 8, 20), + 'rule' => array('lengthBetween', 8, 20), 'message' => 'Password should be at least 8 chars long' ) )); @@ -653,8 +653,8 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. .. php:staticmethod:: blank(mixed $check) Cette règle est utilisée pour vérifier que le champ est laissé vide ou que - seulement des caractères blancs y sont présent. Les caractères blancs - incluent l'espace, la tabulation, le retour chariot et nouvelle ligne.:: + seulement des caractères blancs y sont présents. Les caractères blancs + incluent l'espace, la tabulation, le retour chariot et nouvelle ligne. :: public $validate = array( 'id' => array( @@ -667,7 +667,7 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. Les données pour ce champ doivent être une valeur booléenne. Les valeurs possibles sont : true ou false, les entiers 0 ou 1, les chaînes '0' ou - '1'.:: + '1'. :: public $validate = array( 'maCaseACocher' => array( @@ -797,7 +797,7 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. Les formats ``ym`` et ``y`` ont été ajoutés. .. php:staticmethod:: datetime(array $check, mixed $dateFormat = 'ymd', string $regex = null) - + Cette règle s'assure que les données sont dans un format datetime valide. Un paramètre (qui peut être un tableau) peut être passé pour spécifier le format de la date. La valeur du paramètre peut être une ou plusieurs des @@ -829,7 +829,7 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. Un second paramètre peut aussi être passé pour spécifier une expression réguière personnalisée. Si un paramètre est utilisé, ce sera la seule validation qui apparaitra. - + Notez que au contraire de date(), datetime() validera une date et un time. .. php:staticmethod:: decimal(string $check, integer $places = null, string $regex = null) @@ -851,9 +851,9 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. Celle-ci vérifie que la donnée est une adresse email valide. En passant un booléen true comme second paramètre de cette règle, elle tentera de vérifier aussi, que l'hôte de l'adresse est valide:: - + public $validate = array('email' => array('rule' => 'email')); - + public $validate = array( 'email' => array( 'rule' => array('email', true), @@ -948,9 +948,7 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. .. php:method:: Model::isUnique() La donnée pour le champ doit être unique, elle ne peut être utilisée par - aucune autre ligne. - - :: + aucune autre ligne:: public $validate = array( 'login' => array( @@ -959,6 +957,23 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. ) ); + Vous pouvez valider qu'un ensemble de champs sont uniques en fournissant + plusieurs champs et en paramétrant ``$or`` à ``false``:: + + public $validate = array( + 'email' => array( + 'rule' => array('isUnique', array('email', 'username'), false), + 'message' => 'Cette combinaise nom & email est déjà utilisée.' + ) + ); + + Assurez-vous d'inclure le champ d'origine dans la liste des champs quand vous + établissez une règle unique sur plusieurs champs. + + Si un champ listé n'est pas inclut dans les données du model, il sera alors traité + comme une valeur null. Vous pouvez envisager de marquer les champs répertoriés + comme ``required``. + .. php:staticmethod:: luhn(string|array $check, boolean $deep = false) L'algorithme Luhn: Une formule de vérification de somme pour valider @@ -1062,10 +1077,10 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. .. php:staticmethod:: notEmpty(mixed $check) - La règle de base pour s'assurer qu'un champ n'est pas vide.:: + La règle de base pour s'assurer qu'un champ n'est pas vide. :: public $validate = array( - 'titre' => array( + 'titre' => array( 'rule' => 'notEmpty', 'message' => 'Ce champ ne peut pas rester vide' ) @@ -1076,7 +1091,7 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. .. php:staticmethod:: numeric(string $check) - Vérifie si la donnée passée est un nombre valide.:: + Vérifie si la donnée passée est un nombre valide. :: public $validate = array( 'cars' => array( @@ -1147,17 +1162,16 @@ complète de toutes les règles, illustrées par des exemples d'utilisation. public $validate = array( 'nombre' => array( 'rule' => array('range', -1, 11), - 'message' => 'Merci d\'entrer un nombre entre 0 et 10' + 'message' => 'Merci d\'entrer un nombre entre -1 et 11' ) ); L'exemple ci-dessus acceptera toutes les valeurs qui sont plus grandes que - 0 (par ex, 0.01) et plus petite que 10 (par ex, 9.99). Note : Les deux - extrémités données (-1 et 11) ne sont pas incluses !!! - + -1 (par ex, -0.99) et plus petite que 11 (par ex, 10.99). + .. note:: - - The range lower/upper are not inclusive + + Les deux extrémités ne sont pas incluses. .. php:staticmethod:: ssn(mixed $check, string $regex = null, string $country = null) diff --git a/fr/models/datasources.rst b/fr/models/datasources.rst index 2f265cc367..2b31afa8bb 100644 --- a/fr/models/datasources.rst +++ b/fr/models/datasources.rst @@ -156,7 +156,7 @@ allons l'appeler ``FarAwaySource`` et nous allons la placer dans } /** - * calculate() est pour determiner la façon dont nous allons compter + * calculate() est pour déterminer la façon dont nous allons compter * les enregistrements et est requis pour faire fonctionner ``update()`` * et ``delete()``. * @@ -179,14 +179,14 @@ allons l'appeler ``FarAwaySource`` et nous allons la placer dans * méthode calculate() ci-dessus. Nous pouvons soit vérifier la * source du dépôt, soit une autre façon pour récupérer le compte * de l\'enregistrement. Ici nous allons simplement retourner 1 - * ainsi ``update()`` et ``delete()`` vont estimer que l\'enregistrment + * ainsi ``update()`` et ``delete()`` vont estimer que l\'enregistrement * existe. */ if ($queryData['fields'] === 'COUNT') { return array(array(array('count' => 1))); } /** - * Maintenant nous récupèrons, décodons et retournons les données du dépôt. + * Maintenant nous récupérons, décodons et retournons les données du dépôt. */ $queryData['conditions']['apiKey'] = $this->config['apiKey']; $json = $this->Http->get('http://example.com/api/list.json', $queryData['conditions']); @@ -216,7 +216,7 @@ allons l'appeler ``FarAwaySource`` et nous allons la placer dans /** * Implémente le U dans CRUD. Appel à ``Model::save()`` avec $Model->id - * défini se trouve ici. Selon la source du dépôt, vous pouvez just appeler + * défini se trouve ici. Selon la source du dépôt, vous pouvez juste appeler * ``$this->create()``. */ public function update(Model $model, $fields = null, $values = null, $conditions = null) { diff --git a/fr/models/deleting-data.rst b/fr/models/deleting-data.rst index 60497af6bf..f2ab2775a0 100644 --- a/fr/models/deleting-data.rst +++ b/fr/models/deleting-data.rst @@ -72,7 +72,7 @@ bindModel() ou unbindModel() pour changer les associations, vous devrez définir deleteAll() retournera true même si aucun enregistrement n'est supprimé, puisque les conditions pour la requête de suppression est un succès et - qu'aucun enregitrement correspondant ne reste. + qu'aucun enregistrement correspondant ne reste. .. meta:: diff --git a/fr/models/model-attributes.rst b/fr/models/model-attributes.rst index 036d3ef725..6d008b0bf2 100755 --- a/fr/models/model-attributes.rst +++ b/fr/models/model-attributes.rst @@ -20,9 +20,7 @@ est placé dans /app/Config/database.php. La propriété ``useDbConfig`` est par défaut la connexion à la base de données 'default'. -Exemple d'utilisation: - -:: +Exemple d'utilisation:: class Exemple extends AppModel { public $useDbConfig = 'alternate'; @@ -70,7 +68,7 @@ primaryKey ========== Chaque table a normalement une clé primaire, ``id``. Vous pouvez changer -le nom du champ que le model utlilise en clé primaire. Ceci est courant +le nom du champ que le model utilise en clé primaire. Ceci est courant quand on configure CakePHP pour utiliser une table d'une base de données existante. @@ -133,18 +131,20 @@ est 1. au tableau ``fields`` manuellement. Dans l'exemple ci-dessus, ceci pourrait signifier d'ajouter ``domain_id``. -.. tip:: +Le niveau de recursive recommandé pour votre application devrait être -1. +Cela évite de récupérer des données liées dans les cas où ce n'est pas +nécessaire ou même non souhaité. C'est le plus souvent le cas pour la +plupart de vos appels find(). +Augmenter le seulement quand cela est souhaité ou utilisez le behavior +Containable. - Le niveau de recursive recommandé pour votre application devrait être -1. - Cela évite de récupérer des données liés dans les cas où ce n'est pas - nécessaire ou même non souhaité. C'est le plus souvent le cas pour la - plupart de vos appels find(). - Augmenter le seulement quand cela est souhaité ou utilisez le behavior - Containable. +Vous pouvez réaliser cela en l'ajoutant à AppModel:: - Vous pouvez réaliser cela en l'ajoutant à AppModel:: + public $recursive = -1; - public $recursive = -1; +Si vous utilisez les events dans votre système, utiliser la valeur -1 pour +recursive va désactiver tous les events du model associé. Ceci se passe car +aucune relation n'est créée quand la valeur est définie à -1. order ===== @@ -182,7 +182,7 @@ du model. Chaque champ est décrit par: Exemple d'utilisation:: - public $_schema = array( + protected $_schema = array( 'first_name' => array( 'type' => 'string', 'length' => 30 @@ -234,7 +234,7 @@ de créer des champs virtuels avec les mêmes noms comme colonnes dans la base d données, ceci peut causer des erreurs SQL. Pour plus d'informations sur la propriété ``virtualFields``, son usage propre, -ainsi que des limitations, regardez :doc:`/models/virtual-fields`. +ainsi que des limitations, regardez les :doc:`/models/virtual-fields`. name ==== diff --git a/fr/models/retrieving-your-data.rst b/fr/models/retrieving-your-data.rst index 78096229d6..a94ac942e0 100644 --- a/fr/models/retrieving-your-data.rst +++ b/fr/models/retrieving-your-data.rst @@ -218,12 +218,12 @@ Le résultat d'un appel à ``find('list')`` sera de la forme suivante:: [3] => 'valeurAffichage3', ) -En appelant ``find('list')``, les champs (``fields``) passés sont utilisés -pour déterminer ce qui devrait être utilisé comme clé, valeur du tableau -et, optionnellement, par quoi regrouper les résultats (group by). Par -défaut la clé primaire du model est utilisé comme clé et le champ affiché -(display field qui peut être configuré en utilisant l'attribut -:ref:`model-displayField` du model) est utilisé pour la valeur. Quelques +En appelant ``find('list')``, les champs (``fields``) passés sont utilisés +pour déterminer ce qui devrait être utilisé comme clé, valeur du tableau +et, optionnellement, par quoi regrouper les résultats (group by). Par +défaut la clé primaire du model est utilisé comme clé et le champ affiché +(display field qui peut être configuré en utilisant l'attribut +:ref:`model-displayField` du model) est utilisé pour la valeur. Quelques exemples complémentaires pour clarifier les choses:: public function une_function() { @@ -447,7 +447,7 @@ Le format retourné par un appel à ``find('neighbors')`` est de la forme : .. note:: Notez que le résultat contient toujours seulement deux éléments - de premier niveau : prev et next. Cette fonction ne possède pas + de premier niveau : prev et next. Cette fonction ne possède pas de variable récursive par défaut d'un model. Le paramètre récursif doit être passé dans les paramètres de chaque appel. @@ -542,11 +542,11 @@ de nouvelles données, le traiter pour retourner dans un autre format, ou faire ce que vous voulez sur les données fraichement récupérées. Cet état nécessite que vous retourniez le tableau $results (modifié ou non). -Vous pouvez créer autant de finders personnalisés que vous souhaitez, et ils -sont une bonne façon de réutiliser du code dans votre application à travers +Vous pouvez créer autant de finders personnalisés que vous souhaitez, et ils +sont une bonne façon de réutiliser du code dans votre application à travers les models. -Il est aussi possible de paginer grâce à un type de find personnalisé comme +Il est aussi possible de paginer grâce à un type de find personnalisé comme suit: :: @@ -574,7 +574,7 @@ dans un tableau dans le second argument. class ArticlesController extends AppController { - // Va récupèrer le nombre d'articles publiés (en utilisant le find available défini ci-dessus) + // Va récupérer le nombre d'articles publiés (en utilisant le find available défini ci-dessus) public function index() { $count = $this->Article->find('count', array( 'type' => 'available' @@ -892,16 +892,16 @@ le cas où vous devriez changer votre schéma. Qu'en est-il des autres types de correspondances ? Elles sont aussi simples. Disons que nous voulons trouver tous les posts dont le titre n'est pas -"Ceci est un post":: +"Ceci est un post":: array("Post.titre !=" => "Il y a un post") Notez le '!=' qui précède l'expression. CakePHP peut parser tout opérateur de comparaison valide de SQL, même les expressions de correspondance -utilisant LIKE, BETWEEN, ou REGEX, tant que vous laissez un espace entre -l'opérateur et la valeur. Les seules exceptions à ceci sont les correspondances -du genre IN(...). Admettons que vous vouliez trouver les posts dont le titre -appartient à un ensemble de valeurs données:: +utilisant ``LIKE``, ``BETWEEN``, ou ``REGEX``, tant que vous laissez un espace +entre l'opérateur et la valeur. Les seules exceptions à ceci sont les +correspondances du genre ``IN(...)``. Admettons que vous vouliez trouver les +posts dont le titre appartient à un ensemble de valeurs données:: array( "Post.titre" => array("Premier post", "Deuxième post", "Troisième post") @@ -934,7 +934,7 @@ L'exemple ci-dessus retournera les posts où la date de création est égale sont retournés). Souvenez-vous que si vous vous trouvez dans l'incapacité de formuler une -clause WHERE par cette méthode (ex. opérations booléennes), il vous est +clause ``WHERE`` par cette méthode (ex. opérations booléennes), il vous est toujours possible de la spécifier sous forme de chaîne comme ceci:: array( @@ -943,9 +943,9 @@ toujours possible de la spécifier sous forme de chaîne comme ceci:: ) Par défaut, CakePHP fournit les conditions multiples avec l'opérateur booléen -AND, ce qui signifie que le bout de code ci-dessus correspondra uniquement -aux posts qui ont été créés durant les deux dernières semaines, et qui ont -un titre correspondant à ceux donnés. Cependant, nous pouvons simplement +``AND``, ce qui signifie que le bout de code ci-dessous correspondra +uniquement aux posts qui ont été créés durant les deux dernières semaines, et +qui ont un titre correspondant à ceux donnés. Cependant, nous pouvons simplement trouver les posts qui correspondent à l'une ou l'autre des conditions:: array("OR" => array( @@ -953,14 +953,14 @@ trouver les posts qui correspondent à l'une ou l'autre des conditions:: "Post.created >" => date('Y-m-d', strtotime("-2 weeks")) )) -CakePHP accepte toute opération booléenne SQL valide, telles que AND, OR, NOT, -XOR, etc., et elles peuvent être en majuscule comme en minuscule, comme vous -préférez. Ces conditions sont également infiniment "IMBRIQUABLES". Admettons -que vous ayez une relation hasMany/belongsTo entre Posts et Auteurs, ce qui -reviendrait à un LEFT JOIN. Admettons aussi que vous vouliez trouver tous les -posts qui contiennent un certain mot-clé "magique" ou qui a été créé au -cours des deux dernières semaines, mais que vous voulez restreindre votre -recherche aux posts écrits par Bob:: +CakePHP accepte toute opération booléenne SQL valide, telles que ``AND``, +``OR``, ``NOT``, ``XOR``, etc., et elles peuvent être en majuscule comme en +minuscule, comme vous préférez. Ces conditions sont également infiniment +"IMBRIQUABLES". Admettons que vous ayez une relation hasMany/belongsTo entre +Posts et Auteurs, ce qui reviendrait à un LEFT JOIN. Admettons aussi que vous +vouliez trouver tous les posts qui contiennent un certain mot-clé "magique" ou +qui a été créé au cours des deux dernières semaines, mais que vous voulez +restreindre votre recherche aux posts écrits par Bob:: array( "Auteur.nom" => "Bob", @@ -971,7 +971,7 @@ recherche aux posts écrits par Bob:: ) Si vous avez besoin de mettre plusieurs conditions sur le même champ, comme -quand vous voulez faire une recherche LIKE avec des termes multiples, vous +quand vous voulez faire une recherche ``LIKE`` avec des termes multiples, vous pouvez faire ceci en utilisant des conditions identiques à:: array('OR' => array( @@ -979,6 +979,9 @@ pouvez faire ceci en utilisant des conditions identiques à:: array('Post.titre LIKE' => '%two%') )) +Les opérateurs wildcard ``ILIKE`` et ``RLIKE`` (RLIKE depuis la version 2.6) +sont aussi disponible. + CakePHP peut aussi vérifier les champs null. Dans cet exemple, la requête retournera les enregistrements où le titre du post n'est pas null:: @@ -987,7 +990,7 @@ retournera les enregistrements où le titre du post n'est pas null:: ) ) -Pour gérer les requêtes BETWEEN, vous pouvez utiliser ceci:: +Pour gérer les requêtes ``BETWEEN``, vous pouvez utiliser ceci:: array('Post.read_count BETWEEN ? AND ?' => array(1,10)) @@ -1024,8 +1027,9 @@ Les données retournées seront dans le format suivant:: [1] => Array ... -Un exemple rapide pour faire une requête DISTINCT. Vous pouvez utiliser -d'autres opérateurs, comme MIN(), MAX(), etc..., d'une manière analogue:: +Un exemple rapide pour faire une requête ``DISTINCT``. Vous pouvez utiliser +d'autres opérateurs, comme ``MIN()``, ``MAX()``, etc..., d'une manière +analogue:: array( 'fields' => array('DISTINCT (User.nom) AS nom_de_ma_colonne'), diff --git a/fr/models/saving-your-data.rst b/fr/models/saving-your-data.rst index 9ab5a25fa3..d1dddcbc76 100644 --- a/fr/models/saving-your-data.rst +++ b/fr/models/saving-your-data.rst @@ -117,6 +117,8 @@ suivante en clé: utilisant 'before' ou 'after' activera seulement ces callbacks. * ``counterCache`` (depuis 2.4) Booléen pour contrôler la mise à jour des counter caches (si il y en a). +* ``atomic`` (depuis 2.6) Booléen pour indiquer que vous voulez sauvegarder + les enregistrements dans une transaction. Plus d'informations sur les callbacks du model sont disponibles :doc:`ici `. @@ -484,7 +486,7 @@ l'opération de sauvegarde. Si aucun des enregistrements du model associé n'existe pour l'instant dans le système (par exemple, vous voulez sauvegarder un nouveau User et ses -enregitrements du Profile lié en même temps), vous aurez besoin de sauvegarder +enregistrements du Profile lié en même temps), vous aurez besoin de sauvegarder d'abord le model principal, ou le model parent. Pour avoir une bonne idée de la façon de faire, imaginons que nous ayons une @@ -591,7 +593,7 @@ la table jointe est associée pour chaque model en utilisant un type de relation `hasMany`. Notre exemple est une problématique lancée par la Tête de l'Ecole CakePHP qui nous demande d'écrire une application qui lui permette de connecter la présence d'un étudiant à un cours avec les journées assistées et -validées. Jettez un oeil au code suivant.:: +validées. Jettez un œil au code suivant. :: // Controller/CourseMembershipController.php class CourseMembershipsController extends AppController { @@ -625,7 +627,7 @@ validées. Jettez un oeil au code suivant.:: Form->end(); ?> -Le tableau de données ressemblera à ceci quand il sera soumis.:: +Le tableau de données ressemblera à ceci quand il sera soumis. :: Array ( @@ -688,7 +690,7 @@ Il y aura des cas où vous voudrez créer les Student et Course indépendamment et associer les deux ensemble avec CourseMemberShip plus tard. Donc, vous aurez peut-être un formulaire qui permet la sélection de students et de courses existants à partir d'une liste de choix ou d'une entrée d'un ID -et ensuite les deux meta-champs pour CourseMembership, par ex.:: +et ensuite les deux meta-champs pour CourseMembership, par ex. :: // View/CourseMemberships/add.ctp @@ -823,8 +825,8 @@ associé avec leur recipies respectives. Un autre exemple utile est lorsque quand vous souhaitez sauver de nombreusex Tags dans un Post. Vous devez transmettre les données HABTM associeés dans le - format de tableau HABTM suivant. Notez que vous devez passer uniquement l'id - du modèle HABTM associé mais il doit être imbriquées à nouveau:: +format de tableau HABTM suivant. Notez que vous devez passer uniquement l'id +du modèle HABTM associé mais il doit être imbriquées à nouveau:: Array ( @@ -947,7 +949,7 @@ La clé est dans la configuration du model ``className``. En ajoutant simplement une relation ``Project`` HABTM ``Project`` entraine des problèmes lors des enregistrements de données. En configurant le ``className`` au nom de models et en utilisant l'alias -en clé, nous évitons ces problèmes.:: +en clé, nous évitons ces problèmes. :: class Project extends AppModel { public $hasAndBelongsToMany = array( diff --git a/fr/models/virtual-fields.rst b/fr/models/virtual-fields.rst index 07e1a21e98..963d34203c 100644 --- a/fr/models/virtual-fields.rst +++ b/fr/models/virtual-fields.rst @@ -156,7 +156,7 @@ de notre colonne en utilisant la forme ``MonModel__MonChamp`` comme ceci:: $this->Timelog->query("SELECT project_id, SUM(id) as Timelog__TotalHours FROM timelogs AS Timelog GROUP BY project_id;"); -Lancer la requête de nouveau après avoir specifié le champ virtuel résultera +Lancer la requête de nouveau après avoir spécifié le champ virtuel résultera en un groupement plus propre des valeurs:: Array diff --git a/fr/pdf-contents.rst b/fr/pdf-contents.rst index 164f7e2bbd..61b641ab6c 100644 --- a/fr/pdf-contents.rst +++ b/fr/pdf-contents.rst @@ -15,7 +15,11 @@ Contents console-and-shells development deployment + tutorials-and-examples/blog-auth-example/auth + tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application + tutorials-and-examples/simple-acl-controlled-application/part-two tutorials-and-examples + contributing appendices @@ -23,4 +27,3 @@ Indices et tables ================= * :ref:`genindex` -* :ref:`modindex` diff --git a/fr/plugins.rst b/fr/plugins.rst index 891726451e..a0cdd17931 100755 --- a/fr/plugins.rst +++ b/fr/plugins.rst @@ -16,6 +16,7 @@ comme il l'aurait fait si il était une application à part entière. .. toctree:: :maxdepth: 1 + plugins/how-to-install-plugins plugins/how-to-use-plugins plugins/how-to-create-plugins diff --git a/fr/plugins/how-to-create-plugins.rst b/fr/plugins/how-to-create-plugins.rst index 1970332db9..119d634aaf 100644 --- a/fr/plugins/how-to-create-plugins.rst +++ b/fr/plugins/how-to-create-plugins.rst @@ -241,8 +241,9 @@ servira l'asset .. versionchanged:: 2.1 Utilisez la :term:`syntaxe de plugin` pour accéder aux assets. Par exemple - dans votre View: - Html->css("ContactManager.style"); ?> + dans votre View:: + + Html->css("ContactManager.style"); ?> Components, Helpers et Behaviors @@ -303,7 +304,7 @@ component génial et réutilisable! Astuces pour les Plugins ======================== -Une fois qu'un plugin a été installé dans /app/Plugin, vous pouvez y accéder +Une fois qu'un plugin a été installé dans /app/Plugin/, vous pouvez y accéder à l'URL /nom_plugin/nom_controller/action. Dans notre exemple de plugin ContactManager, nous accédons à notre ContactsController à l'adresse /contact_manager/contacts. diff --git a/fr/plugins/how-to-install-plugins.rst b/fr/plugins/how-to-install-plugins.rst new file mode 100644 index 0000000000..273df1323e --- /dev/null +++ b/fr/plugins/how-to-install-plugins.rst @@ -0,0 +1,95 @@ +Comment Installer des Plugins +############################# + +Il y a quatre moyens d'installer un plugin CakePHP: + +- Par l'intermédiaire de Composer +- Manuellement +- Par sous-module Git +- Par clonage Git + +Mais n'oubliez pas d':ref:`enable-plugins` après-ceci. + +Manuellement +============ + +Pour installer un plugin manuellement, vous avez juste à déposer le dossier du +plugin dans votre répertoire app/Plugin/. Si vous installez un plugin nommé +'ContactManager', vous devez alors avoir un dossier nommé 'ContactManager' dans +le répertoire app/Plugin/ à l'intérieur duquel sont les View, Model, Controller, +webroot et tout autre répertoire de votre plugin. + +Composer +======== + +Si vous n'êtes pas familier avec le gestionnaire de dépendances nommé Composer, +prenez le temps de lire la +`documentation de Composer `_. + +Pour installer le plugin imaginaire 'ContactManager' grâce à Composer, +ajoutez le en tant que dépendance dans le ``composer.json`` de votre projet:: + + { + "require": { + "cakephp/contact-manager": "1.2.*" + } + } + +Si le plugin CakePHP est de type ``cakephp-plugin``, comme il se devrait, +Composer l'installera à l'intérieur de votre répertoire /Plugin, au lieu +du répertoire vendors habituel. + +.. note:: + + Utilisez "require-dev" si vous souhaitez uniquement inclure le plugin + pour votre environnement de développement. + +Sinon, vous pouvez utiliser l' +`outil CLI de Composer `_ +pour déclarer (et installer) le plugin:: + + php composer.phar require cakephp/contact-manager:1.2.* + +Clonage Git +=========== + +Si le plugin que vous souhaitez installer est hébergé en tant que dépôt Git, +vous pouvez également le cloner. Imaginons que le plugin 'ContactManager' est +hébergé sur Github. Vous pouvez le cloner en exécutant la ligne de commande +suivante depuis votre répertoire app/Plugin/:: + + git clone git://github.com/cakephp/contact-manager.git ContactManager + +Sous-module Git +=============== + +Si le plugin que vous souhaitez installer est hébergé en tant que dépôt Git +mais que vous ne voulez pas le cloner, vous pouvez également l'intégrer en tant +que sous-module. Exécutez la ligne de commande suivante depuis votre +répertoire app:: + + git submodule add git://github.com/cakephp/contact-manager.git Plugin/ContactManager + git submodule init + git submodule update + + +.. _enable-plugins: + +Activer les Plugins +=================== + +Les plugins nécessitent d'être chargés manuellement dans +``app/Config/bootstrap.php``. + +Vous pouvez au choix les charger un par un ou bien tous en une seule fois:: + + CakePlugin::loadAll(); // Charge tous les plugins d'un coup + CakePlugin::load('ContactManager'); // Charge un seul plugin + +``loadAll()`` charge tous les plugins disponibles, et vous laisse la possibilité +de régler certain paramètres pour des plugins spécifiques. ``load()`` fonctionne +de façon similaire mais charge uniquement le plugin spécifié explicitement. + +.. meta:: + :title lang=fr: Installer un plugin + :keywords lang=fr: plugin folder, install, installer, dossier plugin, git, zip, tar, submodule, manual, clone, contactmanager, enable \ No newline at end of file diff --git a/fr/plugins/how-to-use-plugins.rst b/fr/plugins/how-to-use-plugins.rst index ee2817a088..c988ad759b 100644 --- a/fr/plugins/how-to-use-plugins.rst +++ b/fr/plugins/how-to-use-plugins.rst @@ -1,28 +1,8 @@ Comment Utiliser des Plugins ############################ -Installer un Plugin -=================== - -Pour installer un plugin, commencez par simplement déplacer le dossier du -plugin dans votre dossier app/Plugin. Si vous installez un plugin nommé -'ContactManager' alors vous devez avoir un dossier dans app/Plugin -appelé 'ContactManager' dans lequel vous aurez les Vues, les Models, les -Controllers, webroot et tout autre répertoire du Plugin. - -Nouveau dans CakePHP 2.0, les plugins ont besoin d'être chargés manuellement -dans app/Config/bootstrap.php. - -Vous pouvez soit les charger un par un, soit tous d'un coup en un seul -appel:: - - CakePlugin::loadAll(); // Charge tous les plugins d'un coup. - CakePlugin::load('ContactManager'); //Charge un seul plugin. - -``loadAll()`` charge tous les plugins disponibles, bien que vous autorisant à -configurer certains paramètres pour des plugins spécifiques. ``load()`` -fonctionne de la même manière, mais charge seulement les plugins que vous avez -explicitement spécifiés. +Avant d'utiliser un plugin, vous devez avant tout l'installer et l'activer. +Voir :doc:`/plugins/how-to-install-plugins`. Configuration du Plugin ======================= diff --git a/fr/tutorials-and-examples/blog-auth-example/auth.rst b/fr/tutorials-and-examples/blog-auth-example/auth.rst index b72e292203..6971468761 100644 --- a/fr/tutorials-and-examples/blog-auth-example/auth.rst +++ b/fr/tutorials-and-examples/blog-auth-example/auth.rst @@ -116,7 +116,10 @@ de génération de code fournis avec CakePHP:: } public function delete($id = null) { - $this->request->onlyAllow('post'); + // Avant 2.5, utilisez + // $this->request->onlyAllow('post'); + + $this->request->allowMethod('post'); $this->User->id = $id; if (!$this->User->exists()) { @@ -132,7 +135,12 @@ de génération de code fournis avec CakePHP:: } -De la même façon, nous avons crée les vues pour nos posts de blog ou en +.. versionchanged:: 2.5 + + Depuis 2.5, utilisez ``CakeRequest::allowMethod()`` au lieu de + ``CakeRequest::onlyAllow()`` (dépréciée). + +De la même façon, nous avons créé 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: @@ -211,7 +219,7 @@ et de réaliser l'action connexion et deconnexion:: public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { - return $this->redirect($this->Auth->redirect()); + return $this->redirect($this->Auth->redirectUrl()); } else { $this->Session->setFlash(__("Nom d'user ou mot de passe invalide, réessayer")); } @@ -226,7 +234,7 @@ 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('AppModel', 'Model'); App::uses('SimplePasswordHasher', 'Controller/Component/Auth'); @@ -334,8 +342,17 @@ config de Auth:: 'Session', 'Auth' => array( 'loginRedirect' => array('controller' => 'posts', 'action' => 'index'), - 'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home'), - 'authorize' => array('Controller') // Ligne ajoutée + 'logoutRedirect' => array( + 'controller' => 'pages', + 'action' => 'display', + 'home' + ), + 'authenticate' => array( + 'Form' => array( + 'passwordHasher' => 'Blowfish' + ) + ), + 'authorize' => array('Controller') // Ajout de cette ligne ) ); diff --git a/fr/tutorials-and-examples/blog/blog.rst b/fr/tutorials-and-examples/blog/blog.rst index cbef89dc98..5fbbe59b0f 100644 --- a/fr/tutorials-and-examples/blog/blog.rst +++ b/fr/tutorials-and-examples/blog/blog.rst @@ -1,5 +1,5 @@ Tutoriel d'un Blog -################## +****************** Bienvenue sur CakePHP. Vous consultez probablement ce tutoriel parce que vous voulez en apprendre plus à propos du fonctionnement de CakePHP. @@ -101,11 +101,11 @@ de données : ); /* Puis insérons quelques posts pour les tests : */ - INSERT INTO posts (title,body,created) + INSERT INTO posts (title, body, created) VALUES ('Le titre', 'Voici le contenu du post.', NOW()); - INSERT INTO posts (title,body,created) + INSERT INTO posts (title, body, created) VALUES ('Encore un titre', 'Et le contenu du post qui suit.', NOW()); - INSERT INTO posts (title,body,created) + INSERT INTO posts (title, body, created) VALUES ('Le retour du titre', 'C\'est très excitant, non ?', NOW()); Le choix des noms pour les tables et les colonnes ne sont pas arbitraires. @@ -165,7 +165,7 @@ de CakePHP. Elle devrait également vous indiquer que votre fichier de connexion Configuration facultative ========================= -Il y a quelques autres élements qui peuvent être configurés. La plupart des +Il y a quelques autres éléments qui peuvent être configurés. La plupart des développeurs configurent les éléments de cette petite liste, mais ils ne sont pas obligatoires pour ce tutoriel. Le premier consiste à définir une chaîne de caractères personnalisée (ou "grain de sel") afin de sécuriser les diff --git a/fr/tutorials-and-examples/blog/part-two.rst b/fr/tutorials-and-examples/blog/part-two.rst index 11f818e1da..738aec5f13 100755 --- a/fr/tutorials-and-examples/blog/part-two.rst +++ b/fr/tutorials-and-examples/blog/part-two.rst @@ -1,5 +1,5 @@ Blog Tutoriel - Ajouter la logique -################################## +********************************** Créer un model Post =================== @@ -185,7 +185,7 @@ quelque chose comme cela 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 +qui réalisent en un clin d'œil 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 @@ -397,7 +397,7 @@ 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 éléments 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 @@ -573,12 +573,18 @@ Posts (PostsController) :: if ($this->request->is('get')) { throw new MethodNotAllowedException(); } + if ($this->Post->delete($id)) { $this->Session->setFlash( __('Le post avec id : %s a été supprimé.', h($id)) ); - return $this->redirect(array('action' => 'index')); + } else { + $this->Session->setFlash( + __('Le post avec l\'id: %s n'a pas pu être supprimé.', h($id)) + ); } + + return $this->redirect(array('action' => 'index')); } Cette logique supprime le Post spécifié par $id, et utilise diff --git a/fr/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst b/fr/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst index 06fa4b7243..bb07aed6ac 100644 --- a/fr/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst +++ b/fr/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.rst @@ -14,7 +14,7 @@ vous avez lu le tutoriel du :doc:`/tutorials-and-examples/blog/blog`, et que vous êtes familier avec :doc:`/console-and-shells/code-generation-with-bake`. Vous devrez avoir un peu d'expérience avec CakePHP, et être familier avec les concepts MVC. Ce tutoriel est une briève introduction à -:php:class:`AuthComponent` et :php:class:`AclComponent`\. +:php:class:`AuthComponent` et :php:class:`AclComponent`. Ce dont vous aurez besoin @@ -41,8 +41,9 @@ https://github.com/cakephp/cakephp/tags et téléchargez la version stable. Pour ce tutoriel vous aurez besoin de la dernière version 2.x. Vous pouvez aussi dupliquer le dépôt en utilisant -`git `_. -``git clone git://github.com/cakephp/cakephp.git``. +`git `_:: + + git clone git://github.com/cakephp/cakephp.git. Une fois que vous avez votre copie toute récente de CakePHP, configurez votre fichier "app/Config/database.php" et changez la valeur du Security.salt @@ -88,8 +89,8 @@ de données, nous pouvons commencer à cuisiner. Utilisez :doc:`/console-and-shells/code-generation-with-bake` pour créer rapidement vos models, controllers et vues. -Pour utiliser cake bake, appelez "cake bake all" et cela listera les 4 tables -que vous avez inseré dans mySQL. Séléctionnez "1. Group", et suivez ce qui +Pour utiliser cake bake, appelez ``cake bake all`` et cela listera les 4 tables +que vous avez inseré dans MySQL. Séléctionnez "1. Group", et suivez ce qui est écrit sur l'écran. Répétez pour les 3 autres tables, et cela générera les 4 controllers, models et vues pour vous. @@ -122,13 +123,13 @@ action logout à votre ``UsersController``:: public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { - return $this->redirect($this->Auth->redirect()); + return $this->redirect($this->Auth->redirectUrl()); } else { $this->Session->setFlash(__('Votre nom d\'user ou mot de passe sont incorrects.')); } } } - + public function logout() { //Laissez vide pour le moment. } @@ -175,12 +176,21 @@ les définir en haut dans ``AppController``:: 'Session' ); public $helpers = array('Html', 'Form', 'Session'); - + public function beforeFilter() { //Configure AuthComponent - $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); - $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); - $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add'); + $this->Auth->loginAction = array( + 'controller' => 'users', + 'action' => 'login' + ); + $this->Auth->logoutRedirect = array( + 'controller' => 'users', + 'action' => 'login' + ); + $this->Auth->loginRedirect = array( + 'controller' => 'posts', + 'action' => 'add' + ); } } @@ -218,7 +228,7 @@ Pour supprimer ces erreurs, nous devons exécuter un fichier de schéma. Dans un shell, exécutez la commande suivante:: ./Console/cake schema create DbAcl - + Ce schéma vous invite à supprimer et créer les tables. Répondez Oui (Yes) à la suppression et création des tables. @@ -246,7 +256,7 @@ code suivant :: class User extends Model { public $belongsTo = array('Group'); public $actsAs = array('Acl' => array('type' => 'requester')); - + public function parentNode() { if (!$this->id && empty($this->data)) { return null; @@ -258,9 +268,8 @@ code suivant :: } if (!$groupId) { return null; - } else { - return array('Group' => array('id' => $groupId)); } + return array('Group' => array('id' => $groupId)); } } @@ -268,7 +277,7 @@ Ensuite dans notre Model ``Group`` ajoutons ce qui suit:: class Group extends Model { public $actsAs = array('Acl' => array('type' => 'requester')); - + public function parentNode() { return null; } diff --git a/fr/views.rst b/fr/views.rst index b1c3003a7a..c579e8c72b 100644 --- a/fr/views.rst +++ b/fr/views.rst @@ -482,7 +482,7 @@ de vues). Dans l'exemple ci-dessus, le fichier echo $helptext; //outputs "Oh, this text is very helpful." La méthode :php:meth:`View::element()` supporte aussi les options pour -l'element. Les options supportés sont 'cache' et 'callbacks'. Un exemple:: +l'element. Les options supportées sont 'cache' et 'callbacks'. Un exemple:: echo $this->element('helpbox', array( "helptext" => "Ceci est passé à l'element comme $helptext", @@ -525,9 +525,8 @@ en reprenant l'exemple du Post:: $posts = $this->paginate(); if ($this->request->is('requested')) { return $posts; - } else { - $this->set('posts', $posts); } + $this->set('posts', $posts); } } @@ -607,7 +606,7 @@ habituelle. Si la vue est rendue pour un controller/action d'un plugin, le nom du plugin va automatiquement être préfixé pour tous les elements utilisés, à moins qu'un autre nom de plugin ne soit présent. Si l'element n'existe pas dans le plugin, il ira voir dans le dossier principal -APP.:: +APP. :: echo $this->element('Contacts.helpbox'); @@ -840,4 +839,4 @@ En savoir plus sur les vues .. meta:: :title lang=fr: Views (Vues) - :keywords lang=fr: logique de vue,fichier csv,élements de réponse,éléments de code,extension par défaut,json,objet flash,remote application,twig,sous-classe,ajax,répondre,soap,fonctionnalité,cakephp,fréquentation,xml,mvc + :keywords lang=fr: logique de vue,fichier csv,éléments de réponse,éléments de code,extension par défaut,json,objet flash,remote application,twig,sous-classe,ajax,répondre,soap,fonctionnalité,cakephp,fréquentation,xml,mvc diff --git a/fr/views/helpers.rst b/fr/views/helpers.rst index b2b6d60436..936bd46fd7 100644 --- a/fr/views/helpers.rst +++ b/fr/views/helpers.rst @@ -308,4 +308,4 @@ Callbacks .. meta:: :title lang=fr: Helpers (Assistants) - :keywords lang=fr: classe php,fonction time,couche de présentation,puissance du processeur,ajax,balise,tableau,fonctionnalité,logique,syntaxe,élements,cakephp,plugins + :keywords lang=fr: classe php,fonction time,couche de présentation,puissance du processeur,ajax,balise,tableau,fonctionnalité,logique,syntaxe,éléments,cakephp,plugins diff --git a/fr/views/themes.rst b/fr/views/themes.rst index 51b459890b..78aaa1579f 100644 --- a/fr/views/themes.rst +++ b/fr/views/themes.rst @@ -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/themed/Navy/css/navy.css``. + ``app/webroot/theme/Navy/css/navy.css``. .. meta:: diff --git a/ja/appendices.rst b/ja/appendices.rst index 37cdfc3b76..b4cd44fa18 100644 --- a/ja/appendices.rst +++ b/ja/appendices.rst @@ -3,8 +3,24 @@ ここでは、2.xで導入された新機能に関する情報と、1.3から2.0への移行手順を解説します。 +2.6 移行ガイド +============== + +.. toctree:: + :maxdepth: 1 + + appendices/2-6-migration-guide + +2.5 移行ガイド +============== + +.. toctree:: + :maxdepth: 1 + + appendices/2-5-migration-guide + 2.4 移行ガイド -=================== +============== .. toctree:: :maxdepth: 1 @@ -61,5 +77,8 @@ .. toctree:: :maxdepth: 1 - appendices/cakephp-development-process appendices/glossary + +.. meta:: + :title lang=ja: Appendices + :keywords lang=ja: migration guide,migration path,new features,glossary diff --git a/ja/appendices/2-0-migration-guide.rst b/ja/appendices/2-0-migration-guide.rst index 9e96a61d44..5bf979339d 100644 --- a/ja/appendices/2-0-migration-guide.rst +++ b/ja/appendices/2-0-migration-guide.rst @@ -79,7 +79,8 @@ PHP 5.3が名前空間のサポートをしていることから、このPHPバ * tmp htaccess (URL リライティング) -=============================================== +============================= + ``app/webroot/.htaccess`` の ``RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]`` の行を ``RewriteRule ^(.*)$ index.php [QSA,L]`` に置き換えてください。 AppController / AppModel / AppHelper / AppShell diff --git a/ja/appendices/2-1-migration-guide.rst b/ja/appendices/2-1-migration-guide.rst index 06cf103eeb..5554564a49 100644 --- a/ja/appendices/2-1-migration-guide.rst +++ b/ja/appendices/2-1-migration-guide.rst @@ -257,7 +257,7 @@ General - 作成されたファイルは、作成された日時のタイムスタンプをもう含んでいません。 ルーティング -============= +============ Router ------ @@ -302,7 +302,7 @@ CakeResponse - :ref:`cake-response-caching` 用の沢山のメソッドが追加されました。 コントローラ -============== +============ Controller ---------- @@ -330,7 +330,7 @@ Controller コンポーネント -=============== +============== AuthComponent ------------- @@ -387,7 +387,7 @@ AclComponent ヘルパー -========= +======== TextHelper ---------- @@ -441,7 +441,7 @@ HtmlHelper ビュー -======= +====== .. - :php:attr:`View::$output` is deprecated. @@ -538,7 +538,7 @@ View blocks ヘルパー -========= +======== New callbacks ------------- @@ -617,7 +617,7 @@ PaginatorHelper テスト -======= +====== .. - Web test runner now displays the PHPUnit version number. diff --git a/ja/appendices/2-2-migration-guide.rst b/ja/appendices/2-2-migration-guide.rst index f6e472d072..257c382692 100644 --- a/ja/appendices/2-2-migration-guide.rst +++ b/ja/appendices/2-2-migration-guide.rst @@ -1,12 +1,12 @@ 2.2移行ガイド -################### +############# CakePHP 2.2 は、2.0/2.1 の API の完全上位互換です。 このページでは、2.2 の変更と改善についてのアウトラインを紹介します。 .. _required-steps-to-upgrade-2-2: アップグレードに必要なステップ -====================================================================== +============================== CakePHP2.2 にアップグレードする際には、 ``app/Config/bootstrap.php`` ファイルに新しい設定項目を追加する必要があります。この追加設定は、2.1.xと同じような振舞いをする設定です :: @@ -40,7 +40,7 @@ CakePHP2.2 にアップグレードする際には、 ``app/Config/bootstrap.php コンソール -====================================================================== +========== I18N extract shell ------------------ @@ -52,7 +52,7 @@ I18N extract shell モデル -====================================================================== +====== - ``Model::_findCount()`` メソッドは、引数に ``$state = 'before'`` と ``$queryData['operation'] = 'count'`` を渡すと、内部でカスタム findメソッドを呼び出します。 多くのケースでは、カスタム findを使ってページネーションのために既に正しいカウント結果を返し、 @@ -62,20 +62,20 @@ I18N extract shell データソース -====================================================================== +============ - Dboデータソースは、ネストトランザクションをサポートするようになりました。 この機能を使う場合は、下記のようにします ``ConnectionManager::getDataSource('default')->useNestedTransactions = true;`` テスト -====================================================================== +====== - Webランナはデバッグ出力時にテスト再実行のリンクを含むようになりました - コントローラのテストケースを自動生成した場合、 :php:class:`ControllerTestCase` クラスを継承するようになります エラーハンドリング -====================================================================== +================== - 例外が繰返し呼び出されたり、エラーページのレンダリング中に例外が発生した場合、 ``error`` レイアウトが使われます。 このレイアウトの中では、ヘルパーの利用をお勧めしません。 @@ -86,13 +86,13 @@ I18N extract shell - ``Error.handler`` と ``Error.consoleHandler`` のハンドラーは、Fatalエラーコード(例えば ``E_ERROR``, ``E_PARSE``, ``E_USER_ERROR``)を受け取ります。 例外 ----------- +---- - :php:class:`NotImplementedException` が追加されました コア -====================================================================== +==== Configure --------- @@ -105,16 +105,16 @@ Configure この機能によって、メソッド呼び出し毎にタイムゾーンを渡す必要がなくなります。 コントローラ -====================================================================== +============ Authコンポーネント ----------------------------------------------------------------------- +------------------ - :php:attr:`AuthComponent::$authenticate` プロパティで定義しているアダプター設定で、 ``contain`` オプションが追加されました。 認証時にユーザレコードを検索する際に、containableのオプションとして利用されます。 Cookieコンポーネント ----------------------------------------------------------------------- +-------------------- - Rijndael暗号を使ってクッキーの暗号化が可能になりました。 この機能は、 `mcrypt `_ のエクステンションが必要です。 @@ -123,13 +123,13 @@ Cookieコンポーネント 詳細は、 :php:meth:`Security::rijndael()` ドキュメントを参照ください ページネーション -====================================================================== +================ - ページング処理にカスタムfindを利用している場合、正確なカウントを返すようになりました。 詳細はモデルの変更の箇所を参照ください ネットワーク -====================================================================== +============ CakeEmail --------- @@ -186,7 +186,7 @@ CakeTime - CakeTimeのメソッドで利用する ``$dateString`` パラメータには、DateTimeオブジェクトが渡せるようになりました ヘルパー -====================================================================== +======== FormHelper ---------- @@ -235,14 +235,14 @@ Router ========== Redis エンジン ----------------------------------------------------------------------- +-------------- 新しいキャッシュエンジン `phpredis extension `_ が追加されました。 設定は Memcacheエンジンに似ています。 キャッシュグループ ----------------------------------------------------------------------- +------------------ キャッシュキーにラベルやタグによるグルーピングが可能になりました。 これにより、グループ単位で一度に同一ラベルのキャッシュを消すなどの処理が簡単になります。 @@ -282,7 +282,7 @@ Redis エンジン - 新しいログエンジン :php:class:`ConsoleLog` が追加されました。 モデルバリデーション -====================================================================== +==================== - ``ModelValidator`` オブジェクトが追加されました。これはモデルのバリデーションのデリゲートとして機能します。 バリデーションは後方互換が保たれます。バリデーションルールを、追加、変更、削除できるリッチなAPIを提供します。 diff --git a/ja/appendices/2-3-migration-guide.rst b/ja/appendices/2-3-migration-guide.rst index fa7753b913..205155150e 100644 --- a/ja/appendices/2-3-migration-guide.rst +++ b/ja/appendices/2-3-migration-guide.rst @@ -1,18 +1,18 @@ 2.3移行ガイド -################### +############# CakePHP 2.3 は、2.2 の API の完全上位互換です。 このページでは、2.3 の変更と改善についてのアウトラインを紹介します。 定数 -========= +==== アプリケーションで :php:const:`CACHE` と :php:const:`LOGS` の定数を簡単に定義できます。 いまは条件付きで CakePHP により定義されています。 キャッシュ -=========== +========== - FileEngine はデフォルトのキャッシュエンジンです。 これまで、たくさんの人々が CLI と Web の双方で正しく APC が動作させようと @@ -24,10 +24,10 @@ CakePHP 2.3 は、2.2 の API の完全上位互換です。 コンポーネント -=============== +============== AuthComponent -------------------- +------------- - ``AuthComponent::$unauthorizedRedirect`` が新規プロパティとして追加されました。 - デフォルトは ``true`` です。認証エラーの場合はリファラ URL へリダイレクトされます。 @@ -78,7 +78,7 @@ CookieComponent コンソール -============ +========== - ``server`` シェルが追加されました。 PHP5.4 の Web サーバ機能を CakePHP アプリケーションで利用することができます。 @@ -104,7 +104,7 @@ L10n コア -====== +==== CakePlugin ---------- @@ -131,7 +131,7 @@ Configure エラー -======== +====== Exceptions ---------- @@ -143,7 +143,7 @@ Exceptions モデル -======== +====== - 全てのコアデータソースとフィクスチャで biginteger タイプをサポートしました。 - MySQL ドライバで ``FULLTEXT`` インデックスをサポートしました。 @@ -167,7 +167,7 @@ Validation ネットワーク -============== +============ SmtpTransport ------------- @@ -210,7 +210,7 @@ HttpSocket ルーティング -============== +============ Router ------ @@ -219,7 +219,7 @@ Router ビュー -========= +====== - MediaView は非推奨となりました。 代わりに :php:class:`CakeResponse` の新しい機能を使うことで同じ結果を得られます。 @@ -247,7 +247,7 @@ Layout ヘルパー -========== +======== - ヘルパーのセッティングに使う ``Helper::$settings`` プロパティが追加されました。 ``Helper::__construct()`` の ``$settings`` パラメータは ``Helper::$settings`` @@ -305,7 +305,7 @@ PaginatorHelper テスト -======== +====== - コアのフィクスチャのデフォルトに ``cake_sessions`` テーブルが追加されました。 フィクスチャのリストに ``core.cake_sessions`` を追加することで利用できます。 @@ -315,7 +315,7 @@ PaginatorHelper ユーティリティ -================ +============== CakeNumber ---------- diff --git a/ja/appendices/2-4-migration-guide.rst b/ja/appendices/2-4-migration-guide.rst index 1011a78219..ef7e0cd0c2 100644 --- a/ja/appendices/2-4-migration-guide.rst +++ b/ja/appendices/2-4-migration-guide.rst @@ -1,11 +1,11 @@ 2.4移行ガイド -################### +############# CakePHP 2.4 は、2.3 の API の完全上位互換です。 このページでは、2.4 の変更と改善についてのアウトラインを紹介します。 コンソール -============ +========== - ターミナルがカラーをサポートしていた場合、notice のメッセージに色が付くようになりました。 - ConsoleShell は非推奨となりました。 @@ -40,7 +40,7 @@ FixtureTask コア -====== +==== Constants --------- @@ -58,7 +58,7 @@ Object コンポーネント -================ +============== AuthComponent ------------- @@ -86,7 +86,7 @@ DbAcl これによりいくつかのデータベースでのパフォーマンスが向上します。 モデル -======== +====== Models ------ @@ -107,7 +107,7 @@ Datasource - Mysql ドライバが SSL オプションをサポートしました。 ビュー -======== +====== JsonView -------- @@ -158,7 +158,7 @@ FormHelper ネットワーク -=============== +============ CakeRequest ----------- @@ -224,7 +224,7 @@ L10n - 定数 ``DEFAULT_LANGUAGE`` は非推奨となり、代わりにコンフィグの ``Config.language`` を利用して下さい。 ログ -======= +==== - ログエンジンのコンフィグに ``Log`` サフィックスは不要になりました。 FileLog エンジンを利用するには ``'engine' => 'File'`` と定義して下さい。 @@ -249,7 +249,7 @@ SyslogLog キャッシュ -============ +========== FileEngine ---------- @@ -258,7 +258,7 @@ FileEngine 自動的にディレクトリを作成します。 ユーティリティ -================ +============== General ------- @@ -306,7 +306,7 @@ Xml エラー -======== +====== ErrorHandler ------------ @@ -318,7 +318,7 @@ ErrorHandler ルーティング -============== +============ Router ------ diff --git a/ja/appendices/2-5-migration-guide.rst b/ja/appendices/2-5-migration-guide.rst new file mode 100644 index 0000000000..2deb8421d8 --- /dev/null +++ b/ja/appendices/2-5-migration-guide.rst @@ -0,0 +1,12 @@ +2.5 Migration Guide +################### + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. diff --git a/ja/appendices/2-6-migration-guide.rst b/ja/appendices/2-6-migration-guide.rst new file mode 100644 index 0000000000..e7babd8a84 --- /dev/null +++ b/ja/appendices/2-6-migration-guide.rst @@ -0,0 +1,12 @@ +2.6 Migration Guide +################### + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. diff --git a/ja/appendices/new-features-in-cakephp-2-1.rst b/ja/appendices/new-features-in-cakephp-2-1.rst new file mode 100644 index 0000000000..b3206b41aa --- /dev/null +++ b/ja/appendices/new-features-in-cakephp-2-1.rst @@ -0,0 +1,12 @@ +New Features in CakePHP 2.1 +########################### + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. diff --git a/ja/cakephp-overview.rst b/ja/cakephp-overview.rst index 29675deacd..3e3f85c07a 100644 --- a/ja/cakephp-overview.rst +++ b/ja/cakephp-overview.rst @@ -13,3 +13,7 @@ Cookbookへようこそ。 cakephp-overview/what-is-cakephp-why-use-it cakephp-overview/understanding-model-view-controller cakephp-overview/where-to-get-help + +.. meta:: + :title lang=ja: CakePHP Overview + :keywords lang=ja: web application framework,model view controller,object oriented programming,piece of cake,cookbook,functionality,xml,cakephp diff --git a/ja/cakephp-overview/understanding-model-view-controller.rst b/ja/cakephp-overview/understanding-model-view-controller.rst index 8a942a93ac..fe2c9e3751 100644 --- a/ja/cakephp-overview/understanding-model-view-controller.rst +++ b/ja/cakephp-overview/understanding-model-view-controller.rst @@ -1,5 +1,5 @@ MVC(*Model-View-Controller*)を理解する -#################################################### +###################################### CakePHPは `MVC `_ diff --git a/ja/cakephp-overview/where-to-get-help.rst b/ja/cakephp-overview/where-to-get-help.rst index 0a90049c11..a6f9ff766b 100644 --- a/ja/cakephp-overview/where-to-get-help.rst +++ b/ja/cakephp-overview/where-to-get-help.rst @@ -2,7 +2,7 @@ ############ 公式CakePHPウェブサイト -========================= +======================= `http://www.cakephp.org `_ @@ -65,7 +65,8 @@ IRC チャンネル .. _cakephp-official-communities: CakePHP 公式コミュニティ -============================ +======================== + CakePHP は Facebook や Google Plus などのよく知られたソーシャルネットワーク上にも 公式グループがあります。 @@ -101,4 +102,5 @@ Where to get Help in your Language French ------ + - `French CakePHP Community `_ diff --git a/ja/console-and-shells.rst b/ja/console-and-shells.rst index c2fcfcff2e..6c59e0eb70 100644 --- a/ja/console-and-shells.rst +++ b/ja/console-and-shells.rst @@ -129,7 +129,7 @@ Windows Vistaもしくは7をお使いの場合は、以下の手順に従って #. これでOkをクリックすれば、 ``cake`` がどこからでも動くようになるはずです。 シェルの作成 -================ +============ 早速コンソールで動くシェルを作ってみましょう。この例ではシンプルなhello world シェルを作ります。お使いのアプリケーションの ``Console/Command`` ディレクトリで @@ -193,7 +193,7 @@ Windows Vistaもしくは7をお使いの場合は、以下の手順に従って 何か他のメソッド名を使う必要があります。 シェルの中でモデルを使う ---------------------------- +------------------------ 自作アプリケーションのビジネスロジックを、シェルユーティリティの中からアクセス する必要があることも少なくありません。CakePHPでは、これはいとも簡単に実現可能 @@ -270,7 +270,7 @@ Windows Vistaもしくは7をお使いの場合は、以下の手順に従って にある機能を上書きするのでアクセスできなくなりますよという警告が出ます。 TaskCollectionによる、必要な場所(on the fly)でのタスクのロード ----------------------------------------------------------------- +-------------------------------------------------------------- タスクコレクションオブジェクトを使って、タスクをその場でロードすることも できます。$tasksで宣言するのとはまた別のやり方です:: @@ -712,7 +712,7 @@ ConsoleOptionParser上のビルダーメソッドと同様に、addOptionsも強 ) )); -パーサの仕様の中では ``definition``, ``arguments``, ``options``, ``epilog`` +パーサの仕様の中では ``definition``, ``arguments``, ``options``, ``epilog`` のためのキーを定義できます。配列形式ビルダーの内部にはサブコマンドは定義 できません。argumentsとoptionsの値は :php:func:`ConsoleOptionParser::addArguments()` と @@ -948,7 +948,7 @@ eメールを送る場合は、CakeEmailクラスでメールを送る際のホ :param string $method: 表示するメッセージ :param integer $newlines: メッセージの後に出力する改行の数 - :param integer $level: このメッセージを表示するべき :ref:`shell-output-level` の最大値 + :param integer $level: このメッセージを表示するべき :ref:`shell-output-level` の最大値 ユーザへの出力を生成するためのもっとも普通のやり方です。 レベルを指定することで、シェルの出力の度合いを制限できます。 @@ -1017,6 +1017,7 @@ eメールを送る場合は、CakeEmailクラスでメールを送る際のホ :maxdepth: 1 console-and-shells/cron-jobs + console-and-shells/completion-shell console-and-shells/code-generation-with-bake console-and-shells/schema-management-and-migrations console-and-shells/i18n-shell @@ -1024,7 +1025,6 @@ eメールを送る場合は、CakeEmailクラスでメールを送る際のホ console-and-shells/testsuite-shell console-and-shells/upgrade-shell - .. meta:: - :title lang=en: Console and Shells - :keywords lang=en: shell scripts,system shell,application classes,background tasks,line script,cron job,request response,system path,acl,new projects,shells,specifics,parameters,i18n,cakephp,directory,maintenance,ideal,applications,mvc + :title lang=ja: Console and Shells + :keywords lang=ja: shell scripts,system shell,application classes,background tasks,line script,cron job,request response,system path,acl,new projects,shells,specifics,parameters,i18n,cakephp,directory,maintenance,ideal,applications,mvc diff --git a/ja/console-and-shells/acl-shell.rst b/ja/console-and-shells/acl-shell.rst index 2861c38bdd..fa7127b2f3 100644 --- a/ja/console-and-shells/acl-shell.rst +++ b/ja/console-and-shells/acl-shell.rst @@ -1,5 +1,5 @@ ACLShell -######### +######## Aclシェル はACLデータベースのレコードの管理や確認をするのに有用です。 多くの場合、コントローラに変更を加えるよりもこちらのほうが使いやすいはずです。 @@ -16,7 +16,7 @@ Aclシェルのサブコマンドはたいてい、 aco/aro ノードへの参 テーブルの準備 -============================== +============== ACLデータベースを使用するにはテーブルを構築する必要があります。 下のコマンドを入力することで構築できます。 :: @@ -24,7 +24,7 @@ ACLデータベースを使用するにはテーブルを構築する必要が ./Console/cake acl initdb ノードの生成と削除 -======================= +================== create サブコマンドあるいは delete サブコマンドを利用し、ノードを新たに生成したり削除することができます。 :: @@ -39,7 +39,7 @@ create サブコマンドあるいは delete サブコマンドを利用し、 Group id = 1のAROノード生成がされるはずです。 アクセス許可と禁止 -===================== +================== ACLで許可を与えるには grant コマンドを使用してください。コマンドを実行すると、特定ARO(およびその子ノード)から特定のACOアクション(およびその子ノード)へのアクセスが許可されるはずです。 :: @@ -52,7 +52,7 @@ ACLで許可を与えるには grant コマンドを使用してください。 禁止の場合も同じです。唯一の違いは grant の代わりに deny を使用することです。 権限のチェック -================= +============== ACLでの権限をチェックするには check コマンドを使用して下さい。 :: @@ -61,7 +61,7 @@ ACLでの権限をチェックするには check コマンドを使用して下 ``success`` または ``not allowed`` のどちらかが出力されるはずです。 ノードツリーを確認する -========================= +====================== view コマンドはAROツリーまたはACOツリーを返します。オプションを付けることにより、リクエストツリーの一部のみを返すこともできます。 :: diff --git a/ja/console-and-shells/completion-shell.rst b/ja/console-and-shells/completion-shell.rst new file mode 100644 index 0000000000..be4ef8b1c4 --- /dev/null +++ b/ja/console-and-shells/completion-shell.rst @@ -0,0 +1,12 @@ +Completion Shell +################ + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. diff --git a/ja/console-and-shells/cron-jobs.rst b/ja/console-and-shells/cron-jobs.rst index 5faf48a818..ebe2ebf365 100644 --- a/ja/console-and-shells/cron-jobs.rst +++ b/ja/console-and-shells/cron-jobs.rst @@ -11,4 +11,4 @@ cronjobとして実行します。 .. meta:: :title lang=ja: cronjobに登録してシェルを実行する - :keywords lang=en: cronjob,bash script,crontab + :keywords lang=ja: cronjob,bash script,crontab diff --git a/ja/console-and-shells/i18n-shell.rst b/ja/console-and-shells/i18n-shell.rst new file mode 100644 index 0000000000..42d5d24308 --- /dev/null +++ b/ja/console-and-shells/i18n-shell.rst @@ -0,0 +1,16 @@ +I18N shell +########## + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: I18N shell + :keywords lang=ja: pot files,locale default,translation tools,message string,app locale,php class,validation,i18n,translations,shell,models diff --git a/ja/console-and-shells/schema-management-and-migrations.rst b/ja/console-and-shells/schema-management-and-migrations.rst index 31fab635a9..c2ef38acf9 100644 --- a/ja/console-and-shells/schema-management-and-migrations.rst +++ b/ja/console-and-shells/schema-management-and-migrations.rst @@ -1,10 +1,10 @@ スキーマの管理と移植 -################################ +#################### スキーマシェルはスキーマオブジェクト、SQLダンプを作成したり、スナップショットを作成、保存する機能を提供します。 スキーマファイルの作成と使用方法 -================================= +================================ 作成したスキーマファイルを使うと、データベースに依存することなく単に別の環境へ移植できます。また、既存のデータベースを使用してスキーマファイルを生成することもできます。 :: @@ -30,7 +30,7 @@ schema.php の中身に沿ってテーブルが再構成されるはずです。 ここで filename.sql にはSQLファイルとして出力したいファイル名を指定します。filename.sql を省略すると、SQLのダンプはコンソールへ出力されますが、ファイルへ出力されることはありません。 Cakeスキーマのコールバック -============================ +========================== スキーマの生成後、アプリケーションを動作させるためテーブルにデータを挿入したいと考えるかもしれません。データもCakeスキーマで保存させることができます。 それぞれのスキーマファイルは ``before($event = array())`` メソッドおよび ``after($event = array())`` メソッドから生成されます。 @@ -74,7 +74,7 @@ beforeアクション内で ``$db->cacheSources = false`` を設定すること } CakePHPのスキーマシェルを使った移植 -==================================== +=================================== データベースを移植すると、スキーマのバージョン管理ができるようになります。 その結果、新機能を開発したとき、データベースに依存することなく簡単に変更内容を配布できるようになります。 @@ -104,7 +104,7 @@ CakePHPのスキーマシェルを使った移植 ``--dry`` コマンドを付けることで、実際にファイルを更新することなく実行結果だけを確認することもできます(dry-run)。 ワークフローの例 -================= +================ スキーマの生成とコミット ------------------------ @@ -158,4 +158,4 @@ CakePHPのスキーマシェルを使った移植 [n] > .. meta:: - :title lang=en: Schema management and migrations + :title lang=ja: Schema management and migrations diff --git a/ja/console-and-shells/testsuite-shell.rst b/ja/console-and-shells/testsuite-shell.rst index 70cb3f3973..2a5a8da82f 100644 --- a/ja/console-and-shells/testsuite-shell.rst +++ b/ja/console-and-shells/testsuite-shell.rst @@ -1,5 +1,5 @@ テストシェル -#################### +############ 一度書き始めた :doc:`テスト ` はテストシェルで実行可能です。 テストシェルの基本的な使用方法については、:ref:`コマンドラインからテストを実行する` をご覧ください。 diff --git a/ja/console-and-shells/upgrade-shell.rst b/ja/console-and-shells/upgrade-shell.rst new file mode 100644 index 0000000000..253fa8dc1e --- /dev/null +++ b/ja/console-and-shells/upgrade-shell.rst @@ -0,0 +1,18 @@ +.. _upgrade-shell: + +Upgrade shell +############# + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: .. _upgrade-shell: + :keywords lang=ja: api docs,shell diff --git a/ja/contents.rst b/ja/contents.rst index df6273f36c..b8de58a0f8 100755 --- a/ja/contents.rst +++ b/ja/contents.rst @@ -21,4 +21,3 @@ appendices .. todolist:: - diff --git a/ja/contributing.rst b/ja/contributing.rst index d1060a2726..d600b7d9c3 100644 --- a/ja/contributing.rst +++ b/ja/contributing.rst @@ -11,4 +11,9 @@ CakePHPの貢献できる方法は数多くあります。 contributing/tickets contributing/code contributing/cakephp-coding-conventions + contributing/backwards-compatibility + contributing/cakephp-development-process +.. meta:: + :title lang=ja: 貢献 + :keywords lang=ja: coding conventions,documentation,maxdepth diff --git a/ja/contributing/backwards-compatibility.rst b/ja/contributing/backwards-compatibility.rst new file mode 100644 index 0000000000..12287afc4f --- /dev/null +++ b/ja/contributing/backwards-compatibility.rst @@ -0,0 +1,12 @@ +Backwards Compatibility Guide +############################# + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. diff --git a/ja/appendices/cakephp-development-process.rst b/ja/contributing/cakephp-development-process.rst similarity index 100% rename from ja/appendices/cakephp-development-process.rst rename to ja/contributing/cakephp-development-process.rst diff --git a/ja/contributing/code.rst b/ja/contributing/code.rst index f657b2534c..a211966b51 100644 --- a/ja/contributing/code.rst +++ b/ja/contributing/code.rst @@ -103,7 +103,7 @@ CakePHPのセットアップを済ませたなら、 ``$test`` メーリングリストで議論、またはGitHubでプルリクエストを送ることができます。 変更のマージ先を選択する --------------------------------- +------------------------ プルリクエストを作成した後にベースブランチを変更することはできないので、 作成する前に正しいベースブランチを選択しているかを確認する必要があります。 diff --git a/ja/contributing/tickets.rst b/ja/contributing/tickets.rst index 1689025c04..81495bbe82 100644 --- a/ja/contributing/tickets.rst +++ b/ja/contributing/tickets.rst @@ -39,6 +39,3 @@ CakePHPのチケットの全ては `GitHub set('title_for_layout', 'This is the page title'); -.. php:method:: render(string $action, string $layout, string $file) +.. php:method:: render(string $view, string $layout) :php:meth:`~Controller::render()` メソッドは各アクションの最後に自動的に呼ばれます。 このメソッドは(:php:meth:`~Controller::set()` を使って渡したデータを使って)すべてのビューロジックを実行し、ビューを :php:attr:`~View::$layout` 内に配置し、エンドユーザーに表示します。 @@ -220,15 +220,14 @@ CakePHPのコントローラは、リクエストのライフサイクル周り } CakePHPは(``$this->autoRender`` にfalseをセットしない限り)アクションの後に自動的に描画メソッドを呼び出しますが、 - コントローラで ``$action`` にアクション名を指定することで、別のビューファイルを指定することが出来ます。 + コントローラで ``$view`` にビュー名を指定することで、別のビューファイルを指定することが出来ます。 - ``$action`` が'/'で始まっていれば、 ``/app/View`` への相対パスでビューまたはエレメントを探そうとします。 + ``$view`` が'/'で始まっていれば、 ``/app/View`` への相対パスでビューまたはエレメントを探そうとします。 これはエレメントを直接描画することができ、Ajax呼び出しではとても有用です。:: // /View/Elements/ajaxreturn.ctpのビューが描画されます $this->render('/Elements/ajaxreturn'); - また3つ目のパラメータ ``$file`` を使って別のビューまたはエレメントを指定することも出来ます。 :php:attr:`~View::$layout` パラメータはビューが描画されるレイアウトの指定が出来ます。 指定したビューを描画する diff --git a/ja/controllers/components.rst b/ja/controllers/components.rst index 1cbabb6fa8..314d1bc002 100644 --- a/ja/controllers/components.rst +++ b/ja/controllers/components.rst @@ -248,5 +248,5 @@ 'status'と'exit'は任意です。 .. meta:: - :title lang=en: Components - :keywords lang=en: array controller,core libraries,authentication request,array name,access control lists,public components,controller code,core components,cookiemonster,login cookie,configuration settings,functionality,logic,sessions,cakephp,doc + :title lang=ja: Components + :keywords lang=ja: array controller,core libraries,authentication request,array name,access control lists,public components,controller code,core components,cookiemonster,login cookie,configuration settings,functionality,logic,sessions,cakephp,doc diff --git a/ja/controllers/pages-controller.rst b/ja/controllers/pages-controller.rst index 0697483163..493f017e41 100644 --- a/ja/controllers/pages-controller.rst +++ b/ja/controllers/pages-controller.rst @@ -19,6 +19,6 @@ CakePHPのコンソールユーティリティ"bake"を使って新しいアプ 将来コアがアップデートされた時に問題を避けるために ``lib/Cake`` フォルダにあるいかなるファイルであっても直接編集しないで下さい。 .. meta:: - :title lang=en: The Pages Controller - :keywords lang=en: pages controller,default controller,lib,cakephp,ships,php,file folder + :title lang=ja: The Pages Controller + :keywords lang=ja: pages controller,default controller,lib,cakephp,ships,php,file folder diff --git a/ja/controllers/request-response.rst b/ja/controllers/request-response.rst index fb6bee4ce6..c0fd515102 100644 --- a/ja/controllers/request-response.rst +++ b/ja/controllers/request-response.rst @@ -631,5 +631,5 @@ CakeResponse API .. meta:: - :title lang=en: Request and Response objects - :keywords lang=en: request controller,request parameters,array indices,purpose index,response objects,domain information,request object,request data,interrogating,params,previous versions,introspection,dispatcher,rout,data structures,arrays,ip address,migration,indexes,cakephp + :title lang=ja: Request and Response objects + :keywords lang=ja: request controller,request parameters,array indices,purpose index,response objects,domain information,request object,request data,interrogating,params,previous versions,introspection,dispatcher,rout,data structures,arrays,ip address,migration,indexes,cakephp diff --git a/ja/controllers/scaffolding.rst b/ja/controllers/scaffolding.rst index e7395e84d0..8b707f9cfc 100644 --- a/ja/controllers/scaffolding.rst +++ b/ja/controllers/scaffolding.rst @@ -104,6 +104,6 @@ Scaffoldビューをカスタマイズする .. meta:: - :title lang=en: Scaffolding - :keywords lang=en: database schemas,loose structure,scaffolding,scaffold,php class,database tables,web developer,downside,web application,logic,developers,cakephp,running,current,delete,database application + :title lang=ja: Scaffolding + :keywords lang=ja: database schemas,loose structure,scaffolding,scaffold,php class,database tables,web developer,downside,web application,logic,developers,cakephp,running,current,delete,database application diff --git a/ja/core-libraries/behaviors/acl.rst b/ja/core-libraries/behaviors/acl.rst new file mode 100644 index 0000000000..1990811532 --- /dev/null +++ b/ja/core-libraries/behaviors/acl.rst @@ -0,0 +1,18 @@ +ACL +### + +.. php:class:: AclBehavior() + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: ACL + :keywords lang=ja: group node,array type,root node,acl system,acl entry,parent child relationships,model reference,php class,aros,group id,aco,aro,user group,alias,fly diff --git a/ja/core-libraries/behaviors/containable.rst b/ja/core-libraries/behaviors/containable.rst new file mode 100644 index 0000000000..a44c3f9128 --- /dev/null +++ b/ja/core-libraries/behaviors/containable.rst @@ -0,0 +1,18 @@ +Containable +########### + +.. php:class:: ContainableBehavior() + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: Containable + :keywords lang=ja: model behavior,author daniel,article content,new addition,wear and tear,array,aaa,email,fly,models diff --git a/ja/core-libraries/behaviors/translate.rst b/ja/core-libraries/behaviors/translate.rst new file mode 100644 index 0000000000..2964b3ce37 --- /dev/null +++ b/ja/core-libraries/behaviors/translate.rst @@ -0,0 +1,18 @@ +Translate +######### + +.. php:class:: TranslateBehavior() + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: Translate + :keywords lang=ja: invalid sql,correct layout,translation table,layout changes,database tables,array,queries,cakephp,models,translate,public name diff --git a/ja/core-libraries/behaviors/tree.rst b/ja/core-libraries/behaviors/tree.rst new file mode 100644 index 0000000000..cf599adeed --- /dev/null +++ b/ja/core-libraries/behaviors/tree.rst @@ -0,0 +1,18 @@ +Tree +#### + +.. php:class:: TreeBehavior() + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: Tree + :keywords lang=ja: auto increment,literal representation,parent id,table categories,database table,hierarchical data,null value,menu system,intricacies,access control,hierarchy,logic,elements,trees diff --git a/ja/core-libraries/caching.rst b/ja/core-libraries/caching.rst new file mode 100644 index 0000000000..c51003feb4 --- /dev/null +++ b/ja/core-libraries/caching.rst @@ -0,0 +1,16 @@ +Caching +####### + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: Caching + :keywords lang=ja: uniform api,xcache,cache engine,cache system,atomic operations,php class,disk storage,static methods,php extension,consistent manner,similar features,apc,memcache,queries,cakephp,elements,servers,memory diff --git a/ja/core-libraries/collections.rst b/ja/core-libraries/collections.rst index 26339f2252..e5c52b149e 100644 --- a/ja/core-libraries/collections.rst +++ b/ja/core-libraries/collections.rst @@ -257,4 +257,4 @@ CakePHPのこのコレクションオブジェクトは、アプリケーショ .. meta:: :title lang=ja: コレクション - :keywords lang=en: array name,loading components,several different kinds,unified api,loading objects,component names,special key,core components,callbacks,prg,callback,alias,fatal error,collections,memory,priority,priorities + :keywords lang=ja: array name,loading components,several different kinds,unified api,loading objects,component names,special key,core components,callbacks,prg,callback,alias,fatal error,collections,memory,priority,priorities diff --git a/ja/core-libraries/components/access-control-lists.rst b/ja/core-libraries/components/access-control-lists.rst index aef8015c1a..e2fb85f27c 100644 --- a/ja/core-libraries/components/access-control-lists.rst +++ b/ja/core-libraries/components/access-control-lists.rst @@ -16,7 +16,7 @@ ACL はどうやって動いているのでしょうか? されます。一方、システムにおいて利用を要求される側(ほとんどの場合は アクションまたはデータ)は Access Control Object(ACO) で表現されます。 これらのエンティティ(実体)は 'オブジェクト' と呼ばれます。なぜなら -要求するオブジェクトは人間ではないこともあるからです。たとえば CakePHP +要求するオブジェクトは人間ではないこともあるからです。たとえば CakePHP にある特定のコントローラーの能力を一部制限した状態で、アプリケーション の他の部品にあるロジックを起動したい場合もあるのではないでしょうか。 コントローラーのアクションから Web サービスやあなたのおばあさんの @@ -289,7 +289,7 @@ ARO/ACO のパーミッションは **/app/Config/acl.ini.php** の中で - allow: この ARO がアクセス権を持つ ACO の名前 - deny: この ARO がアクセスを禁止されるべき ACO の名前 -ACO は INI セクションで指定され、プロパティは allow と deny +ACO は INI セクションで指定され、プロパティは allow と deny のみです。 例として、私たちが作ってきた 指輪の仲間 ARO 構造を見てみると、 @@ -346,7 +346,7 @@ ACO は INI セクションで指定され、プロパティは allow と deny allow = 塩漬け豚 INI メカニズムを通してパーミッションを定義することができたので、 -ACL コンポーネントを使って +ACL コンポーネントを使って :ref:`パーミッションをチェックする説明 ` のところまでスキップできます。もしくは、データベース ACL を使って 同様のパーミッションを定義する方法を引き続き読んでいただいても構いません。 @@ -422,7 +422,7 @@ ACO と ARO ツリーを使えるようにします。 ``app/Config/Schema/db_acl.sql`` という SQL ファイルを使うことも できなくはないですが、これは決して楽しいものではありません。 -ここまで終わったら、あなたのシステム上に acos, aros, aros\_acos +ここまで終わったら、あなたのシステム上に acos, aros, aros\_acos (2つのツリーの間でパーミッション情報を生成するための JOIN テーブル)という3つの新しいテーブルができます。 @@ -465,7 +465,7 @@ ACL オブジェクトの ``model`` と ``foreign_key`` フィールドを使う オブジェクトをそれに対応するモデルのレコードに(もしそのレコードが 存在すれば)リンクすることができます。たとえば、データベースの中で 多くの ARO にはそれぞれに対応する User レコードがあるとします。 -モデルのアソシエーションが正確に設定してあれば、ARO の +モデルのアソシエーションが正確に設定してあれば、ARO の ``foreign_key`` を User の ID にセットすることで、ARO と User の 情報を単一の User モデルの find() にリンクすることができます。 反対に、特定のブログのポストやレシピに対する編集操作を管理した @@ -483,7 +483,7 @@ ACL オブジェクトの ``parent_id`` を使ってツリー構造に書き込 生成します。 新しい ACL オブジェクトを生成する前に、それぞれのクラスをロード -しておく必要があります。もっとも簡単なのは、コントローラーの +しておく必要があります。もっとも簡単なのは、コントローラーの $components 配列で CakePHP の ACL コンポーネントをインクルード する方法です: @@ -565,7 +565,7 @@ $components 配列で CakePHP の ACL コンポーネントをインクルード レベルノードがあることまでは少なくとも確認できましたね。これらの グループ配下に特定のユーザ ARO を入れることで、ARO の子ノードを 追加してみましょう。Middle Earth(中つ国)のよい市民たちはみんな -私達の新しいシステムのアカウントを持っていますので、これらの ARO +私達の新しいシステムのアカウントを持っていますので、これらの ARO をデータベース内で特定のモデルのレコードに紐付けます。 @@ -776,7 +776,7 @@ ARO を特定しています。 3つ目のパラメーがありますね。これはすべての CakePHP の ACO に 組み込まれている便利なアクションです。このパラメータのデフォルト のオプションは ``create``, ``read``, ``update``, ``delete`` ですが、 -``aros_acos`` データベーステーブル(実際は、たとえば ``_admin`` +``aros_acos`` データベーステーブル(実際は、たとえば ``_admin`` のように接頭辞がつきます)にカラムを追加して、それをデフォルト値と 合わせて指定することも可能です。 @@ -862,5 +862,5 @@ AclComponent を使って自分たちで作った ACO や ARO の間でチェッ リダイレクトしたりということが可能です。 .. meta:: - :title lang=en: Access Control Lists - :keywords lang=en: fantasy novel,access control list,request objects,online diary,request object,acls,adventurers,gandalf,lingo,web service,computer system,grandma,lord of the rings,entities,assets,logic,cakephp,stuff,control objects,control object + :title lang=ja: Access Control Lists + :keywords lang=ja: fantasy novel,access control list,request objects,online diary,request object,acls,adventurers,gandalf,lingo,web service,computer system,grandma,lord of the rings,entities,assets,logic,cakephp,stuff,control objects,control object diff --git a/ja/core-libraries/components/authentication.rst b/ja/core-libraries/components/authentication.rst index 4251bec4dd..a456e02d64 100644 --- a/ja/core-libraries/components/authentication.rst +++ b/ja/core-libraries/components/authentication.rst @@ -53,7 +53,7 @@ CakePHP には、あなたのアプリケーション内に保管されている By default ``AuthComponent`` uses ``FormAuthenticate``. 認証タイプの選択 -------------------------------- +---------------- .. Choosing an Authentication type @@ -85,7 +85,7 @@ Basic認証では、ユーザ名とパスワードは平文のテキストとし 認証を設定するためのハンドラ ------------------------------------ +---------------------------- .. Configuring Authentication handlers @@ -240,7 +240,7 @@ Auth の他の設定キー(authError や loginAction など)を authenticate や to ``md5($settings['realm'])`` ユーザの識別とログイン -------------------------------------- +---------------------- .. Identifying users and logging them in @@ -293,7 +293,7 @@ Auth の他の設定キー(authError や loginAction など)を authenticate や whereas in 1.3 ``$this->Auth->login($this->data)`` would try to identify the user first and only log in when successful. ログインでのダイジェスト認証・Basic認証の利用 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. Using Digest and Basic Authentication for logging in @@ -325,7 +325,7 @@ Basicおよびダイジェスト認証は初期POSTやフォームを必要と will cause an error prior to 2.4. カスタム認証オブジェクトの作成 --------------------------------------- +------------------------------ .. Creating Custom Authentication objects @@ -368,7 +368,7 @@ Basicおよびダイジェスト認証は初期POSTやフォームを必要と See the sections on basic and digest authentication below for more information. カスタム認証オブジェクトの利用 ------------------------------------ +------------------------------ .. Using custom authentication objects @@ -384,7 +384,7 @@ Basicおよびダイジェスト認証は初期POSTやフォームを必要と Once you've created your custom authentication object, you can use them by including them in AuthComponents authenticate array:: ステートレス認証システムの作成 ------------------------------------------ +------------------------------ .. Creating stateless authentication systems @@ -622,7 +622,7 @@ Blowfish password hasher は、任意の認証クラスで使用することが to do with specify ``passwordHasher`` setting for the authenticating object:: ダイジェスト認証のパスワードのハッシュ化 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. Hashing passwords for digest authentication @@ -692,7 +692,7 @@ Blowfish password hasher は、任意の認証クラスで使用することが the following:: 手動でのユーザログイン -------------------------- +---------------------- .. Manually logging users in @@ -928,7 +928,7 @@ all キーは ``AuthComponent::ALL`` と記述することもできます:: Once you've created your custom authorize object, you can use them by including them in your AuthComponent's authorize array:: 権限判定を使用しない ----------------------- +-------------------- .. Using no authorization @@ -990,7 +990,7 @@ AuthComponent は悲観的であり、デフォルトではアクセスを拒否 You can also supply an array containing all the action names. 権限判定が必要なアクションの作成 ------------------------------------- +-------------------------------- .. Making actions require authorization @@ -1243,12 +1243,12 @@ AuthComponent は CakePHP に組み込み済みの権限判定・認証メカニ .. php:attr:: unauthorizedRedirect 許可されていないアクセスに対する処理を制御します。 - デフォルトでは、許可されていないユーザーはリファラの URL か ``AuthComponent::$loginAction`` か、もしくは '/' にリダイレクトされます。 + デフォルトでは、許可されていないユーザーはリファラの URL か ``AuthComponent::$loginRedirect`` か、もしくは '/' にリダイレクトされます。 false をセットした場合は、リダイレクトする代わりに ForbiddenException が送出されます。 .. Controls handling of unauthorized access. By default unauthorized user is - redirected to the referrer url or ``AuthComponent::$loginAction`` or '/'. + redirected to the referrer url or ``AuthComponent::$loginRedirect`` or '/'. If set to false a ForbiddenException exception is thrown instead of redirecting. .. php:attr:: request @@ -1446,5 +1446,5 @@ AuthComponent は CakePHP に組み込み済みの権限判定・認証メカニ .. meta:: - :title lang=en: Authentication - :keywords lang=en: authentication handlers,array php,basic authentication,web application,different ways,credentials,exceptions,cakephp,logging + :title lang=ja: Authentication + :keywords lang=ja: authentication handlers,array php,basic authentication,web application,different ways,credentials,exceptions,cakephp,logging diff --git a/ja/core-libraries/components/cookie.rst b/ja/core-libraries/components/cookie.rst index 463073e72f..785d2c1e9f 100644 --- a/ja/core-libraries/components/cookie.rst +++ b/ja/core-libraries/components/cookie.rst @@ -154,5 +154,5 @@ CookieComponent は Cookie を使った動作をするためにいくつかの .. meta:: - :title lang=en: Cookie - :keywords lang=en: array controller,php setcookie,cookie string,controller setup,string domain,default description,string name,session cookie,integers,variables,domain name,null + :title lang=ja: Cookie + :keywords lang=ja: array controller,php setcookie,cookie string,controller setup,string domain,default description,string name,session cookie,integers,variables,domain name,null diff --git a/ja/core-libraries/components/email.rst b/ja/core-libraries/components/email.rst new file mode 100644 index 0000000000..fb6ce96da6 --- /dev/null +++ b/ja/core-libraries/components/email.rst @@ -0,0 +1,16 @@ +EmailComponent +############## + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: EmailComponent + :keywords lang=ja: component subject,component delivery,php class,template layout,custom headers,template method,filenames,alias,lib,array,email,migration,attachments,elements,sun diff --git a/ja/core-libraries/components/pagination.rst b/ja/core-libraries/components/pagination.rst new file mode 100644 index 0000000000..1161eeacab --- /dev/null +++ b/ja/core-libraries/components/pagination.rst @@ -0,0 +1,378 @@ +ページ制御 +########## + +.. php:class:: PaginatorComponent(ComponentCollection $collection, array $settings = array()) + +柔軟で、かつユーザーにやさしいWebアプリを作ろうとすると、 +まず障害となるのが直感的なユーザーインターフェースのデザインです。 +多くのアプリケーションは、そのサイズと複雑さが加速度的に増加してきており、 +デザイナーとプログラマーは何十万ものレコードをどうやって表示すればいいか、 +お互いに頭を抱えています。リファクタリングするには時間がかかりますし、 +パフォーマンスやユーザーの満足度が損なわれる場合があります。 + +大量のレコードをページごとに表示するのは、 +どのアプリケーションでも常にネックになる部分であり、 +開発者の頭を悩ませて来ました。CakePHP では、 +データのページ制御のための簡単かつ簡潔な方法を提供することで、 +開発者の負担を軽減します。 + +CakePHP におけるページ制御機構は、 +ページに対応したクエリーをより簡単に構築するためのもので、 +コントローラーの中のコンポーネントとして提供されます。 +さらに、ページ制御用のリンクとボタンの生成を簡単に行うため、 +ビューの中の :php:class:`PaginatorHelper` が使われます。 + +クエリーのセットアップ +====================== + +まずコントローラーにおいて、 +``$paginate`` コントローラー変数の中でクエリー条件の定義を行いますが、 +これがページ制御機構のデフォルトとして使われます。 +ここで指定した条件は、あなたのページ制御機能の基本部分になります。 +それらに対して、さらにソートやレコードの取得件数の制限、 +URL から受け取ったページパラメータなどを追加していきます。なお order キーを、 +以下の要領で配列として定義しておく必要があるので注意してください:: + + class PostsController extends AppController { + + public $components = array('Paginator'); + + public $paginate = array( + 'limit' => 25, + 'order' => array( + 'Post.title' => 'asc' + ) + ); + } + +``fields`` のような、上記以外の :php:meth:`~Model::find()` のオプションを +入れることもできます:: + + class PostsController extends AppController { + + public $components = array('Paginator'); + + public $paginate = array( + 'fields' => array('Post.id', 'Post.created'), + 'limit' => 25, + 'order' => array( + 'Post.title' => 'asc' + ) + ); + } + +``$paginate`` 配列に含めることができるその他のキーは、 ``Model->find('all')`` +メソッドのパラメータに似ています。つまり以下のものです: ``conditions``, +``fields``, ``order``, ``limit``, ``page``, ``contain``, ``joins``, +``recursive`` 。前述のキーに加えて、追加したキーがそのままモデルの +find() メソッドに渡されます。これにより、ページ制御に対してとても簡単に +:php:class:`ContainableBehavior` のようなビヘイビアを使えます:: + + class RecipesController extends AppController { + + public $components = array('Paginator'); + + public $paginate = array( + 'limit' => 25, + 'contain' => array('Article') + ); + } + +標準的なページ制御用の値を定義する以外にも、 +コントローラーの中でひとつ以上のページ制御用のデフォルト値を定義できます。 +単に設定したいモデルの後で、配列のキーに名前をつけるだけです:: + + class PostsController extends AppController { + + public $paginate = array( + 'Post' => array (...), + 'Author' => array (...) + ); + } + +``Post`` と ``Author`` キーの値としては、 +あるモデル/キーを ``$paginate`` 配列が保持できる範囲で、 +すべてのプロパティを含むことができます。 + +いったん ``$paginate`` 変数が定義されると、コントローラーのアクションから +:php:class:`PaginatorComponent` の ``paginate()`` メソッドが使えるように +なります。このメソッドはモデルによる ``find()`` の結果を返します。 +またリクエストオブジェクトに付加される追加パラメータをいくつかセットします。 +追加情報は ``$this->request->params['paging']`` にセットされ、 +これを使って :php:class:`PaginatorHelper` がリンクを生成します。 +さらに :php:meth:`PaginatorComponent::paginate()` は、 +あなたのコントローラーの中のヘルパーのリストに :php:class:`PaginatorHelper` +がまだ入っていなければ追加します:: + + public function list_recipes() { + $this->Paginator->settings = $this->paginate; + + // findAll() に似ていますが、ページ制御された結果を返します。 + $data = $this->Paginator->paginate('Recipe'); + $this->set('data', $data); + } + +``paginate()`` 関数の第二パラメータとして検索条件を渡すことにより、 +結果をフィルターできます:: + + $data = $this->Paginator->paginate( + 'Recipe', + array('Recipe.title LIKE' => 'a%') + ); + +あなたのアクションの中に、 ``conditions`` +を始めとするページ制御用設定の配列をセットすることもできます:: + + public function list_recipes() { + $this->Paginator->settings = array( + 'conditions' => array('Recipe.title LIKE' => 'a%'), + 'limit' => 10 + ); + $data = $this->Paginator->paginate('Recipe'); + $this->set(compact('data')); + } + +カスタムクエリーを使ったページ制御 +================================== + +もし標準の find +オプションではデータを表示するために必要なクエリーを作れない場合、 +いくつか別のやり方があります。 +まず :ref:`custom find type ` が使えます。さらに、 +``paginate()`` と ``paginateCount()`` メソッドを自分のモデルで実装したり、 +あなたのモデルに接続されるビヘイビアの中でそれらをインクルードしたりできます。 +``paginate`` や ``paginateCount`` を実装するビヘイビアは、 +後述するメソッドのシグネチャーを、 +通常の追加の先頭パラメータである ``$model`` を使って実装しなければなりません:: + + // ビヘイビア上に実装された paginate と paginateCount + public function paginate(Model $model, $conditions, $fields, $order, $limit, + $page = 1, $recursive = null, $extra = array()) { + // メソッドの中身 + } + + public function paginateCount(Model $model, $conditions = null, $recursive = 0, + $extra = array()) { + // メソッドの中身 + } + +paginate() と paginateCount() を自前で実装しなければならないような +状況というのはめったにないはずです。 +コアのモデルのメソッドやカスタムファインダーを使うだけでは、 +どうしても目指すゴールに辿りつけないのかどうかを確認してください。 +カスタム find タイプでページ制御する場合、 ``0`` 番目の要素をセットするか、 +もしくは CakePHP 2.3 であれば ``findType`` キーを設定してください:: + + public $paginate = array( + 'popular' + ); + +0 番目のインデックスを管理するのは難しいため、2.3 では ``findType`` +オプションが追加されました:: + + public $paginate = array( + 'findType' => 'popular' + ); + +``paginate()`` メソッドでは、 +以下のメソッドシグネチャーを実装しなければなりません。 +データを取得したいモデルの中で、 +あなたのメソッドやロジックでこれをオーバーライドします。:: + + + /** + * オーバーライドされた paginate メソッド + * - week, away_team_id, home_team_id でグルーピングしている + */ + 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') + ); + } + +さらに、コアの ``paginateCount()`` をオーバーライドする必要があります。 +このメソッドは ``Model::find('count')`` と同じ引数を期待しています。 +以下の例では PostgreSQL 固有の機能を利用していますので、 +お使いのデータベースに従って調整してください。:: + + /** + * オーバーライドされた 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"; + $this->recursive = $recursive; + $results = $this->query($sql); + return count($results); + } + +観察力の鋭い方なら気付くと思いますが、私たちが定義している paginate +メソッドは、実際には必要なものではありませんでした。 +単にコントローラーの ``$paginate`` クラス変数に、 +そのキーワードを追加してやるだけでOKです。:: + + /** + * GROUP BY 句を追加します + */ + public $paginate = array( + 'MyModel' => array( + 'limit' => 20, + 'order' => array('week' => 'desc'), + 'group' => array('week', 'home_team_id', 'away_team_id') + ) + ); + /** + * もしくは、アクションの中でその場で実行できます + */ + public function index() { + $this->Paginator->settings = array( + 'MyModel' => array( + 'limit' => 20, + 'order' => array('week' => 'desc'), + 'group' => array('week', 'home_team_id', 'away_team_id') + ) + ); + } + +CakePHP 2.0 では、グループ句を使う場合でも、もはや ``paginateCount()`` +を実装する必要はなくなりました。コアの ``find('count')`` +が全体の行数を正確に算出してくれます。 + +どの項目でソートするのかを制御する +================================== + +デフォルトでは、ソートはモデルのどの列に対しても行えます。 +これは、インデックスが張られていない列や、 +計算コストの高い仮想フィールドでもソートキーにできるので、 +必ずしも望ましい状態ではないかもしれません。そういった場合、 +``PaginatorComponent::paginate()`` の第三パラメータを使って、 +ソート可能な列を制限することができます。:: + + $this->Paginator->paginate('Post', array(), array('title', 'slug')); + +これは、title と slug 列に対してのみソートを許可します。 +これ以外の項目に対するソート設定は無視されます。 + +一度に取り出せる最大行数を制限する +================================== + +一度に取り出せる結果の行数は ``limit`` パラメータで制御できます。 +ただこれだと、ユーザが1回のページ制御で全行数を取り出せてしまうので、 +一般的にはあまり好ましくありません。CakePHP のデフォルトでは、 +一度に取り出せる行数を 100 に制限しています。 +このデフォルト値があなたのアプリケーションで適切ではない場合、 +ページ制御のオプションの一部としてこの値を調整できます。:: + + public $paginate = array( + // ここに他のキーもあります。 + 'maxLimit' => 10 + ); + +リスクストの limit パラメータがこの値より大きい場合、 +``maxLimit`` の値に制限されます。 + + +.. _pagination-with-get: + +GET パラメータを使ったページ制御 +================================ + +CakePHP の過去のバージョンでは、ページ制御用リンクの生成は、 +名前付きパラメータ利用時に限られていました。ちなみに、ページが GET +パラメータでリクエストされた場合でも、今でもページ制御は動作します。 +2.0 で、私達はページ制御用パラメータをより細かく制御でき、 +かつ一貫性を保てるように改善しようと決めました。現在は、コンポーネントの中で、 +クエリー文字列と名前付きパラメータのどちらを使うかを選べます。 +入ってくるリクエストは選択されたタイプとしてのみ受け付けられ、 +:php:class:`PaginatorHelper` +が選択されたパラメータタイプでリンクを生成します。:: + + public $paginate = array( + 'paramType' => 'querystring' + ); + +上記の例ではクエリー文字列によるパースとリンク生成を有効にします。 +PaginatorComponent の ``$settings`` プロパティで変更することもできます。:: + + $this->Paginator->settings['paramType'] = 'querystring'; + +デフォルトでは、すべての一般的なページパラメータは GET 引数に変換されます。 + +.. note:: + + 存在しないプロパティへの値の代入により、 + 例外が発生するような状況になる場合があります:: + + $this->paginate['limit'] = 10; + + とやると、 "Notice: Indirect modification of overloaded property $paginate has no effect." + という例外が発生します。プロパティに対して初期値を代入しておくことで、 + この問題を防げます。:: + + $this->paginate = array(); + $this->paginate['limit'] = 10; + // または + $this->paginate = array('limit' => 10); + + もしくは、単にコントローラークラスでプロパティを宣言するのでもOKです:: + + class PostsController { + public $paginate = array(); + } + + または、 ``$this->Paginator->settings = array('limit' => 10);`` + を使います。 + + PaginatorComponent の ``$settings`` プロパティを変更したい場合は、 + 必ず $components 配列に Paginator コンポーネントを追加しておいてください。 + これらのいずれかにより、notice エラーの発生を防げます。 + +範囲外のページへのアクセス +========================== + +2.3 の時点では、存在しないページ、すなわちリクエストされたページ番号が +全ページ数より大きいページにアクセスしようとすると、 +PaginatorComponent が `NotFoundException` を投げます。 + +その場合、通常のエラーページを生成することもできますが、 +try ~ catch ブロックで `NotFoundException` を捕捉して、 +適切なアクションを起こさせることも可能です:: + + public function index() { + try { + $this->Paginator->paginate(); + } catch (NotFoundException $e) { + // 最初もしくは最後のページに飛ばす、などの何かを行う。 + // リクエスト情報は $this->request->params['paging'] に + // 入っています。 + } + } + +AJAX によるページ制御 +===================== + +ページ制御と AJAX 機能を組み合わせるのはとても簡単です。 +:php:class:`JsHelper` と :php:class:`RequestHandlerComponent` を使えば、 +AJAX 対応ページ制御を簡単にあなたのアプリケーションに組み込めます。 +詳細は :ref:`ajax-pagination` を参照してください。 + +ビューにおけるページ制御 +======================== + +ページ制御のナビゲーションリンクを作る方法については、 +:php:class:`PaginatorHelper` のドキュメントを参照してください。 + +.. meta:: + :title lang=ja: Pagination + :keywords lang=ja: order array,query conditions,php class,web applications,headaches,obstacles,complexity,programmers,parameters,paginate,designers,cakephp,satisfaction,developers diff --git a/ja/core-libraries/components/request-handling.rst b/ja/core-libraries/components/request-handling.rst index 7f6b73eb70..4f8f16a4c5 100644 --- a/ja/core-libraries/components/request-handling.rst +++ b/ja/core-libraries/components/request-handling.rst @@ -178,7 +178,7 @@ Obtaining Additional Client Information クライアントについての追加情報を取得する -=========================================== +======================================== .. php:method:: getAjaxVersion() @@ -193,7 +193,7 @@ Automatically decoding request data リクエストデータの自動デコード -=================================== +============================== .. php:method:: addInputType($type, $handler) @@ -248,7 +248,7 @@ Responding To Requests リクエストへの応答 -====================== +================== .. In addition to request detection RequestHandler also provides easy @@ -382,7 +382,7 @@ Taking advantage of HTTP cache validation HTTP キャッシュバリデーションの活用 -========================================= +=================================== .. versionadded:: 2.1 @@ -425,7 +425,7 @@ HTTP キャッシュバリデーションモデルは、クライアントへの )); カスタム ViewClasses の利用 -============================= +=========================== .. versionadded:: 2.3 diff --git a/ja/core-libraries/components/security-component.rst b/ja/core-libraries/components/security-component.rst new file mode 100644 index 0000000000..0a173af885 --- /dev/null +++ b/ja/core-libraries/components/security-component.rst @@ -0,0 +1,18 @@ +Security +######## + +.. php:class:: SecurityComponent(ComponentCollection $collection, array $settings = array()) + +.. note:: + The documentation is not currently supported in ja language for this page. + + Please feel free to send us a pull request on + `Github `_ or use the **Improve This Doc** + button to directly propose your changes. + + You can referer to the english version in the select top menu to have + information about this page's topic. + +.. meta:: + :title lang=ja: Security + :keywords lang=ja: configurable parameters,security component,configuration parameters,invalid request,protection features,tighter security,holing,php class,meth,404 error,period of inactivity,csrf,array,submission,security class,disable security,unlockActions diff --git a/ja/core-libraries/components/sessions.rst b/ja/core-libraries/components/sessions.rst index 027a008ff6..918c4e396d 100644 --- a/ja/core-libraries/components/sessions.rst +++ b/ja/core-libraries/components/sessions.rst @@ -23,7 +23,7 @@ CakePHP ではセッションの複数の方法で設定を行えます。 Interacting with Session data セッションデータを伝達する -============================= +========================== .. The Session component is used to interact with session information. @@ -137,7 +137,7 @@ CakePHP ではセッションの複数の方法で設定を行えます。 .. _creating-notification-messages: 通知メッセージの作成 -============================== +==================== .. php:method:: setFlash(string $message, string $element = 'default', array $params = array(), string $key = 'flash') diff --git a/ja/core-libraries/events.rst b/ja/core-libraries/events.rst index 4bc634af04..7a7efc9f37 100644 --- a/ja/core-libraries/events.rst +++ b/ja/core-libraries/events.rst @@ -820,5 +820,5 @@ PHPが呼び出し可能な関数として扱うことができる何かです .. meta:: - :title lang=en: Events system - :keywords lang=en: events, dispatch, decoupling, cakephp, callbacks, triggers, hooks, php + :title lang=ja: Events system + :keywords lang=ja: events, dispatch, decoupling, cakephp, callbacks, triggers, hooks, php diff --git a/ja/core-libraries/global-constants-and-functions.rst b/ja/core-libraries/global-constants-and-functions.rst index 8bd692ec60..d516ebafe6 100644 --- a/ja/core-libraries/global-constants-and-functions.rst +++ b/ja/core-libraries/global-constants-and-functions.rst @@ -90,7 +90,7 @@ CakePHPを使った皆さんの日常のほとんどの業務ではコアクラ .. Useful when internationalizing a plugin: プラグインを国際化するときに便利です: - ``echo __d('PluginName', 'This is my plugin');`` + ``echo __d('plugin_name', 'This is my plugin');`` .. php:function:: __dc(string $domain, string $msg, integer $category, mixed $args = null) @@ -508,5 +508,5 @@ CakePHPを使った皆さんの日常のほとんどの業務ではコアクラ .. meta:: - :title lang=en: Global Constants and Functions - :keywords lang=en: internationalization and localization,global constants,example config,array php,convenience functions,core libraries,component classes,optional number,global functions,string string,core classes,format strings,unread messages,placeholders,useful functions,sprintf,arrays,parameters,existence,translations + :title lang=ja: Global Constants and Functions + :keywords lang=ja: internationalization and localization,global constants,example config,array php,convenience functions,core libraries,component classes,optional number,global functions,string string,core classes,format strings,unread messages,placeholders,useful functions,sprintf,arrays,parameters,existence,translations diff --git a/ja/core-libraries/helpers/cache.rst b/ja/core-libraries/helpers/cache.rst index e128d065db..8d754545a1 100644 --- a/ja/core-libraries/helpers/cache.rst +++ b/ja/core-libraries/helpers/cache.rst @@ -1,5 +1,5 @@ キャッシュヘルパー -######################### +################## .. php:class:: CacheHelper(View $view, array $settings = array()) @@ -18,7 +18,7 @@ Cake がキャッシュされたビューを見つけられない場合、ある 使い方 -================ +====== キャッシュヘルパーを使用する前に2つのステップをこなさなければなりません。 まず一つ目に ``APP/Config/core.php`` にある Configure write で ``Cache.check`` をコールしている部分のコメントを外して下さい。 @@ -33,7 +33,7 @@ Cake がキャッシュされたビューを見つけられない場合、ある } 環境設定オプションを追加する --------------------------------- +---------------------------- キャッシュヘルパーはいくつかの環境設定オプションを持っていて挙動の調整を行うことができます。 この調整は ``$cacheAction`` 内で完結します。 @@ -74,7 +74,7 @@ ArticlesController の例を使用して、キャッシュする必要のある セットされた ``callbacks => true`` 汎用的なキャッシング処理に負けてしまいます。それがデフォルトで true にならない理由です。 ビューでキャッシュされない内容をマークする -=========================================== +========================================== 場合によっては、*完全に* ビューをキャッシュしたくないことがあります。 たとえば、ユーザがログインしていようがゲストとしてサイトを閲覧していようが、ページの一部を確実に異なる表示にしたい場合です。\ @@ -102,7 +102,7 @@ ArticlesController の例を使用して、キャッシュする必要のある シリアライズできないコンテンツ(SimpleXML,リソースハンドル,あるいはクロージャ)がビューの変数を含んでいる場合、ビューキャッシングを使用出来るようにしてはいけません。 キャッシュをクリアする -============================== +====================== キャッシュされたビューで使用されたモデルが変更されると、Cake はキャッシュされたビューをクリアすることを覚えておくのは重要です。 たとえば、キャッシュされたビューが Post モデルから取得したデータを使用していて、Post で INSERT, UPDATE, DELETE クエリーが生成されると、 diff --git a/ja/core-libraries/helpers/form.rst b/ja/core-libraries/helpers/form.rst new file mode 100644 index 0000000000..fb3047170a --- /dev/null +++ b/ja/core-libraries/helpers/form.rst @@ -0,0 +1,1784 @@ +FormHelper +########## + +.. php:class:: FormHelper(View $view, array $settings = array()) + +FormHelperはフォーム作成時の力作業のほとんどを代行してくれます。 +フォームをすばやく作成する機能に特化して、バリデーション +(入力値の妥当性検査)や部品の配置、レイアウトを効率化します。 +FormHelperはまた柔軟でもあります。 +通常は組み込まれた規則に沿ってほとんどのことをやってくれますが、 +特定のメソッドを使って必要な機能だけを使うこともできます。 + +フォームの作成 +============== + +FormHelperの利点を活用するために最初に使うメソッドは ``create()`` +です。この特別なメソッドはフォームの開始タグを出力します。 + + +.. php:method:: create(string $model = null, array $options = array()) + + パラメータはすべてオプションです。パラメータなしで呼ばれた場合、 + 現在のURLを通して現在のコントローラーにサブミット(提出)するための + フォームを作ろうとしているものとみなします。フォームをサブミット + するためのデフォルトのメソッドはPOSTです。フォームの要素は DOM ID + とともに返されますが、このIDはモデル名とコントローラーのアクション + 名をキャメルケースにしたものとして生成されます。たとえば + UsersControllerビューの中から ``create()`` を呼んだ場合、 + 以下のように描画されたビューが得られます: + + .. code-block:: html + +
+ + .. note:: + + ``$model`` に対して ``false`` を渡すこともできます。こうすると、 + フォームデータは( ``$this->request->data['Model']`` サブ配列 + の中ではなく) ``$this->request->data`` 配列の中に格納されます。 + これは、データベースの中身とは関係ないちょっとしたフォームを + 作る時に便利です。 + + さらに ``create()`` メソッドでは、パラメータを使っていろいろな + カスタマイズができます。まず、モデル名の指定ができます。フォームに + モデル名を指定すると、フォームの *中身* を作っていることになります。 + すべての項目は(特に指定されない限り)そのモデルに所属するものと + 見なされ、そのモデルから参照されるモデルについても、そのフォームに + 関連付けられます。モデルを指定しない場合、現在のコントローラー + のデフォルトモデルを使っていると見なされます:: + + + // たとえば /recipes/add にいるとして、 + echo $this->Form->create('Recipe'); + + 出力: + + .. code-block:: php + + + + これはフォームデータをRecipesControllerの ``add()`` アクションに + POSTします。なお、これと同じロジックを使って編集フォームを作ることも + できます。FormHelperはフォームの追加や編集のどちらなのかを自動的に + 検出し、 ``$this->request->data`` を適切に利用します。もし + ``$this->request->data`` にフォームのモデルに関連する名前がついた + 配列要素が含まれていて、かつその配列に含まれるモデルのプライマリキー + の値が空でなければ、FormHelperはそのレコードの編集用フォームを作成 + します。たとえば http://site.com/recipes/edit/5 にアクセスすると、 + 以下の様な出力が得られます:: + + // Controller/RecipesController.php: + public function edit($id = null) { + if (empty($this->request->data)) { + $this->request->data = $this->Recipe->findById($id); + } else { + // ここに保存のためのロジックを置く + } + } + + // View/Recipes/edit.ctp: + // $this->request->data['Recipe']['id'] = 5 + // になるので編集フォームを作る + Form->create('Recipe'); ?> + + 出力: + + .. code-block:: html + + + + + .. note:: + + これは編集フォームなので hidden の入力項目が生成され、 + デフォルトの HTTP メソッドは上書きされます。 + + プラグイン内のモデル用にフォームを作る場合は、常に :term:`plugin syntax` + を使います。これで以下のように適切なフォームが生成されます:: + + echo $this->Form->create('ContactManager.Contact'); + + 配列 ``$options`` にはフォーム設定に関するほとんどのことを指定できます。 + この特別な配列には、フォームタグを作成する際のやり方に影響する、 + さまざまなキーバリューの組合せを数多く指定可能です。 + + .. versionchanged:: 2.0 + すべてのフォームに関するデフォルトの URL は、現在の URL の後ろに + 渡されたパラメータ、名前付きパラメータ、問合せ文字列をつけたものに + なりました。このデフォルトを変更するには、 ``$this->Form->create()`` + の第二引数の中に ``$options['url']`` を指定します。 + +create()のオプション +-------------------- + +create()には多くのオプションがあります: + +* ``$options['type']`` このキーは生成するフォームのタイプを指定します。 + 有効な値は 'post', 'get', 'file', 'put', 'delete' です。 + + 'post' と 'get' は、フォームの送信用メソッドをこの通り変更します:: + + echo $this->Form->create('User', array('type' => 'get')); + + 出力はこうなります: + + .. code-block:: html + + + + タイプ 'file' はフォームの送信用メソッドを 'post' にして、かつフォーム + タグに "multipart/form-data" という enctype を追加します。これはフォーム + 内に何らかのファイル要素がある場合に指定されるべきものです。適切な + enctype 属性が抜けていると、ファイルのアップロードがうまく動きません:: + + echo $this->Form->create('User', array('type' => 'file')); + + 出力はこうなります: + + .. code-block:: html + + + + 'put' や 'delete' を使う場合、そのフォームは機能的に 'post' と同じですが、 + サブミットされる際、HTTP のリクエストメソッドが 'PUT' または 'DELETE' + に上書きされます。これにより、Web ブラウザにおける REST サポートを + CakePHP がエミュレートできるようになります。 + +* ``$options['action']`` 現在のコントローラーにおいて、特定のアクションに + 対してフォームデータを送り込むことができます。たとえば現在のコントローラー + の login() アクションにフォームデータを渡したい場合、$options 配列には + 以下のように指定します:: + + echo $this->Form->create('User', array('action' => 'login')); + + 出力はこうなります: + + .. code-block:: html + + + +* ``$options['url']`` 現在のコントローラー以外にフォームデータを渡したい + 場合、$options 配列の 'url' キーを使ってフォームアクションの URL + を指定します。指定された URL は作成中の CakePHP アプリケーションに + 対する相対値を指定できます:: + + echo $this->Form->create(null, array( + 'url' => array('controller' => 'recipes', 'action' => 'add') + )); + + 出力はこうなります: + + .. code-block:: html + + + + もしくは、外部ドメインも指定可能です:: + + echo $this->Form->create(null, array( + 'url' => 'http://www.google.com/search', + 'type' => 'get' + )); + + 出力はこうなります: + + .. code-block:: html + + + + さらにいろいろなタイプの URL を指定する例は、:php:meth:`HtmlHelper::url()` + メソッドを参照してみてください。 + +* ``$options['default']`` 'default' がブール値の false に設定されている場合、 + フォームの submit アクションが変更され、submit ボタンを押してもフォームが + submit されなくなります。そのフォームが AJAX を経由して submit するように + なっている場合は 'default' を false にしてフォームのデフォルトの挙動を + 抑止し、その代わり AJAX 経由でデータを取得して submit するようにできます。 + +* ``$options['inputDefaults']`` ``input()`` のデフォルトオプションの + 組合せを ``inputDefaults`` キーとしてセットすると、入力生成における + 標準の振る舞いをカスタマイズできます。:: + + echo $this->Form->create('User', array( + 'inputDefaults' => array( + 'label' => false, + 'div' => false + ) + )); + + これ以降に生成される入力項目は、すべてinputDefaultsで宣言された + オプションを継承します。defaultOptionsを上書きするには + input() 呼び出しで以下のようにオプションを指定します:: + + echo $this->Form->input('password'); // div も label も持たない + // label 要素を持つ + echo $this->Form->input( + 'username', + array('label' => 'Username') + ); + +フォームを閉じる +================ + +.. php:method:: end($options = null, $secureAttributes = array()) + + FormHelperにはフォームを完成させる ``end()`` メソッドがあります。 + 多くの場合 ``end()`` はフォームの閉じタグを出力するだけですが、 + :php:class:`SecurityComponent` が要求する hidden のフォーム要素を + FormHelper に挿入させることもできます: + + .. code-block:: php + + Form->create(); ?> + + + + Form->end(); ?> + + ``end()`` の第一パラメータで文字列が与えられると、FormHelperは + フォームの綴じタグと一緒にその文字列の名前のついた submit ボタンを + 出力します:: + + Form->end('Finish'); ?> + + 以下が出力されます: + + .. code-block:: html + +

+ +
+ + + ``end()`` に配列を渡して詳細を指定することもできます:: + + $options = array( + 'label' => 'Update', + 'div' => array( + 'class' => 'glass-pill', + ) + ); + echo $this->Form->end($options); + + 以下が出力されます: + + .. code-block:: html + +
+
+ + 詳細は + `Form Helper API `_ + を参照してください。 + + .. note:: + + アプリケーション内で :php:class:`SecurityComponent` を使っている + 場合、タグを閉じる際は常に ``end()`` を使わなければなりません。 + + .. versionchanged:: 2.5 + 2.5 で ``$secureAttributes`` パラメータが追加されました。 + +.. _automagic-form-elements: + +フォーム要素の生成 +================== + +FormHelperでフォームのinput要素を作る方法はいくつかあります。まずは +``input()`` に注目してみましょう。このメソッドは与えられたモデル内の +項目を自動的に調べて、それらの項目に対応する適切な入力項目を作ります。 +内部的には ``input()`` はFormHelper内で他のメソッドに処理を委託します。 + +.. php:method:: input(string $fieldName, array $options = array()) + + それぞれの ``Model.field`` により以下の要素を生成します: + + * div のラッピング + * Label 要素 + * Input 要素 + * 適用できる場合はメッセージを含むエラー要素 + + 生成されるinputの型は(テーブルの)カラムのデータ型に依存します: + + カラムの型 + フォーム項目の型 + string (char, varchar, etc.) + text + boolean, tinyint(1) + checkbox + text + textarea + text, with name of password, passwd, または psword + password + text, with name of email + email + text, with name of tel, telephone, or phone + tel + date + day, month, and year selects + datetime, timestamp + day, month, year, hour, minute, および meridian selects + time + hour, minute, および meridian selects + binary + file + + ``$options`` パラメータで ``input()`` の挙動をカスタマイズできます。 + また生成されるデータを細やかに制御できます。 + + モデルの項目に関するバリデーションルールで ``allowEmpty =>true`` が + 指定されない場合、ラッピングする div には ``required`` というクラス + 名が付加されます。この振る舞いにおける一つの制限事項として、 + そのリクエストの間に入力項目のモデルがロードされている必要があります。 + そうでなければ :php:meth:`~FormHelper::create()` で指定されたモデルが + 直接関連付けられます。 + + .. versionadded:: 2.5 + binary 型が file 入力にマッピングされるようになりました。 + + .. versionadded:: 2.3 + + .. _html5-required: + + 2.3 から、バリデーションルールに基いて、HTML5の ``required`` 属性がinputに + 付加されるようになりました。options 配列で明示的に ``required`` キーを + セットしてその項目の定義を上書きすることもできます。フォーム全体を + トリガーすることでブラウザによるバリデーションをスキップするためには、 + :php:meth:`FormHelper::submit()` を使って生成した入力ボタンの + オプションに ``'formnovalidate' => true`` を指定するか、もしくは + :php:meth:`FormHelper::create()` の options で ``'novalidate' => true`` + をセットします。 + + + たとえば、あなたの User モデルには username (varchar), password (varchar), + approved (datetime) , quote (text) という項目があるとします。 + FormHelper の input() メソッドを使ってこれらすべてのフォーム項目に + 対する適切な input 項目を作ります:: + + echo $this->Form->create(); + + 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('quote'); //textarea + + echo $this->Form->end('Add'); + + 日付項目について、より具体的なオプションの例を以下に示します:: + + echo $this->Form->input('birth_dt', array( + 'label' => 'Date of birth', + 'dateFormat' => 'DMY', + 'minYear' => date('Y') - 70, + 'maxYear' => date('Y') - 18, + )); + + ``input()`` のオプションでは、後述する特別なオプションの他にも、 + input のタイプについての任意のオプションや、(たとえば onfocus + のように)任意のHTML属性を指定できます。``$options`` と + ``$htmlAttributes`` に関する詳細は :doc:`/core-libraries/helpers/html` + を参照してください。 + + User の hasAndBelongsToMany グループを考えます。コントローラーでは + select の options でキャメルケースの複数形の変数(このケースでは + group -> groups や ExtraFunkyModel -> extraFunkyModels)をセットします。 + コントローラーの action では以下のように指定します:: + + $this->set('groups', $this->User->Group->find('list')); + + そしてビューの中では、以下のシンプルなコードで複数の select が + 生成できます:: + + echo $this->Form->input('Group'); + + belongsTo や hasOne 関係を使うケースで select 項目を生成したい場合、 + Users コントローラーに以下のコードを追加します(User は Group に + belongsTo していると仮定しています):: + + $this->set('groups', $this->User->Group->find('list')); + + その後フォームビューに以下を追加します:: + + echo $this->Form->input('group_id'); + + あなたの使っているモデルの名前が、たとえば "UserGroup" のように + 2つ以上の単語で構成されている場合、set() でデータを渡す際の + データにつける名前は複数形のキャメルケースでなければなりません:: + + $this->set('userGroups', $this->UserGroup->find('list')); + // または + $this->set( + 'reallyInappropriateModelNames', + $this->ReallyInappropriateModelName->find('list') + ); + + .. note:: + + submit ボタンを作る際は `FormHelper::input()` の利用を避け、 + :php:meth:`FormHelper::submit()` の方を使ってください。 + +.. php:method:: inputs(mixed $fields = null, array $blacklist = null, $options = array()) + + ``$fields`` についての入力項目のセットを作成します。 ``$fields`` + が null の場合は全項目が対象となりますが、その場合でも現在の + モデルのうち ``$blacklist`` に定義されているものは除外されます。 + + コントローラー項目の出力の他にも、 ``$fields`` は ``fieldset`` や + ``legend`` キーと一緒に使うことで legend や fieldset の描画制御 + のためにも使われます。 + ``$this->Form->inputs(array('legend' => 'My legend'));`` + はカスタム legend を伴った input の組み合わせを生成します。 + ``$fields`` を通して個々の input をカスタマイズすることも可能です。:: + + echo $this->Form->inputs(array( + 'name' => array('label' => 'custom label') + )); + + 項目のコントロールの他にも、inputs() では以下のオプションが使えます。 + + - ``fieldset`` false にすることで fieldset を無効にします。 + 文字列が渡されると、それは fieldset 要素のクラス名として使われます。 + - ``legend`` false にすることで生成された input 項目についての + legend を無効にします。もしくは legend テキストをカスタマイズ + するための文字列を渡します。 + +項目名の命名規則 +---------------- + +フォームヘルパーは結構よくできています。フォームヘルパーのメソッドで +項目名を指定すれば、常に自動的に現在のモデル名を使って以下のような +書式で input タグを作ってくれます: + +.. code-block:: html + + + +これにより、そのフォームが対象とするモデルの input タグを生成する際、 +モデル名を省略できます。関連付けられたモデルや任意のモデルについての +input タグを生成する場合は、最初のパラメータとして モデル名.項目名 を +渡します。:: + + echo $this->Form->input('Modelname.fieldname'); + +同じ項目名で複数の項目を指定したい場合、すなわち一度の saveAll() +で配列として値を保存したい場合は以下の様な書式を使います:: + + echo $this->Form->input('Modelname.0.fieldname'); + echo $this->Form->input('Modelname.1.fieldname'); + +その出力は以下のようになります: + +.. code-block:: html + + + + + +FormHelper は日時項目の入力を生成する際、内部的に複数の 項目名-接尾辞 +を使います。もし項目名として ``year``, ``month``, ``day``, ``hour``, +``minute``, ``meridian`` を使っており、かる正確な入力値を得ることが +できない場合は、 ``name`` 属性をセットすることでデフォルトの振る舞いを +上書きすることができます:: + + echo $this->Form->input('Model.year', array( + 'type' => 'text', + 'name' => 'data[Model][year]' + )); + +オプション +---------- + +``FormHelper::input()`` は非常に多数のオプションをサポートしています。 +それ自身のオプション以外にも、 ``input()`` は生成された input のタイプや +HTML アトリビュートなどもオプションとして設定可能です。ここでは +``FormHelper::input()`` に特化したオプションを記載しています。 + +* ``$options['type']`` タイプを指定することで、モデルが推測したものに + 優先して、input のタイプを強制指定できます。 :ref:`automagic-form-elements` + で見つかったフィールドタイプの他にも HTML5 でサポートされている + 'file', 'password' 等のタイプも生成可能です:: + + echo $this->Form->input('field', array('type' => 'file')); + echo $this->Form->input('email', array('type' => 'email')); + + 出力はこうなります: + + .. code-block:: html + +
+ + +
+ + +* ``$options['div']`` このオプションを使って、input を囲んでいる div の + 属性を指定できます。文字列を渡すと div のクラス名になります。 + 配列を渡すと div の属性として扱われますが、この場合はキー/値の形式で + 指定します。なおこのキーを false と指定すると、div の出力を行わなく + なります。 + + クラス名の指定:: + + echo $this->Form->input('User.name', array( + 'div' => 'class_name' + )); + + 出力はこうなります: + + .. code-block:: html + +
+ + +
+ + 複数の属性の指定:: + + echo $this->Form->input('User.name', array( + 'div' => array( + 'id' => 'mainDiv', + 'title' => 'Div Title', + 'style' => 'display:block' + ) + )); + + 出力はこうなります: + + .. code-block:: html + +
+ + +
+ + div 出力の抑制:: + + echo $this->Form->input('User.name', array('div' => false)); ?> + + 出力はこうなります: + + .. code-block:: html + + + + +* ``$options['label']`` input とともに指定されることの多い label + タグのテキストを文字列で指定します:: + + echo $this->Form->input('User.name', array( + 'label' => 'The User Alias' + )); + + 出力はこうなります: + + .. code-block:: html + +
+ + +
+ + このキーに false を指定すると、label タグが出力されなくなります:: + + echo $this->Form->input('User.name', array('label' => false)); + + 出力はこうなります: + + .. code-block:: html + +
+ +
+ + これを配列で指定することで、 ``label`` エレメントに対する追加 + オプションを指定できます。この場合、label のテキストをカスタマイズ + するには ``text`` キーを使います:: + + echo $this->Form->input('User.name', array( + 'label' => array( + 'class' => 'thingy', + 'text' => 'The User Alias' + ) + )); + + 出力はこうなります: + + .. code-block:: html + +
+ + +
+ +* ``$options['error']`` このキーを使うと、モデルが持つデフォルトの + エラーメッセージを上書きしたり、また、たとえば i18n メッセージを + セットしたりできます。これには多数のサブオプションがあり、これを + 使って外側のエレメントやそのクラス名をコントロールしたり、 + エラーメッセージの中の HTML をエスケープするかどうかなどを指定 + できます。 + + エラーメッセージ出力やフィールドのクラス名を無効にするには + error キーに false を設定します:: + + $this->Form->input('Model.field', array('error' => false)); + + エラーメッセージのみを無効にし、フィールドのクラス名は有効にするには + errorMessage キーを false にします:: + + $this->Form->input('Model.field', array('errorMessage' => false)); + + 外側のエレメントのタイプやそのクラスを変更するには以下の書式を + 使います:: + + $this->Form->input('Model.field', array( + 'error' => array( + 'attributes' => array('wrap' => 'span', 'class' => 'bzzz') + ) + )); + + エラーメッセージ出力において HTML が自動的にエスケープされるのを + 抑制するには、escape サブオプションを false にします:: + + $this->Form->input('Model.field', array( + 'error' => array( + 'attributes' => array('escape' => false) + ) + )); + + モデルのエラーメッセージをオーバーライドするには、 + バリデーションの rule 名にマッチしたキーを持つ配列を使います:: + + $this->Form->input('Model.field', array( + 'error' => array('tooShort' => __('This is not long enough')) + )); + + これまで見てきたように、モデルの中にあるそれぞれのバリデーション + ルールのためのエラーメッセージを設定できます。さらにフォームの + 中のメッセージに i18n を提供することも可能です。 + + .. versionadded:: 2.3 + ``errorMessage`` オプションのサポートは 2.3 で追加されました。 + +* ``$options['before']``, ``$options['between']``, ``$options['separator']``, + ``$options['after']`` + + input() メソッドの出力の中に何らかのマークアップを差し込みたい場合、 + これらのキーを使います:: + + echo $this->Form->input('field', array( + 'before' => '--before--', + 'after' => '--after--', + 'between' => '--between---' + )); + + 出力はこうなります: + + .. code-block:: html + +
+ --before-- + + --between--- + + --after-- +
+ + radio input では、'separator' 属性を使ってそれぞれの input と + label のペアを分けるためのマークアップを挿入できます:: + + echo $this->Form->input('field', array( + 'before' => '--before--', + 'after' => '--after--', + 'between' => '--between---', + 'separator' => '--separator--', + 'options' => array('1', '2') + )); + + 出力はこうなります: + + .. code-block:: html + +
+ --before-- + + + --separator-- + + + --between--- + --after-- +
+ + ``date`` および ``datetime`` 型のエレメントでは、'separator' + 属性を使って select エレメントの間の文字列を変更できます。 + デフォルトは '-' です。 + +* ``$options['format']`` FormHelper が生成する HTML の順序もまた制御可能 + です。'format' オプションは文字列の配列を取り、希望するエレメントの + 並び順を表すテンプレートを指定します。サポートされている配列キーは + 以下の通りです: + ``array('before', 'input', 'between', 'label', 'after','error')`` + +* ``$options['inputDefaults']`` 複数の input() コールで同じオプションを + 使いたい場合、 `inputDefaults`` を使うことで繰り返し指定を避ける事が + できます:: + + echo $this->Form->create('User', array( + 'inputDefaults' => array( + 'label' => false, + 'div' => false + ) + )); + + その時点より先で生成されるすべての input において、inputDefaults + にあるオプション宣言が継承されます。input() コール時のオプション + 指定はデフォルトのオプションより優先されます:: + + // div も label もなし + echo $this->Form->input('password'); + + // label エレメントあり + echo $this->Form->input('username', array('label' => 'Username')); + + ここより先のデフォルトを変更するには + :php:meth:`FormHelper::inputDefaults()` が使えます。 + +特殊なタイプの入力を生成する +============================ + +一般的な ``input()`` メソッド以外にも、 ``FormHelper`` には様々に +異なったタイプの input を生成するための特別なメソッドがあります。 +これらは input ウィジェットそのものを生成するのに使えますが、 +さらに :php:meth:`~FormHelper::label()` や +:php:meth:`~FormHelper::error()` といった別のメソッドと組み合わせる +ことで、完全にカスタムメイドのフォームレイアウトを生成できます。 + +.. _general-input-options: + +一般的なオプション +------------------ + +input エレメントに関連するメソッドの多くは、一般的なオプションの +組合せをサポートしています。これらのオプションはすべて ``input()`` +でもサポートされています。繰り返しを減らすために、すべての input +メソッドで使える共通オプションを以下に示します: + +* ``$options['class']`` input のクラス名を指定できます:: + + echo $this->Form->input('title', array('class' => 'custom-class')); + +* ``$options['id']`` input の DOM id の値を強制的に設定します。 + +* ``$options['default']`` input フィールドのデフォルト値をセットする + のに使われます。この値は、フォームに渡されるデータにそのフィールド + に関する値が含まれていない場合(かまたは、一切データが渡されない場合) + に使われます。 + + 使用例:: + + echo $this->Form->input('ingredient', array('default' => 'Sugar')); + + select フィールドを持つ例("Medium" サイズがデフォルトで選択されます):: + + $sizes = array('s' => 'Small', 'm' => 'Medium', 'l' => 'Large'); + echo $this->Form->input( + 'size', + array('options' => $sizes, 'default' => 'm') + ); + + .. note:: + + checkbox をチェックする目的では ``default`` は使えません。 + その代わり、コントローラーで ``$this->request->data`` の中の + 値をセットするか、または input オプションの ``checked`` を true + にします。 + + 日付と時刻フィールドのデフォルト値は 'selected' キーでセットできます。 + + デフォルト値への代入の際 false を使うのは注意が必要です。 + false 値は input フィールドのオプションを無効または除外するのに + 使われます。そのため ``'default' => false`` では何の値もセット + されません。この場合は ``'default' => 0`` としてください。 + +前述のオプションに加えて、任意の HTML アトリビュートを混在させる +ことができます。特に規定のないオプション名は HTML アトリビュートとして +扱われ、生成された HTML の input エレメントに反映されます。 + +select, checkbox, radio に関するオプション +------------------------------------------ + +* ``$options['selected']`` は select 型の input (たとえば select, + date, time, datetime)と組み合わせて使われます。その項目の値に + 'selected' をセットすると、その input が描画される際にデフォルトで + その項目が選択されます:: + + echo $this->Form->input('close_time', array( + 'type' => 'time', + 'selected' => '13:30:00' + )); + + .. note:: + + date や datetime input の selected キーは UNIX のタイムスタンプ + で設定することもできます。 + +* ``$options['empty']`` true がセットされると、その input 項目を + 強制的に空にします。 + + select リストに渡される際、これはドロップダウンの値として空値を + 持つ空のオプションを作ります。単にオプションを空白にする代わりに、 + 何らかのテキストを表示しつつ空値を受け取りたい場合は empty に + 文字列を設定してください:: + + echo $this->Form->input('field', array( + 'options' => array(1, 2, 3, 4, 5), + 'empty' => '(choose one)' + )); + + 出力はこうなります: + + .. code-block:: html + +
+ + +
+ + .. note:: + + パスワードフィールドのデフォルト値を空値にしたい場合は、 + 'value' => '' の方を使ってください。 + + オプションはキー・バリューの組み合わせでも指定できます。 + +* ``$options['hiddenField']`` 一部の input タイプ(チェックボックス、 + ラジオボタン)では hidden フィールドが生成されるため、 + $this->request->data の中のキーは値を伴わない形式でも存在します: + + .. code-block:: html + + + + + これは ``$options['hiddenField'] = false`` とすることで無効にできます:: + + echo $this->Form->checkbox('published', array('hiddenField' => false)); + + 出力は以下のようになります: + + .. code-block:: html + + + + 1つのフォームの中でそれぞれグルーピングされた複数の input ブロック + を作りたい場合は、最初のものを除くすべての input でこのパラメータを + 使うべきです。ページ上の複数の場所に hidden input がある場合は + 最後のグループの input の値が保存されます。 + + この例では Tertiary Colors だけが渡され、Primary Colors は + オーバーライドされます: + + .. code-block:: html + +

Primary Colors

+ + + + + + + + +

Tertiary Colors

+ + + + + + + + + 2つ目の input グループで ``'hiddenField'`` を無効にすることで、 + この挙動を防ぐことができます。 + + hidden フィールドには 0 ではなく 'N' のように異なった値も + 設定できます:: + + echo $this->Form->checkbox('published', array( + 'value' => 'Y', + 'hiddenField' => 'N', + )); + +日時関連オプション +------------------ + +* ``$options['timeFormat']`` 時刻関連の入力に関する select input の書式を + 指定します。有効な値は ``12``, ``24``, ``null`` です。 + +* ``$options['dateFormat']`` 日付関連の入力に関する select input の書式を + 指定します。有効な値は 'D', 'M', 'Y' の組み合わせまたは ``null`` です。 + 入力は dateFormat オプションで定義した順序で格納されます。 + +* ``$options['minYear'], $options['maxYear']`` date/datetime と組み合わせて + 使います。年の select フィールドで表示される値の最小値および/または + 最大値を定義します。 + +* ``$options['orderYear']`` date/datetime と組み合わせて、年の値を表示する + 順序を定義します。有効な値は 'asc', 'desc' で、デフォルトは 'desc' です。 + +* ``$options['interval']`` このオプションでは分の select ボックスにおける + 分間隔の数値を指定します:: + + echo $this->Form->input('Model.time', array( + 'type' => 'time', + 'interval' => 15 + )); + + この例では分の select で 15 分間隔で4つのオプションを生成します。 + +* ``$options['round']`` それぞれの命令で `up` または `down` を指定する + ことで強制的な端数の切り上げ/切り下げを指示します。デフォルトは null + で、これは `interval` にしたがって四捨五入します。 + + .. versionadded:: 2.4 + +フォーム要素固有のメソッド +========================== + +これまでの例では、すべてのエレメントが ``User`` モデルのフォームの配下で +作られていました。このため、生成された HTML のコードには User モデルを +参照するアトリビュートが含まれます。 +例:name=data[User][username], id=UserUsername + +.. php:method:: label(string $fieldName, string $text, array $options) + + label エレメントを作ります。``$fieldName`` は DOM id を生成する + のに使われます。``$text`` が指定されない場合は ``$fieldName`` + を活用することで label テキストが作られます:: + + echo $this->Form->label('User.name'); + echo $this->Form->label('User.name', 'Your username'); + + 出力はこのようになります: + + .. code-block:: html + + + + + ``$options`` は HTML アトリビュートの配列、またはクラス名として + 使われる文字列のいずれかを指定します:: + + echo $this->Form->label('User.name', null, array('id' => 'user-label')); + echo $this->Form->label('User.name', 'Your username', 'highlight'); + + 出力はこのようになります: + + .. code-block:: html + + + + +.. php:method:: text(string $name, array $options) + + FormHelper で利用可能なメソッドには、さらに特定のフォーム + エレメントを作成するものがあります。これらのメソッドの多くでは、 + 特別な $options パラメータを指定できます。ただしこの場合、 + $options は主に(フォームのエレメントの DOM id の値のような) + HTML タグのアトリビュートを指定するために使われます:: + + echo $this->Form->text('username', array('class' => 'users')); + + 以下が出力されます: + + .. code-block:: html + + + +.. php:method:: password(string $fieldName, array $options) + + パスワードフィールドを作成します:: + + echo $this->Form->password('password'); + + 以下が出力されます: + + .. code-block:: html + + + +.. php:method:: hidden(string $fieldName, array $options) + + hidden フォーム input を作成します。例:: + + echo $this->Form->hidden('id'); + + 以下が出力されます: + + .. code-block:: html + + + + フォームが編集されると(すなわち、配列 ``$this->request->data`` に + ``User`` モデルに渡されるべき情報が含まれている場合)、生成される + HTML の中に ``id`` フィールドに対応する値が自動的に追加されます。 + たとえば data[User][id] = 10 とすると、以下のようになります: + + .. code-block:: html + + + + .. versionchanged:: 2.0 + hidden フィールドは class アトリビュートを削除しなくなりました。 + これにより、hidden フィールドでバリデーションエラーが発生した場合、 + error-field というクラス名が適用されるようになります。 + +.. php:method:: textarea(string $fieldName, array $options) + + textarea の入力フィールドを生成します。:: + + echo $this->Form->textarea('notes'); + + 以下が出力されます: + + .. code-block:: html + + + + フォームが編集されると(すなわち、配列 ``$this->request->data`` に + ``User`` モデルに渡すために保存された情報が含まれている場合)、 + 生成される HTML には ``notes`` フィールドに対応する値が自動的に + 含まれます。例: + + .. code-block:: html + + + + .. note:: + + ``textarea`` input タイプでは ``$options`` アトリビュートの + ``'escape'`` キーにより、textarea の内容をエスケープするか + どうかを指定できます。デフォルトは ``true`` です。 + + :: + + echo $this->Form->textarea('notes', array('escape' => false); + // または .... + echo $this->Form->input( + 'notes', + array('type' => 'textarea', 'escape' => false) + ); + + + **Options** + + textarea() は :ref:`general-input-options` 以外にもいくつか + 特定のオプションをサポートしています: + + * ``$options['rows'], $options['cols']`` この2つのキーは行と + 列の数を指定します:: + + echo $this->Form->textarea( + 'textarea', + array('rows' => '5', 'cols' => '5') + ); + + 出力は以下のようになります: + + .. code-block:: html + + + +.. php:method:: checkbox(string $fieldName, array $options) + + フォームのチェックボックス要素を生成します。このメソッドはまた、 + そのフィールドについて送信される input データを制限するための + hidden 項目を生成します。:: + + echo $this->Form->checkbox('done'); + + 以下が出力されます: + + .. code-block:: html + + + + + 配列 $options を使って checkbox の値を指定することもできます:: + + echo $this->Form->checkbox('done', array('value' => 555)); + + 以下が出力されます: + + .. code-block:: html + + + + + FormHelper に hidden input を生成させたくない場合:: + + echo $this->Form->checkbox('done', array('hiddenField' => false)); + + 以下が出力されます: + + .. code-block:: html + + + + +.. php:method:: radio(string $fieldName, array $options, array $attributes) + + radio ボタンの組み合わせを生成します。 + + **Options** + + * ``$attributes['value']`` デフォルトで選択される値を設定します。 + + * ``$attributes['separator']`` ラジオボタンの間に置かれる HTML + (たとえば
)を指定します。 + + * ``$attributes['between']`` legend と最初の要素の間に挿入される + コンテンツを指定します。 + + * ``$attributes['disabled']`` これを ``true`` または ``'disabled'`` + にすると、生成されたすべてのラジオボタンを無効にします。 + + * ``$attributes['legend']`` radio エレメントはデフォルトでは label + とフィールドセットで囲まれます。 ``$attributes['legend']`` を + false にするとこれらを取り除きます:: + + $options = array('M' => 'Male', 'F' => 'Female'); + $attributes = array('legend' => false); + echo $this->Form->radio('gender', $options, $attributes); + + 以下が出力されます: + + .. code-block:: html + + + + + + + + 何らかの理由で hidden input が不要な場合、 ``$attributes['value']`` + を選択される値もしくは false にすることで hidden を出力しなく + なります。 + + .. versionchanged:: 2.1 + ``$attributes['disabled']`` オプションは 2.1 で追加されました。 + +.. php:method:: select(string $fieldName, array $options, array $attributes) + + select 要素を作成します。 ``$options`` で項目を定義し、デフォルトで + 選択される値を ``$attributes['value']`` で指定します。``$attributes`` + 変数に '空の' キーを作って false を設定することで、デフォルトの + empty オプションを無効にします。:: + + $options = array('M' => 'Male', 'F' => 'Female'); + echo $this->Form->select('gender', $options); + + 以下が出力されます: + + .. code-block:: html + + + + ``select`` input タイプでは、 ``'escape'`` と呼ばれる特別な + ``$option`` 属性に真偽値を設定することで、select オプションの中身を + エンコードするかどうかを指定できます。デフォルトは true です:: + + $options = array('M' => 'Male', 'F' => 'Female'); + echo $this->Form->select('gender', $options, array('escape' => false)); + + * ``$attributes['options']`` このキーにより、select input または + ラジオボタンのグループについて、オプションをマニュアルで指定できます。 + 'type' に 'radio' と指定されない限り、FormHelper は目的とする + 出力を select input と仮定します:: + + echo $this->Form->select('field', array(1,2,3,4,5)); + + 出力は以下のようになります: + + .. code-block:: html + + + + オプションはキー/バリューの組み合わせでも指定できます:: + + echo $this->Form->select('field', array( + 'Value 1' => 'Label 1', + 'Value 2' => 'Label 2', + 'Value 3' => 'Label 3' + )); + + 出力は以下のようになります: + + .. code-block:: html + + + + select を optgroup 付きで作成したい場合は、データを階層的に指定 + します。これは複数のチェックボックスやラジオボタンでも有効ですが、 + optgroup では要素をフィールドセットで囲みます:: + + $options = array( + 'Group 1' => array( + 'Value 1' => 'Label 1', + 'Value 2' => 'Label 2' + ), + 'Group 2' => array( + 'Value 3' => 'Label 3' + ) + ); + echo $this->Form->select('field', $options); + + 出力は以下のようになります: + + .. code-block:: html + + + + * ``$attributes['multiple']`` input に対して 'multiple' が true に + セットされると、ひとつの select として出力されます:: + + echo $this->Form->select( + 'Model.field', + $options, + array('multiple' => true) + ); + + 一方、'multiple' を 'checkbox' にすると、関連するチェックボックス + の一覧を出力します:: + + $options = array( + 'Value 1' => 'Label 1', + 'Value 2' => 'Label 2' + ); + echo $this->Form->select('Model.field', $options, array( + 'multiple' => 'checkbox' + )); + + 出力は以下のようになります: + + .. code-block:: html + +
+ + +
+ + +
+
+ + +
+
+ + * ``$attributes['disabled']`` チェックボックスを生成する際、この + オプションをセットするとすべてもしくは特定のチェックボックスを + 無効にします。すべてのチェックボックスを無効にするには + 'disabled' を ``true`` にします:: + + $options = array( + 'Value 1' => 'Label 1', + 'Value 2' => 'Label 2' + ); + echo $this->Form->select('Model.field', $options, array( + 'multiple' => 'checkbox', + 'disabled' => array('Value 1') + )); + + 出力は以下のようになります: + + .. code-block:: html + +
+ + +
+ + +
+
+ + +
+
+ + .. versionchanged:: 2.3 + ``$attributes['disabled']`` の中の配列のサポートは 2.3 で + 追加されました。 + +.. php:method:: file(string $fieldName, array $options) + + フォームにファイルアップロードのための項目を追加するためには、 + まずフォームの enctype を "multipart/form-data" にする必要が + ありますので、create 関数で以下のようにしています:: + + echo $this->Form->create('Document', array( + 'enctype' => 'multipart/form-data' + )); + // または + echo $this->Form->create('Document', array('type' => 'file')); + + 次にフォームビューファイルに以下のいずれかを追加します:: + + echo $this->Form->input('Document.submittedfile', array( + 'between' => '
', + 'type' => 'file' + )); + + // または + + echo $this->Form->file('Document.submittedfile'); + + HTML 自体の制限により、'file' タイプの入力フィールドにデフォルト + 値を設定することはできません。フォームを表示するたびに毎回、 + 中の値は空に設定されます。 + + フォームの送信に際して file フィールドは、フォームを受信しようと + しているスクリプトに対して拡張された data 配列を提供します。 + + CakePHP が Windows サーバ上にインストールされている場合、上記の例 + について、送信されるデータ配列内の値は以下のように構成されます。 + Unix 環境では 'tmp\_name' が異なったパスになります:: + + $this->request->data['Document']['submittedfile'] = array( + 'name' => 'conference_schedule.pdf', + 'type' => 'application/pdf', + 'tmp_name' => 'C:/WINDOWS/TEMP/php1EE.tmp', + 'error' => 0, + 'size' => 41737, + ); + + この配列は PHP 自体によって生成されます。PHP が file フィールドを + 通してデータをどう処理しているのかについては、PHP マニュアルの + ファイルアップロードのセクション + ``_ を読んでみてください。 + +アップロードの検証 +------------------ + +モデルの中で定義できる、ファイルが正しくアップロードされたかどうかを +検証するためのバリデーションメソッドの例を以下に示します:: + + public function isUploadedFile($params) { + $val = array_shift($params); + if ((isset($val['error']) && $val['error'] == 0) || + (!empty( $val['tmp_name']) && $val['tmp_name'] != 'none') + ) { + return is_uploaded_file($val['tmp_name']); + } + return false; + } + +file input を生成します:: + + echo $this->Form->create('User', array('type' => 'file')); + echo $this->Form->file('avatar'); + +以下が出力されます: + +.. code-block:: html + +
+ + +.. note:: + + ``$this->Form->file()`` を使う場合、 ``$this->Form->create()`` + の中の type オプションを 'file' に設定することで、フォームの + エンコーディングのタイプを設定できます。 + +ボタンとsubmit要素の生成 +======================== + +.. php:method:: submit(string $caption, array $options) + + submit ボタンをキャプション ``$caption`` 付きで作成します。 + ``$caption`` が画像への URL の場合('.' 文字を含む場合)、 + submit ボタンは画像として描画されます。 + + デフォルトでは submit ボタンは ``div`` タグで括られます。 + これを避けるには ``$options['div'] = false`` を指定します:: + + echo $this->Form->submit(); + + 以下が出力されます: + + .. code-block:: html + +
+ + caption パラメーターではキャプション文字列の代わりに画像への + 相対または絶対 URL を指定できます:: + + echo $this->Form->submit('ok.png'); + + 以下が出力されます: + + .. code-block:: html + +
+ +.. php:method:: button(string $title, array $options = array()) + + 指定されたタイトルとデフォルトの "button" タイプで HTML のボタンを + 作成します。 ``$options['type']`` では以下の3つのいずれかを + 指定できます: + + #. submit: ``$this->Form->submit`` メソッドと同じ(デフォルト) + #. reset: フォームのリセットボタンを作成 + #. button: 標準のプッシュボタンを作成 + + :: + + echo $this->Form->button('A Button'); + echo $this->Form->button('Another Button', array('type' => 'button')); + echo $this->Form->button('Reset the Form', array('type' => 'reset')); + echo $this->Form->button('Submit Form', array('type' => 'submit')); + + 以下が出力されます: + + .. code-block:: html + + + + + + + + ``button`` タイプは ``escape`` オプションをサポートしています。 + これはそのボタンの $title を HTML エンティティでエンコードするか + どうかを表す真偽値で、デフォルトは false です:: + + echo $this->Form->button('Submit Form', array( + 'type' => 'submit', + 'escape' => true + )); + +.. php:method:: postButton(string $title, mixed $url, array $options = array ()) + + POST 経由でサブミットするための、 ```` で囲まれた `` - - - - - - The ``button`` input type supports the ``escape`` option, which accepts a - 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 - )); - -.. php:method:: postButton(string $title, mixed $url, array $options = array ()) - - Create a ``
- :param array $thOptions: An array of :term:`html attributes` for the
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(http://github.com/mixed%20$url%20=%20NULL,%20boolean%20$full%20=%20false) - - :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('http://github.com/posts',%20true); - - // 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 deleted file mode 100644 index b7dd2d5785..0000000000 --- a/sr/core-libraries/helpers/js.rst +++ /dev/null @@ -1,881 +0,0 @@ -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