Changeset 10189
- Timestamp:
- 07/09/08 18:55:22 (2 months ago)
- Files:
-
- doc/branches/1.0/askeet/es/22.txt (modified) (1 diff)
- doc/branches/1.0/book/03-Running-Symfony.txt (modified) (2 diffs)
- doc/branches/1.0/book/06-Inside-the-Controller-Layer.txt (modified) (2 diffs)
- doc/branches/1.0/book/08-Inside-the-Model-Layer.txt (modified) (1 diff)
- doc/branches/1.0/book/15-Unit-and-Functional-Testing.txt (modified) (1 diff)
- doc/branches/1.0/book/17-Extending-Symfony.txt (modified) (3 diffs)
- doc/branches/1.0/book/18-Performance.txt (modified) (3 diffs)
- doc/branches/1.0/cookbook/en/behaviors.txt (modified) (2 diffs)
- doc/branches/1.0/cookbook/en/cli.txt (modified) (1 diff)
- doc/branches/1.0/cookbook/en/cookie.txt (modified) (1 diff)
- doc/branches/1.0/cookbook/en/syndication.txt (modified) (1 diff)
- doc/branches/1.0/cookbook/en/upload.txt (modified) (1 diff)
- doc/branches/1.0/cookbook/ja/cli.txt (modified) (1 diff)
- doc/branches/1.0/cookbook/pt/upload.txt (modified) (1 diff)
- doc/branches/1.1/book/03-Running-Symfony.txt (modified) (2 diffs)
- doc/branches/1.1/book/06-Inside-the-Controller-Layer.txt (modified) (2 diffs)
- doc/branches/1.1/book/08-Inside-the-Model-Layer.txt (modified) (1 diff)
- doc/branches/1.1/book/15-Unit-and-Functional-Testing.txt (modified) (1 diff)
- doc/branches/1.1/book/17-Extending-Symfony.txt (modified) (3 diffs)
- doc/branches/1.1/book/18-Performance.txt (modified) (3 diffs)
- doc/branches/1.1/cookbook/de/pager.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/de/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/en/behaviors.txt (modified) (2 diffs)
- doc/branches/1.1/cookbook/en/cli.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/en/cookie.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/en/pager.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/en/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/en/syndication.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/es/behaviors.txt (modified) (2 diffs)
- doc/branches/1.1/cookbook/es/cli.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/es/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/fr/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/fr/syndication.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/hu/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/ja/cli.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/pt/cli.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/pt/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/cookbook/ru/propel_13.txt (modified) (1 diff)
- doc/branches/1.1/tutorial/my-first-project.txt (modified) (1 diff)
- doc/branches/1.2/book/03-Running-Symfony.txt (modified) (2 diffs)
- doc/branches/1.2/book/06-Inside-the-Controller-Layer.txt (modified) (2 diffs)
- doc/branches/1.2/book/08-Inside-the-Model-Layer.txt (modified) (1 diff)
- doc/branches/1.2/book/15-Unit-and-Functional-Testing.txt (modified) (1 diff)
- doc/branches/1.2/book/17-Extending-Symfony.txt (modified) (3 diffs)
- doc/branches/1.2/book/18-Performance.txt (modified) (3 diffs)
- doc/branches/1.2/cookbook/de/pager.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/de/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/en/behaviors.txt (modified) (2 diffs)
- doc/branches/1.2/cookbook/en/cli.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/en/cookie.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/en/pager.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/en/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/en/syndication.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/es/behaviors.txt (modified) (2 diffs)
- doc/branches/1.2/cookbook/es/cli.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/es/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/fr/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/fr/syndication.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/hu/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/ja/cli.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/pt/cli.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/pt/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/cookbook/ru/propel_13.txt (modified) (1 diff)
- doc/branches/1.2/tutorial/my-first-project.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
doc/branches/1.0/askeet/es/22.txt
r5352 r10189 200 200 >**Note**: Ten presente que permitiendo acceso web a las herramientas de administración puedes comprometer la seguridad de tu sitio web. 201 201 202 >**Note**: `Nota del Traductor` Si no te sientes cómodo con la línea de órdenes o no puedes usarla, no dejes de echar un vistazo al plugin [sfControlPanelPlugin](http://trac.symfony-project. com/trac/wiki/sfControlPanelPlugin). TEN PRESENTE EL TEMA DE LA SEGURIDAD!!202 >**Note**: `Nota del Traductor` Si no te sientes cómodo con la línea de órdenes o no puedes usarla, no dejes de echar un vistazo al plugin [sfControlPanelPlugin](http://trac.symfony-project.org/trac/wiki/sfControlPanelPlugin). TEN PRESENTE EL TEMA DE LA SEGURIDAD!! 203 203 204 204 Actualizando tu aplicación doc/branches/1.0/book/03-Running-Symfony.txt
r9341 r10189 317 317 >Symfony is compatible with other server configurations. You can, for instance, access a symfony application using an alias instead of a virtual host. You can also run a symfony application with an IIS server. There are as many techniques as there are configurations, and it is not the purpose of this book to explain them all. 318 318 > 319 >To find directions for a specific server configuration, refer to the symfony wiki ([http://trac.symfony-project. com/](http://trac.symfony-project.com/)), which contains many step-by-step tutorials.319 >To find directions for a specific server configuration, refer to the symfony wiki ([http://trac.symfony-project.org/](http://trac.symfony-project.org/)), which contains many step-by-step tutorials. 320 320 321 321 Troubleshooting … … 356 356 * The symfony installation forum ([http://www.symfony-project.org/forum/](http://www.symfony-project.org/forum/)) is full of installation questions about a given platform, environment, configuration, host, and so on. 357 357 * The archives of the users mailing-list ([http://groups.google.fr/group/symfony-users](http://groups.google.fr/group/symfony-users)) are also searchable. You may find similar experiences to your own there. 358 * The symfony wiki ([http://trac.symfony-project. com/#Installingsymfony](http://trac.symfony-project.com/#Installingsymfony)) contains step-by-step tutorials, contributed by symfony users, about installation.358 * The symfony wiki ([http://trac.symfony-project.org/#Installingsymfony](http://trac.symfony-project.org/#Installingsymfony)) contains step-by-step tutorials, contributed by symfony users, about installation. 359 359 360 360 If you don't find any answer, try posing your question to the symfony community. You can post your query in the forum, the mailing list, or even drop to the `#symfony` IRC channel to get feedback from the most active members of the community. doc/branches/1.0/book/06-Inside-the-Controller-Layer.txt
r9692 r10189 773 773 774 774 >**TIP** 775 >Among the symfony plug-ins, the `sfGuardPlugin` (http://trac.symfony-project. com/wiki/sfGuardPlugin) extends the session class to make login and logout easy. Refer to Chapter 17 for more information.775 >Among the symfony plug-ins, the `sfGuardPlugin` (http://trac.symfony-project.org/wiki/sfGuardPlugin) extends the session class to make login and logout easy. Refer to Chapter 17 for more information. 776 776 777 777 ### Complex Credentials … … 1056 1056 } 1057 1057 1058 Filters are used extensively in plug-ins, as they allow you to extend the features of an application globally. Refer to Chapter 17 to learn more about plug-ins, and see the online wiki ([http://trac.symfony-project. com/](http://trac.symfony-project.com/)) for more filter examples.1058 Filters are used extensively in plug-ins, as they allow you to extend the features of an application globally. Refer to Chapter 17 to learn more about plug-ins, and see the online wiki ([http://trac.symfony-project.org/](http://trac.symfony-project.org/)) for more filter examples. 1059 1059 1060 1060 Module Configuration doc/branches/1.0/book/08-Inside-the-Model-Layer.txt
r10024 r10189 635 635 After rebuilding the model, deleted `Article` objects will remain in the database, invisible to the queries using the ORM, unless you temporarily disable the behavior with `sfPropelParanoidBehavior::disable()`. 636 636 637 Check the list of symfony plug-ins in the wiki to find behaviors ([http://trac.symfony-project. com/wiki/SymfonyPlugins#Behaviors](http://trac.symfony-project.com/wiki/SymfonyPlugins#Behaviors)). Each has its own documentation and installation guide.637 Check the list of symfony plug-ins in the wiki to find behaviors ([http://trac.symfony-project.org/wiki/SymfonyPlugins#Behaviors](http://trac.symfony-project.org/wiki/SymfonyPlugins#Behaviors)). Each has its own documentation and installation guide. 638 638 639 639 Extended Schema Syntax doc/branches/1.0/book/15-Unit-and-Functional-Testing.txt
r9484 r10189 13 13 Automated tests can sometimes replace developer documentation since they can clearly illustrate what an application is supposed to do. A good test suite shows what output should be expected for a set of test inputs, and that is a good way to explain the purpose of a method. 14 14 15 The symfony framework applies this principle to itself. The internals of the framework are validated by automated tests. These unit and functional tests are not bundled with the standard symfony distribution, but you can check them out from the SVN repository or browse them online at [http://trac.symfony-project. com/browser/branches/1.0/test](http://trac.symfony-project.com/browser/branches/1.0/test).15 The symfony framework applies this principle to itself. The internals of the framework are validated by automated tests. These unit and functional tests are not bundled with the standard symfony distribution, but you can check them out from the SVN repository or browse them online at [http://trac.symfony-project.org/browser/branches/1.0/test](http://trac.symfony-project.org/browser/branches/1.0/test). 16 16 17 17 ### Unit and Functional Tests doc/branches/1.0/book/17-Extending-Symfony.txt
r7002 r10189 326 326 >The Propel objects corresponding to the tables of the database all have a delete() method, which deletes the related record from the database. But for an `Invoice` class, for which you can't delete a record, you may want to alter the `delete()` method to be able to keep the record in the database and change the value of an is_deleted attribute to true instead. Usual object retrieval methods (`doSelect()`, `retrieveByPk()`) would only consider the records for which `is_deleted` is false. You would also need to add another method called `forceDelete()`, which would allow you to really delete the record. In fact, all these modifications can be packaged into a new class, called `ParanoidBehavior`. The final `Invoice` class extends the Propel `BaseInvoice` class and has methods of the `ParanoidBehavior` mixed in. 327 327 > 328 >So a behavior is a mixin on a Propel object. Actually, the term "behavior" in symfony covers one more thing: the fact that the mixin is packaged as a plug-in. The `ParanoidBehavior` class just mentioned corresponds to a real symfony plug-in called `sfPropelParanoidBehaviorPlugin`. Refer to the symfony wiki ([http://trac.symfony-project. com/wiki/sfPropelParanoidBehaviorPlugin](http://trac.symfony-project.com/wiki/sfPropelParanoidBehaviorPlugin)) for details on installation and use of this plug-in.328 >So a behavior is a mixin on a Propel object. Actually, the term "behavior" in symfony covers one more thing: the fact that the mixin is packaged as a plug-in. The `ParanoidBehavior` class just mentioned corresponds to a real symfony plug-in called `sfPropelParanoidBehaviorPlugin`. Refer to the symfony wiki ([http://trac.symfony-project.org/wiki/sfPropelParanoidBehaviorPlugin](http://trac.symfony-project.org/wiki/sfPropelParanoidBehaviorPlugin)) for details on installation and use of this plug-in. 329 329 > 330 330 >One last word about behaviors: To be able to support them, the generated Propel objects must contain quite a number of hooks. These may slow down execution a little and penalize performance if you don't use behaviors. That's why the hooks are not enabled by default. In order to add them and enable behavior support, you must first set the `propel.builder.addBehaviors` property to `true` in the `propel.ini` file and rebuild the model. … … 450 450 The symfony project website contains a page dedicated to symfony plug-ins. It is in the symfony wiki and accessible with the following URL: 451 451 452 http://trac.symfony-project. com/wiki/SymfonyPlugins452 http://trac.symfony-project.org/wiki/SymfonyPlugins 453 453 454 454 Each plug-in listed there has its own page, with detailed installation instructions and documentation. … … 949 949 A symfony plug-in gets the broadest audience when distributed by the `symfony-project.com` website. Even your own plug-ins can be distributed this way, provided that you follow these steps: 950 950 951 1. Make sure the `README` file describes the way to install and use your plug-in, and that the `LICENSE` file gives the license details. Format your `README` with the Wiki Formatting syntax ([http://trac.symfony-project. com/wiki/WikiFormatting](http://trac.symfony-project.com/wiki/WikiFormatting)).951 1. Make sure the `README` file describes the way to install and use your plug-in, and that the `LICENSE` file gives the license details. Format your `README` with the Wiki Formatting syntax ([http://trac.symfony-project.org/wiki/WikiFormatting](http://trac.symfony-project.org/wiki/WikiFormatting)). 952 952 2. Create a PEAR package for your plug-in by calling the `pear package` command, and test it. The PEAR package must be named `sfSamplePlugin-1.0.0.tgz` (1.0.0 is the plug-in version). 953 953 3. Create a new page on the symfony wiki named `sfSamplePlugin` (`Plugin` is a mandatory suffix). In this page, describe the plug-in usage, the license, the dependencies, and the installation procedure. You can reuse the contents of the plug-in `README` file. Check the existing plug-ins' wiki pages and use them as an example. 954 954 4. Attach your PEAR package to the wiki page (`sfSamplePlugin-1.0.0.tgz`). 955 5. Add the new plug-in wiki page (`[wiki:sfSamplePlugin]`) to the list of available plug-ins, which is also a wiki page ([http://trac.symfony-project. com/wiki/SymfonyPlugins](http://trac.symfony-project.com/wiki/SymfonyPlugins)).955 5. Add the new plug-in wiki page (`[wiki:sfSamplePlugin]`) to the list of available plug-ins, which is also a wiki page ([http://trac.symfony-project.org/wiki/SymfonyPlugins](http://trac.symfony-project.org/wiki/SymfonyPlugins)). 956 956 957 957 If you follow this procedure, users will be able to install your plug-in by simply typing the following command in a project directory: doc/branches/1.0/book/18-Performance.txt
r9484 r10189 4 4 If you expect your website will attract a crowd, performance and optimization issues should be a major factor during the development phase. Rest assured, performance has always been a chief concern among the core symfony developers. 5 5 6 While the advantages gained by accelerating the development process result in some overhead, the core symfony developers have always been cognizant of performance requirements. Accordingly, every class and every method have been closely inspected and optimized to be as fast as possible. The basic overhead, which you can measure by comparing the time to display a "hello, world" message with and without symfony, is minimal. As a result, the framework is scalable and reacts well to stress tests. And as the ultimate proof, some websites with extremely high traffic (that is, websites with millions of active subscribers and a lot of server-pressuring Ajax interactions) use symfony and are very satisfied with its performance. Check the list of websites developed with symfony in the wiki ([http://trac.symfony-project. com/wiki/ApplicationsDevelopedWithSymfony](http://trac.symfony-project.com/wiki/ApplicationsDevelopedWithSymfony)) for names.6 While the advantages gained by accelerating the development process result in some overhead, the core symfony developers have always been cognizant of performance requirements. Accordingly, every class and every method have been closely inspected and optimized to be as fast as possible. The basic overhead, which you can measure by comparing the time to display a "hello, world" message with and without symfony, is minimal. As a result, the framework is scalable and reacts well to stress tests. And as the ultimate proof, some websites with extremely high traffic (that is, websites with millions of active subscribers and a lot of server-pressuring Ajax interactions) use symfony and are very satisfied with its performance. Check the list of websites developed with symfony in the wiki ([http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony](http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony)) for names. 7 7 8 8 But, of course, high-traffic websites often have the means to expand the server farm and upgrade hardware as they see fit. If you don't have the resources to do this, or if you want to be sure the full power of the framework is always at your disposal, there are a few tweaks that you can use to further speed up your symfony application. This chapter lists some of the recommended performance optimizations at all levels of the framework and they are mostly for advanced users. Some of them were already mentioned throughout the previous chapters, but you will find it useful to have them all in one place. … … 575 575 Some features are useful only in development, so you should not activate them in production. This is already the case by default, since the production environment in symfony is really optimized for performance. Among the performance-impacting development features, the `SF_DEBUG` mode is the most severe. As for the symfony logs, the feature is also turned off in production by default. 576 576 577 You may wonder how to get information about failed requests in production if logging is disabled, and argue that problems arise not only in development. Fortunately, symfony can use the `sfErrorLoggerPlugin` plug-in, which runs in the background in production and logs the details of 404 and 500 errors in a database. It is much faster than the file logging feature, because the plug-in methods are called only when a request fails, while the logging mechanism, once turned on, adds a nonnegligible overhead whatever the level. Check the installation instructions and manual at [http://www.symfony-project.com/wiki/sfErrorLoggerPlugin](http://trac.symfony-project. com/wiki/sfErrorLoggerPlugin).577 You may wonder how to get information about failed requests in production if logging is disabled, and argue that problems arise not only in development. Fortunately, symfony can use the `sfErrorLoggerPlugin` plug-in, which runs in the background in production and logs the details of 404 and 500 errors in a database. It is much faster than the file logging feature, because the plug-in methods are called only when a request fails, while the logging mechanism, once turned on, adds a nonnegligible overhead whatever the level. Check the installation instructions and manual at [http://www.symfony-project.com/wiki/sfErrorLoggerPlugin](http://trac.symfony-project.org/wiki/sfErrorLoggerPlugin). 578 578 579 579 >**TIP** … … 622 622 And that's not all, because an evident test like the preceding one also gets optimized to an empty string. 623 623 624 To apply the optimizations, you must first install the plug-in from [http://trac.symfony-project. com/wiki/sfOptimizerPlugin](http://trac.symfony-project.com/wiki/sfOptimizerPlugin) and then call the `optimize` task, specifying an application and an environment:624 To apply the optimizations, you must first install the plug-in from [http://trac.symfony-project.org/wiki/sfOptimizerPlugin](http://trac.symfony-project.org/wiki/sfOptimizerPlugin) and then call the `optimize` task, specifying an application and an environment: 625 625 626 626 > symfony optimize myapp prod doc/branches/1.0/cookbook/en/behaviors.txt
r9725 r10189 301 301 To complete the plugin, you must add a `README` file at the root of the plugin's directory, with installation and usage instructions. The best behaviors also bundle unit tests. 302 302 303 Eventually, add a `package.xml` (either manually or by way of [sfPackageMakerPlugin](http://trac.symfony-project. com/trac/wiki/sfPackageMakerPlugin)), package the plugin with PEAR, and you are ready to reuse it. You can also post it in the symfony website.303 Eventually, add a `package.xml` (either manually or by way of [sfPackageMakerPlugin](http://trac.symfony-project.org/trac/wiki/sfPackageMakerPlugin)), package the plugin with PEAR, and you are ready to reuse it. You can also post it in the symfony website. 304 304 305 305 Passing a parameter to a behavior … … 365 365 ---------- 366 366 367 Propel Behaviors are nothing more than a set of predefined hooks, and a helper class designed to facilitate the registration of several hooks in a single statement. If you understand Mixins, it shouldn't be too hard to author your own behaviors. Make sure you check the [existing behavior plugins](http://trac.symfony-project. com/wiki/SymfonyPlugins#Propelbehaviorplugins) before starting your own: they are practical examples of the behaviors syntax.367 Propel Behaviors are nothing more than a set of predefined hooks, and a helper class designed to facilitate the registration of several hooks in a single statement. If you understand Mixins, it shouldn't be too hard to author your own behaviors. Make sure you check the [existing behavior plugins](http://trac.symfony-project.org/wiki/SymfonyPlugins#Propelbehaviorplugins) before starting your own: they are practical examples of the behaviors syntax. doc/branches/1.0/cookbook/en/cli.txt
r9725 r10189 232 232 The symfony wiki contains user-contributed configuration files to allow automatic completion of symfony commands. Check out the one that fits your CLI: 233 233 234 * [Bash completion](http://trac.symfony-project. com/wiki/BashCompletion)235 * [Zsh completion](http://trac.symfony-project. com/wiki/ZshCompletion)234 * [Bash completion](http://trac.symfony-project.org/wiki/BashCompletion) 235 * [Zsh completion](http://trac.symfony-project.org/wiki/ZshCompletion) 236 236 237 237 [1]: http://www.pake-project.org/ "Pake" doc/branches/1.0/cookbook/en/cookie.txt
r9725 r10189 214 214 --------------------------------------------- 215 215 216 The code descibed above can be quite a pain to rewrite for every new project. Fortunately, you can use the `sfGuardPlugin` for this purpose. Not only does it automate user management, permissions and credentials with a database, it also includes the "remember me" feature with a technique similar to that described here. So, the good way to enable persistent sessions is to [install the sfGuard plugin](http://trac.symfony-project. com/wiki/sfGuardPlugin).216 The code descibed above can be quite a pain to rewrite for every new project. Fortunately, you can use the `sfGuardPlugin` for this purpose. Not only does it automate user management, permissions and credentials with a database, it also includes the "remember me" feature with a technique similar to that described here. So, the good way to enable persistent sessions is to [install the sfGuard plugin](http://trac.symfony-project.org/wiki/sfGuardPlugin). doc/branches/1.0/cookbook/en/syndication.txt
r9725 r10189 263 263 In the example, the `Post` object has a `getCreatedAt` 264 264 265 The same goes for the other possible fields of an Atom feed (including the categories, the summary, the unique id, etc.), and you are advised to [browse the source of the `sfFeed` class](http://trac.symfony-project. com/browser/plugins/sfFeedPlugin/lib) to discover all the deduction mechanisms.265 The same goes for the other possible fields of an Atom feed (including the categories, the summary, the unique id, etc.), and you are advised to [browse the source of the `sfFeed` class](http://trac.symfony-project.org/browser/plugins/sfFeedPlugin/lib) to discover all the deduction mechanisms. 266 266 267 267 All in all, the way the accessors of the `Post` and `Author` objects are built allow the built-in shortcuts of the `sfFeed` to work, and the creation of the feed to be so simple. doc/branches/1.0/cookbook/en/upload.txt
r9725 r10189 88 88 ---------- 89 89 90 If you upload images, you might need to create thumbnails of each uploaded file. In this case, the [`sfThumbnail` plugin](http://trac.symfony-project. com/wiki/sfThumbnailPlugin) might prove useful.90 If you upload images, you might need to create thumbnails of each uploaded file. In this case, the [`sfThumbnail` plugin](http://trac.symfony-project.org/wiki/sfThumbnailPlugin) might prove useful. 91 91 92 92 First, install the plugin using the symfony command line: doc/branches/1.0/cookbook/ja/cli.txt
r10058 r10189 232 232 symfonyのwikiにはユーザーが投稿したsymfonyコマンドの自動入力補完を可能にする設定ファイルが含まれます。利用しているシェルに適したものをチェックアウトして下さい: 233 233 234 * [Bashの入力補完](http://trac.symfony-project. com/wiki/BashCompletion)235 * [Zshの入力補完](http://trac.symfony-project. com/wiki/ZshCompletion)234 * [Bashの入力補完](http://trac.symfony-project.org/wiki/BashCompletion) 235 * [Zshの入力補完](http://trac.symfony-project.org/wiki/ZshCompletion) 236 236 237 237 [1]: http://www.pake-project.org/ "Pake" doc/branches/1.0/cookbook/pt/upload.txt
r9725 r10189 86 86 Thumbnails 87 87 ---------- 88 Se você fizer uploades de imagem, talvez você precise criar thumbnails para cada arquivo enviado. Nesse caso, o ['sfThumbnail' plugin](http://trac.symfony-project. com/wiki/sfThumbnailPlugin) pode lhe ser útil.88 Se você fizer uploades de imagem, talvez você precise criar thumbnails para cada arquivo enviado. Nesse caso, o ['sfThumbnail' plugin](http://trac.symfony-project.org/wiki/sfThumbnailPlugin) pode lhe ser útil. 89 89 90 90 Primeiro, instale o plugin usando a linha de comando do symfony: doc/branches/1.1/book/03-Running-Symfony.txt
r9491 r10189 316 316 >Symfony is compatible with other server configurations. You can, for instance, access a symfony application using an alias instead of a virtual host. You can also run a symfony application with an IIS server. There are as many techniques as there are configurations, and it is not the purpose of this book to explain them all. 317 317 > 318 >To find directions for a specific server configuration, refer to the symfony wiki ([http://trac.symfony-project. com/](http://trac.symfony-project.com/)), which contains many step-by-step tutorials.318 >To find directions for a specific server configuration, refer to the symfony wiki ([http://trac.symfony-project.org/](http://trac.symfony-project.org/)), which contains many step-by-step tutorials. 319 319 320 320 Troubleshooting … … 356 356 * The symfony installation forum ([http://www.symfony-project.org/forum/](http://www.symfony-project.org/forum/)) is full of installation questions about a given platform, environment, configuration, host, and so on. 357 357 * The archives of the users mailing-list ([http://groups.google.fr/group/symfony-users](http://groups.google.fr/group/symfony-users)) are also searchable. You may find similar experiences to your own there. 358 * The symfony wiki ([http://trac.symfony-project. com/#Installingsymfony](http://trac.symfony-project.com/#Installingsymfony)) contains step-by-step tutorials, contributed by symfony users, about installation.358 * The symfony wiki ([http://trac.symfony-project.org/#Installingsymfony](http://trac.symfony-project.org/#Installingsymfony)) contains step-by-step tutorials, contributed by symfony users, about installation. 359 359 360 360 If you don't find any answer, try posing your question to the symfony community. You can post your query in the forum, the mailing list, or even drop to the `#symfony` IRC channel to get feedback from the most active members of the community. doc/branches/1.1/book/06-Inside-the-Controller-Layer.txt
r9692 r10189 742 742 743 743 >**TIP** 744 >Among the symfony plug-ins, the `sfGuardPlugin` (http://trac.symfony-project. com/wiki/sfGuardPlugin) extends the session class to make login and logout easy. Refer to Chapter 17 for more information.744 >Among the symfony plug-ins, the `sfGuardPlugin` (http://trac.symfony-project.org/wiki/sfGuardPlugin) extends the session class to make login and logout easy. Refer to Chapter 17 for more information. 745 745 746 746 ### Complex Credentials … … 1026 1026 } 1027 1027 1028 Filters are used extensively in plug-ins, as they allow you to extend the features of an application globally. Refer to Chapter 17 to learn more about plug-ins, and see the online wiki ([http://trac.symfony-project. com/](http://trac.symfony-project.com/)) for more filter examples.1028 Filters are used extensively in plug-ins, as they allow you to extend the features of an application globally. Refer to Chapter 17 to learn more about plug-ins, and see the online wiki ([http://trac.symfony-project.org/](http://trac.symfony-project.org/)) for more filter examples. 1029 1029 1030 1030 Module Configuration doc/branches/1.1/book/08-Inside-the-Model-Layer.txt
r10024 r10189 651 651 **New in symfony 1.1**: Alternatively, you can also declare behaviors directly in the `schema.yml`, by listing them under the `_behaviors` key (see Listing 8-34 below). 652 652 653 Check the list of symfony plug-ins in the wiki to find behaviors ([http://trac.symfony-project. com/wiki/SymfonyPlugins#Behaviors](http://trac.symfony-project.com/wiki/SymfonyPlugins#Behaviors)). Each has its own documentation and installation guide.653 Check the list of symfony plug-ins in the wiki to find behaviors ([http://trac.symfony-project.org/wiki/SymfonyPlugins#Behaviors](http://trac.symfony-project.org/wiki/SymfonyPlugins#Behaviors)). Each has its own documentation and installation guide. 654 654 655 655 Extended Schema Syntax doc/branches/1.1/book/15-Unit-and-Functional-Testing.txt
r9590 r10189 13 13 Automated tests can sometimes replace developer documentation since they can clearly illustrate what an application is supposed to do. A good test suite shows what output should be expected for a set of test inputs, and that is a good way to explain the purpose of a method. 14 14 15 The symfony framework applies this principle to itself. The internals of the framework are validated by automated tests. These unit and functional tests are not bundled with the PEAR package, but you can check them out from the SVN repository or browse them online at [http://trac.symfony-project. com/browser/branches/1.1/test](http://trac.symfony-project.com/browser/branches/1.1/test).15 The symfony framework applies this principle to itself. The internals of the framework are validated by automated tests. These unit and functional tests are not bundled with the PEAR package, but you can check them out from the SVN repository or browse them online at [http://trac.symfony-project.org/browser/branches/1.1/test](http://trac.symfony-project.org/browser/branches/1.1/test). 16 16 17 17 ### Unit and Functional Tests doc/branches/1.1/book/17-Extending-Symfony.txt
r9590 r10189 272 272 >The Propel objects corresponding to the tables of the database all have a delete() method, which deletes the related record from the database. But for an `Invoice` class, for which you can't delete a record, you may want to alter the `delete()` method to be able to keep the record in the database and change the value of an is_deleted attribute to true instead. Usual object retrieval methods (`doSelect()`, `retrieveByPk()`) would only consider the records for which `is_deleted` is false. You would also need to add another method called `forceDelete()`, which would allow you to really delete the record. In fact, all these modifications can be packaged into a new class, called `ParanoidBehavior`. The final `Invoice` class extends the Propel `BaseInvoice` class and has methods of the `ParanoidBehavior` mixed in. 273 273 > 274 >So a behavior is a mixin on a Propel object. Actually, the term "behavior" in symfony covers one more thing: the fact that the mixin is packaged as a plug-in. The `ParanoidBehavior` class just mentioned corresponds to a real symfony plug-in called `sfPropelParanoidBehaviorPlugin`. Refer to the symfony wiki ([http://trac.symfony-project. com/wiki/sfPropelParanoidBehaviorPlugin](http://trac.symfony-project.com/wiki/sfPropelParanoidBehaviorPlugin)) for details on installation and use of this plug-in.274 >So a behavior is a mixin on a Propel object. Actually, the term "behavior" in symfony covers one more thing: the fact that the mixin is packaged as a plug-in. The `ParanoidBehavior` class just mentioned corresponds to a real symfony plug-in called `sfPropelParanoidBehaviorPlugin`. Refer to the symfony wiki ([http://trac.symfony-project.org/wiki/sfPropelParanoidBehaviorPlugin](http://trac.symfony-project.org/wiki/sfPropelParanoidBehaviorPlugin)) for details on installation and use of this plug-in. 275 275 > 276 276 >One last word about behaviors: To be able to support them, the generated Propel objects must contain quite a number of event notifications. These may slow down execution a little and penalize performance if you don't use behaviors. That's why the events are not enabled by default. In order to add them and enable behavior support, you must first set the `propel.builder.addBehaviors` property to `true` in the `propel.ini` file and rebuild the model. … … 504 504 The symfony project website contains a page dedicated to symfony plug-ins. It is in the symfony wiki and accessible with the following URL: 505 505 506 http://trac.symfony-project. com/wiki/SymfonyPlugins506 http://trac.symfony-project.org/wiki/SymfonyPlugins 507 507 508 508 Each plug-in listed there has its own page, with detailed installation instructions and documentation. … … 1073 1073 A symfony plug-in gets the broadest audience when distributed by the `symfony-project.com` website. Even your own plug-ins can be distributed this way, provided that you follow these steps: 1074 1074 1075 1. Make sure the `README` file describes the way to install and use your plug-in, and that the `LICENSE` file gives the license details. Format your `README` with the Wiki Formatting syntax ([http://trac.symfony-project. com/wiki/WikiFormatting](http://trac.symfony-project.com/wiki/WikiFormatting)).1075 1. Make sure the `README` file describes the way to install and use your plug-in, and that the `LICENSE` file gives the license details. Format your `README` with the Wiki Formatting syntax ([http://trac.symfony-project.org/wiki/WikiFormatting](http://trac.symfony-project.org/wiki/WikiFormatting)). 1076 1076 2. Create a PEAR package for your plug-in by calling the `pear package` command, and test it. The PEAR package must be named `sfSamplePlugin-1.0.0.tgz` (1.0.0 is the plug-in version). 1077 1077 3. Create a new page on the symfony wiki named `sfSamplePlugin` (`Plugin` is a mandatory suffix). In this page, describe the plug-in usage, the license, the dependencies, and the installation procedure. You can reuse the contents of the plug-in `README` file. Check the existing plug-ins' wiki pages and use them as an example. 1078 1078 4. Attach your PEAR package to the wiki page (`sfSamplePlugin-1.0.0.tgz`). 1079 5. Add the new plug-in wiki page (`[wiki:sfSamplePlugin]`) to the list of available plug-ins, which is also a wiki page ([http://trac.symfony-project. com/wiki/SymfonyPlugins](http://trac.symfony-project.com/wiki/SymfonyPlugins)).1079 5. Add the new plug-in wiki page (`[wiki:sfSamplePlugin]`) to the list of available plug-ins, which is also a wiki page ([http://trac.symfony-project.org/wiki/SymfonyPlugins](http://trac.symfony-project.org/wiki/SymfonyPlugins)). 1080 1080 1081 1081 If you follow this procedure, users will be able to install your plug-in by simply typing the following command in a project directory: doc/branches/1.1/book/18-Performance.txt
r10083 r10189 4 4 If you expect your website will attract a crowd, performance and optimization issues should be a major factor during the development phase. Rest assured, performance has always been a chief concern among the core symfony developers. 5 5 6 While the advantages gained by accelerating the development process result in some overhead, the core symfony developers have always been cognizant of performance requirements. Accordingly, every class and every method have been closely inspected and optimized to be as fast as possible. The basic overhead, which you can measure by comparing the time to display a "hello, world" message with and without symfony, is minimal. As a result, the framework is scalable and reacts well to stress tests. And as the ultimate proof, some websites with extremely high traffic (that is, websites with millions of active subscribers and a lot of server-pressuring Ajax interactions) use symfony and are very satisfied with its performance. Check the list of websites developed with symfony in the wiki ([http://trac.symfony-project. com/wiki/ApplicationsDevelopedWithSymfony](http://trac.symfony-project.com/wiki/ApplicationsDevelopedWithSymfony)) for names.6 While the advantages gained by accelerating the development process result in some overhead, the core symfony developers have always been cognizant of performance requirements. Accordingly, every class and every method have been closely inspected and optimized to be as fast as possible. The basic overhead, which you can measure by comparing the time to display a "hello, world" message with and without symfony, is minimal. As a result, the framework is scalable and reacts well to stress tests. And as the ultimate proof, some websites with extremely high traffic (that is, websites with millions of active subscribers and a lot of server-pressuring Ajax interactions) use symfony and are very satisfied with its performance. Check the list of websites developed with symfony in the wiki ([http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony](http://trac.symfony-project.org/wiki/ApplicationsDevelopedWithSymfony)) for names. 7 7 8 8 But, of course, high-traffic websites often have the means to expand the server farm and upgrade hardware as they see fit. If you don't have the resources to do this, or if you want to be sure the full power of the framework is always at your disposal, there are a few tweaks that you can use to further speed up your symfony application. This chapter lists some of the recommended performance optimizations at all levels of the framework and they are mostly for advanced users. Some of them were already mentioned throughout the previous chapters, but you will find it useful to have them all in one place. … … 549 549 Some features are useful only in development, so you should not activate them in production. This is already the case by default, since the production environment in symfony is really optimized for performance. Among the performance-impacting development features, the debug mode is the most severe. As for the symfony logs, the feature is also turned off in production by default. 550 550 551 You may wonder how to get information about failed requests in production if logging is disabled, and argue that problems arise not only in development. Fortunately, symfony can use the `sfErrorLoggerPlugin` plug-in, which runs in the background in production and logs the details of 404 and 500 errors in a database. It is much faster than the file logging feature, because the plug-in methods are called only when a request fails, while the logging mechanism, once turned on, adds a nonnegligible overhead whatever the level. Check the installation instructions and manual at [http://www.symfony-project.com/wiki/sfErrorLoggerPlugin](http://trac.symfony-project. com/wiki/sfErrorLoggerPlugin).551 You may wonder how to get information about failed requests in production if logging is disabled, and argue that problems arise not only in development. Fortunately, symfony can use the `sfErrorLoggerPlugin` plug-in, which runs in the background in production and logs the details of 404 and 500 errors in a database. It is much faster than the file logging feature, because the plug-in methods are called only when a request fails, while the logging mechanism, once turned on, adds a nonnegligible overhead whatever the level. Check the installation instructions and manual at [http://www.symfony-project.com/wiki/sfErrorLoggerPlugin](http://trac.symfony-project.org/wiki/sfErrorLoggerPlugin). 552 552 553 553 >**TIP** … … 596 596 And that's not all, because an evident test like the preceding one also gets optimized to an empty string. 597 597 598 To apply the optimizations, you must first install the plug-in from [http://trac.symfony-project. com/wiki/sfOptimizerPlugin](http://trac.symfony-project.com/wiki/sfOptimizerPlugin) and then call the `optimize` task, specifying an application and an environment:598 To apply the optimizations, you must first install the plug-in from [http://trac.symfony-project.org/wiki/sfOptimizerPlugin](http://trac.symfony-project.org/wiki/sfOptimizerPlugin) and then call the `optimize` task, specifying an application and an environment: 599 599 600 600 > php symfony optimize frontend prod doc/branches/1.1/cookbook/de/pager.txt
r10038 r10189 102 102 Um eine unmittelbare Navigation zum vorhergehenden oder nachfolgenden Artikel zu erhalten, ohne zurück zur blätterbaren Liste zu gehen, brauch man einen Cursor. 103 103 104 >**Tip**: Der oben stehende Code wird durch das `sfPagerNavigation` Plugin automatisiert. Auf seiner [Beschreibungsseite](http://trac.symfony-project. com/wiki/sfPagerNavigationPlugin) gibt es weitere Informationen zur Installation und Benutzung.104 >**Tip**: Der oben stehende Code wird durch das `sfPagerNavigation` Plugin automatisiert. Auf seiner [Beschreibungsseite](http://trac.symfony-project.org/wiki/sfPagerNavigationPlugin) gibt es weitere Informationen zur Installation und Benutzung. 105 105 106 106 Navigation zwischen den Objekten doc/branches/1.1/cookbook/de/propel_13.txt
r9570 r10189 67 67 Wenn ein bereits existierendes Projekt mit Propel 1.3 aktualisiert werden soll, kann noch etwas Anpassungsarbeit erforderlich sein, allerdings sollten große Teile des Projekts bereits jetzt funktionieren. Wenn Transaktionen oder Creole direkt vom Projektcode benutzt werden, müssen diese Stellen manuell auf PDO Code umgeschrieben werden. Auf den Webseiten des Propel Projektes gibt es [hilfreiche Upgrade Anleitungen](http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/Upgrading) welche durch den Upgradeprozess führen. Auch wenn das Projekt ein neues Projekt sein sollte oder es keine Probleme geben sollte, bieten die Propel Seiten einen guten Überblick über die neuen Features. 68 68 69 symfony 1.1 entkoppelt seine Kernkomponenten, so dass es nicht leichter sein kann ein ORM nach Wahl zu benutzen. Falls Propel nicht überzeugen sollte steht das [sfDoctrinePlugin](http://trac.symfony-project. com/wiki/sfDoctrinePlugin), eine Alternative zu Propel mit ähnlicher Performance und Features wie Propel 1.3, zum Ausprobieren bereit. Dank symfony 1.1 können Entwickler zwischen Propel 1.3 für Features und Performance oder Propel 1.2 für Absolute Stabilität, oder einem ganz anderen ORM, wählen.69 symfony 1.1 entkoppelt seine Kernkomponenten, so dass es nicht leichter sein kann ein ORM nach Wahl zu benutzen. Falls Propel nicht überzeugen sollte steht das [sfDoctrinePlugin](http://trac.symfony-project.org/wiki/sfDoctrinePlugin), eine Alternative zu Propel mit ähnlicher Performance und Features wie Propel 1.3, zum Ausprobieren bereit. Dank symfony 1.1 können Entwickler zwischen Propel 1.3 für Features und Performance oder Propel 1.2 für Absolute Stabilität, oder einem ganz anderen ORM, wählen. doc/branches/1.1/cookbook/en/behaviors.txt
r9725 r10189 301 301 To complete the plugin, you must add a `README` file at the root of the plugin's directory, with installation and usage instructions. The best behaviors also bundle unit tests. 302 302 303 Eventually, add a `package.xml` (either manually or by way of [sfPackageMakerPlugin](http://trac.symfony-project. com/trac/wiki/sfPackageMakerPlugin)), package the plugin with PEAR, and you are ready to reuse it. You can also post it in the symfony website.303 Eventually, add a `package.xml` (either manually or by way of [sfPackageMakerPlugin](http://trac.symfony-project.org/trac/wiki/sfPackageMakerPlugin)), package the plugin with PEAR, and you are ready to reuse it. You can also post it in the symfony website. 304 304 305 305 Passing a parameter to a behavior … … 365 365 ---------- 366 366 367 Propel Behaviors are nothing more than a set of predefined hooks, and a helper class designed to facilitate the registration of several hooks in a single statement. If you understand Mixins, it shouldn't be too hard to author your own behaviors. Make sure you check the [existing behavior plugins](http://trac.symfony-project. com/wiki/SymfonyPlugins#Propelbehaviorplugins) before starting your own: they are practical examples of the behaviors syntax.367 Propel Behaviors are nothing more than a set of predefined hooks, and a helper class designed to facilitate the registration of several hooks in a single statement. If you understand Mixins, it shouldn't be too hard to author your own behaviors. Make sure you check the [existing behavior plugins](http://trac.symfony-project.org/wiki/SymfonyPlugins#Propelbehaviorplugins) before starting your own: they are practical examples of the behaviors syntax. doc/branches/1.1/cookbook/en/cli.txt
r9725 r10189 228 228 The symfony wiki contains user-contributed configuration files to allow automatic completion of symfony commands. Check out the one that fits your CLI: 229 229 230 * [Bash completion](http://trac.symfony-project. com/wiki/BashCompletion)231 * [Zsh completion](http://trac.symfony-project. com/wiki/ZshCompletion)230 * [Bash completion](http://trac.symfony-project.org/wiki/BashCompletion) 231 * [Zsh completion](http://trac.symfony-project.org/wiki/ZshCompletion) doc/branches/1.1/cookbook/en/cookie.txt
r9725 r10189 214 214 --------------------------------------------- 215 215 216 The code descibed above can be quite a pain to rewrite for every new project. Fortunately, you can use the `sfGuardPlugin` for this purpose. Not only does it automate user management, permissions and credentials with a database, it also includes the "remember me" feature with a technique similar to that described here. So, the good way to enable persistent sessions is to [install the sfGuard plugin](http://trac.symfony-project. com/wiki/sfGuardPlugin).216 The code descibed above can be quite a pain to rewrite for every new project. Fortunately, you can use the `sfGuardPlugin` for this purpose. Not only does it automate user management, permissions and credentials with a database, it also includes the "remember me" feature with a technique similar to that described here. So, the good way to enable persistent sessions is to [install the sfGuard plugin](http://trac.symfony-project.org/wiki/sfGuardPlugin). doc/branches/1.1/cookbook/en/pager.txt
r9725 r10189 102 102 Once the article displayed, to allow a direct navigation to the previous or the next article without going back to the paginated list, you will need a cursor. 103 103 104 >**Tip**: The above code is automated by the `sfPagerNavigation` plugin. Refer to its [description page](http://trac.symfony-project. com/wiki/sfPagerNavigationPlugin) for more information on installation and use.104 >**Tip**: The above code is automated by the `sfPagerNavigation` plugin. Refer to its [description page](http://trac.symfony-project.org/wiki/sfPagerNavigationPlugin) for more information on installation and use. 105 105 106 106 Navigating across objects doc/branches/1.1/cookbook/en/propel_13.txt
r9557 r10189 67 67 If you are upgrading a project, you might still have a little bit of work ahead of you, but you should find that most of your project will work. If you use transactions or Creole directly in your code, you will have to manually upgrade to PDO. The Propel project has a [helpful upgrade guide](http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/Upgrading) that guides you through the upgrade process. Even if this is a new project, you might find it helpful to glance over it to learn about all the new features. 68 68 69 symfony 1.1 decouples its core systems, so it couldn't be easier to use any ORM layer you want. If Propel doesn't cut it for you, try [sfDoctrinePlugin](http://trac.symfony-project. com/wiki/sfDoctrinePlugin), which is a alternative to Propel and matches the performance of Propel 1.3. Thanks to symfony 1.1, developers can enjoy Propel 1.3 for improved performance or Propel 1.2 if they require rock solid stability.69 symfony 1.1 decouples its core systems, so it couldn't be easier to use any ORM layer you want. If Propel doesn't cut it for you, try [sfDoctrinePlugin](http://trac.symfony-project.org/wiki/sfDoctrinePlugin), which is a alternative to Propel and matches the performance of Propel 1.3. Thanks to symfony 1.1, developers can enjoy Propel 1.3 for improved performance or Propel 1.2 if they require rock solid stability. doc/branches/1.1/cookbook/en/syndication.txt
r9725 r10189 263 263 In the example, the `Post` object has a `getCreatedAt` 264 264 265 The same goes for the other possible fields of an Atom feed (including the categories, the summary, the unique id, etc.), and you are advised to [browse the source of the `sfFeed` class](http://trac.symfony-project. com/browser/plugins/sfFeedPlugin/lib) to discover all the deduction mechanisms.265 The same goes for the other possible fields of an Atom feed (including the categories, the summary, the unique id, etc.), and you are advised to [browse the source of the `sfFeed` class](http://trac.symfony-project.org/browser/plugins/sfFeedPlugin/lib) to discover all the deduction mechanisms. 266 266 267 267 All in all, the way the accessors of the `Post` and `Author` objects are built allow the built-in shortcuts of the `sfFeed` to work, and the creation of the feed to be so simple. doc/branches/1.1/cookbook/es/behaviors.txt
r10109 r10189 299 299 Para completar el plugin, se debe adicionar un fichero `README` en la ra�del directorio del plugin, con instrucciones de instalaci� modo de empleo. Los mejores comportamientos tambi�incluyen pruebas de unidad (*unit tests*). 300 300 301 Finalmente, adicione un `package.xml` (ya sea manualmente o mediante [sfPackageMakerPlugin](http://trac.symfony-project. com/trac/wiki/sfPackageMakerPlugin)), empaquete el plugin con PEAR, y est�isto para ser usado. Tambi�puede ser publicado en el sitio web de symfony.301 Finalmente, adicione un `package.xml` (ya sea manualmente o mediante [sfPackageMakerPlugin](http://trac.symfony-project.org/trac/wiki/sfPackageMakerPlugin)), empaquete el plugin con PEAR, y est�isto para ser usado. Tambi�puede ser publicado en el sitio web de symfony. 302 302 303 303 Pasando un par�tro a un comportamiento … … 360 360 Conclusi�--------- 361 361 362 Los comportamientos de Propel no son m�que un conjunto de ganchos predefinidos, y una clase ayudante (*helper*) dise� para facilitar el proceso de registrar varios ganchos en una sola instrucci�Si usted entiende los Mixins, no deber�resultarle muy dif�l crear su propios comportamientos. Aseg� de que verifica [plugins de comportamientos existentes](http://trac.symfony-project. com/wiki/SymfonyPlugins#Propelbehaviorplugins) antes de comenzar uno por su cuenta: hay ejemplo pr�icos de la sintaxis de los comportamientos.362 Los comportamientos de Propel no son m�que un conjunto de ganchos predefinidos, y una clase ayudante (*helper*) dise� para facilitar el proceso de registrar varios ganchos en una sola instrucci�Si usted entiende los Mixins, no deber�resultarle muy dif�l crear su propios comportamientos. Aseg� de que verifica [plugins de comportamientos existentes](http://trac.symfony-project.org/wiki/SymfonyPlugins#Propelbehaviorplugins) antes de comenzar uno por su cuenta: hay ejemplo pr�icos de la sintaxis de los comportamientos. 363 363 364 364 >**Nota del traductor**: *Los ejemplos carecen de traducci�n lo referente a nombres de tablas, columnas y clases de objetos, debido a que ciertos nombres de columnas tienen que ser en ingl�para que su funcionamiento por defecto funcione tal y como se dice en el ejemplo. Por ejemplo, las columnas `created_at`, `updated_at`, entre otras son manejadas por symfony y/o plugins autom�camente, lo cual no evita que puedan ser nombradas por ejemplo `fecha_de_creacion` y `fecha_de_modificacion`, solo que en tales casos habr�que realizar algunos ajustes adicionales con los que no cuentan los ejemplos. Por otra parte, los objetos creados por el ORM contar�con getters y setters por lo cual resultar�bastante conveniente evitar la mezcla de idiomas en el nombre de dichas funciones.* doc/branches/1.1/cookbook/es/cli.txt
r10109 r10189 224 224 La wiki de symfony contiene ficheros de configuraciones contribu�s por los usuarios (*user-contributed*) para permitir completamiento autom�co de los comandos de symfony. Encuentre la que mejor se ajuste a su CLI: 225 225 226 * [completamiento Bash](http://trac.symfony-project. com/wiki/BashCompletion)227 * [completamiento Zsh](http://trac.symfony-project. com/wiki/ZshCompletion)226 * [completamiento Bash](http://trac.symfony-project.org/wiki/BashCompletion) 227 * [completamiento Zsh](http://trac.symfony-project.org/wiki/ZshCompletion) doc/branches/1.1/cookbook/es/propel_13.txt
r9557 r10189 67 67 Si estás actualizando un proyecto, es posible que te quede un poco de trabajo por delante, pero debes encontrar que la mayor parte de tu proyecto funcionará. Si utilizas transacciones o Creole directamente en tu código, tendrás que atualizarlo a *PDO* manualmente. El proyecto Propel tiene una [útil guía de actualización](http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/Upgrading) que te guía a traves del proceso de actualización. Aún si se trata de un nuevo proyecto, puede que encuentres útil echarle un vistazo para aprender todas las nuevas características (o funcionalidades, del inglés *features*). 68 68 69 Symfony 1.1 desacopla su sistema núcleo, así que no podría ser más fácil utilizar cualquier capa *ORM* (mapeo objeto-relacional, del inglés, *Object Relational Mapping*) que desees. Si Propel no satisface tus necesidades, prueba [sfDoctrinePlugin](http://trac.symfony-project. com/wiki/sfDoctrinePlugin), que es una alternativa a Propel e iguala el rendimiento de Propel 1.3 (ya que igualmente utiliza *PDO*). Gracias a Symfony 1.1, los desarrolladores pueden disfrutar Propel 1.3 para mejoramiento del rendimiento o Propel 1.2 si requieren una estabilidad sólida como roca.69 Symfony 1.1 desacopla su sistema núcleo, así que no podría ser más fácil utilizar cualquier capa *ORM* (mapeo objeto-relacional, del inglés, *Object Relational Mapping*) que desees. Si Propel no satisface tus necesidades, prueba [sfDoctrinePlugin](http://trac.symfony-project.org/wiki/sfDoctrinePlugin), que es una alternativa a Propel e iguala el rendimiento de Propel 1.3 (ya que igualmente utiliza *PDO*). Gracias a Symfony 1.1, los desarrolladores pueden disfrutar Propel 1.3 para mejoramiento del rendimiento o Propel 1.2 si requieren una estabilidad sólida como roca. doc/branches/1.1/cookbook/fr/propel_13.txt
r9521 r10189 70 70 Si vous mettez à jour un projet, un peu de travail vous attend peut-être encore, mais la plus grande partie de votre projet devrait fonctionner sans problème. Si vous utilisez des transactions ou bien Creole de manière directe, vous allez devoir mettre à jour vers PDO les parties de code concernées manuellement. Le projet Propel met à disposition un [guide de mise à jour](http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/Upgrading) très utile, qui vous accompagnera lors de la phase de mise à jour. Même s'il s'agit d'un nouveau projet, vous devriez trouver ce dernier d'une grande aide afin de vous tenir informé de toutes les nouvelles fonctionnalités. 71 71 72 symfony 1.1 possède un coeur modulaire, il ne peut donc pas être rendu plus simple la possibilité d'utiliser n'importe quel ORM de votre choix. Si Propel ne vous convient pas, vous pouvez essayer [sfDoctrinePlugin](http://trac.symfony-project. com/wiki/sfDoctrinePlugin), une alternative à Propel, offrant les mêmes performances que Propel 1.3. Grâce à symfony 1.1, les développeurs peuvent apprécier l'utilisation de Propel 1.3 pour ses performances accrues, ou bien celle de Propel 1.2 s'ils préfèrent privilégier d'une stabilité à toute épreuve.72 symfony 1.1 possède un coeur modulaire, il ne peut donc pas être rendu plus simple la possibilité d'utiliser n'importe quel ORM de votre choix. Si Propel ne vous convient pas, vous pouvez essayer [sfDoctrinePlugin](http://trac.symfony-project.org/wiki/sfDoctrinePlugin), une alternative à Propel, offrant les mêmes performances que Propel 1.3. Grâce à symfony 1.1, les développeurs peuvent apprécier l'utilisation de Propel 1.3 pour ses performances accrues, ou bien celle de Propel 1.2 s'ils préfèrent privilégier d'une stabilité à toute épreuve. 73 73 doc/branches/1.1/cookbook/fr/syndication.txt
r9725 r10189 269 269 Dans cet exemple, l'objet `Post` a une méthode `getCreatedAt()` 270 270 271 Le principe est le même pour les autres champs possibles du flux (catégorie, résumé, identifiant etc...). Vous êtes fortement invité [parcourir le code la classe "sfFeed"](http://trac.symfony-project. com/browser/plugins/sfFeedPlugin/lib) pour découvrir par vous même tout les mécanismes de déduction.271 Le principe est le même pour les autres champs possibles du flux (catégorie, résumé, identifiant etc...). Vous êtes fortement invité [parcourir le code la classe "sfFeed"](http://trac.symfony-project.org/browser/plugins/sfFeedPlugin/lib) pour découvrir par vous même tout les mécanismes de déduction. 272 272 273 273 doc/branch