Development

Documentation/fr_FR/book/1.0/trunk/09-Links-and-the-Routing-System (diff)

You must first sign up to be able to contribute.

Changes between Version 18 and Version 19 of Documentation/fr_FR/book/1.0/trunk/09-Links-and-the-Routing-System

Show
Ignore:
Author:
Geoff (IP: 62.160.56.44)
Timestamp:
06/30/08 17:07:26 (9 years ago)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/fr_FR/book/1.0/trunk/09-Links-and-the-Routing-System

    v18 v19  
    189189      RewriteEngine On 
    190190 
    191       # on we skip all files with .something 
     191      # on ne tient pas compte de fichiers avec .truc 
    192192      RewriteCond %{REQUEST_URI} \..+$ 
    193193      RewriteCond %{REQUEST_URI} !\.html$ 
    194194      RewriteRule .* - [L] 
    195195 
    196       # we check if the .html version is here (caching) 
     196      # on vérifie la présence du .html (caching) 
    197197      RewriteRule ^$ index.html [QSA] 
    198198      RewriteRule ^([^.]+)$ $1.html [QSA] 
    199199      RewriteCond %{REQUEST_FILENAME} !-f 
    200200 
    201       # no, so we redirect to our front web controller 
     201      # non, donc on redirige vers le contrôleur principal 
    202202      RewriteRule ^(.*)$ index.php [QSA,L] 
    203203    </IfModule> 
    204204 
    205205 
    206 Le serveur web inspecte l'URI qu'il reçoit. Si elle ne contient pas de suffixe et que la page cible n'est en cache (Chapter 12 covers caching), alors la requête est rattachée à `index.php`. 
    207  
    208 However, the `web/` directory of a symfony project is shared among all the applications and environments of the project. It means that there is usually more than one front controller in the web directory. For instance, a project having a `frontend` and a `backend` application, and a `dev` and `prod` environment, contains four front controller scripts in the `web/` directory: 
    209  
    210     index.php         // frontend in prod 
    211     frontend_dev.php  // frontend in dev 
    212     backend.php       // backend in prod 
    213     backend_dev.php   // backend in dev 
    214  
    215 The mod_rewrite settings can specify only one default script name. If you set no_script_name to on for all the applications and environments, all URLs will be interpreted as requests to the `frontend` application in the `prod` environment. This is why you can have only one application with one environment taking advantage of the URL rewriting for a given project
     206Le serveur web inspecte l'URI qu'il reçoit. Si elle ne contient pas de suffixe et que la page cible n'est en cache (Chapitre 12 covers caching), alors la requête est rattachée à `index.php`. 
     207 
     208Cependant, le répertoire `web\` d'un projet Symfony est partagé par tout les applications et tous les environnements du projet. Cle veut donc dire qu'il existe plus d'un contrôleur principal dans le répertoire web. par exemple, un projet possédant une application `frontend` et une `backend`, un environnement de développement (`dev`) et un de production (`prod`) possèdera quatre scripts de contrôleurs principaux dans le répertoire web. 
     209 
     210    index.php         // frontend en prod 
     211    frontend_dev.php  // frontend en dev 
     212    backend.php       // backend en prod 
     213    backend_dev.php   // backend en dev 
     214 
     215Le paramétrage du mod_rewrite n'accepte qu'un seul script par défaut. Si vous précisez no_script_name à 'on' pour toutes les applications et les environnements, toutes les URL seront interprétées comme des requêtes à l'application `frontend` de l'environnement `prod`. C'est pourquoi seul une application d'un environnement peut tiré avantage de l'URL rewriting pour une projet donné
    216216 
    217217>**TIP** 
    218 >There is a way to have more than one application with no script name. Just create subdirectories in the web root, and move the front controllers inside them. Change the `SF_ROOT_DIR` constants definition accordingly, and create the `.htaccess` URL rewriting configuration that you need for each application. 
    219  
    220 Link Helpers 
    221 ------------ 
    222  
    223 Because of the routing system, you should use link helpers instead of regular `<a>` tags in your templates. Don't look at it as a hassle, but rather as an opportunity to keep your application clean and easy to maintain. Besides, link helpers offer a few very useful shortcuts that you don't want to miss. 
    224  
    225 ### Hyperlinks, Buttons, and Forms 
    226  
    227 You already know about the `link_to()` helper. It outputs an XHTML-compliant hyperlink, and it expects two parameters: the element that can be clicked and the internal URI of the resource to which it points. If, instead of a hyperlink, you want a button, use the `button_to()` helper. Forms also have a helper to manage the value of the `action` attribute. You will learn more about forms in the next chapter. Listing 9-7 shows some examples of link helpers. 
    228  
    229 Listing 9-7 - Link Helpers for `<a>`, `<input>`, and `<form>` Tags 
    230  
    231     [php] 
    232     // Hyperlink on a string 
     218> Il existe un moyen pour avoir plus d'une application avec no_script_name. Créez simplement des sous_répertoires à la racine et dépacez-y les contrôleurs. Modifier les constantes de `SF_ROOT_DIR` en conséquence et créez `.htaccess` avec le paramétrage dont vous avez besoin pour chacun des contrôleurs. 
     219 
     220Les helpers de liens 
     221-------------------- 
     222 
     223En raison du système de routage vous devez utiliser le helper de liens à la balise de la balise <a>. N'y voyez pas une contrainte mais plutôt l'opportunité de garder votre application propre et facile à maintenir. En outre, le helper de liens offre quelques raccourcis dont vous ne voudrez plus vous passer 
     224 
     225### Hyperlinks, boutons et formulaires 
     226 
     227Vous savez déjà tout à propos du helper `link_to()`. Il renvoi un hyper lien XHTML compatible et attends deux paramètres : l'élément cliquable et l'URI interne pointant sur la ressource concernée. Si à la place d'un lien vous souhaitez un bouton, utilisez le helper `button_to()`. Les formulaires aussi possèdent des helpers pour gérer les valeur des attributs `action`, mais vous en apprendrez plus sur les formulaires au prochain chapitre. Le listing 9-7 montre quelques exemple de helpers liens 
     228 
     229Listing 9-7 - Helpers de liens pour les balises `<a>`, `<input>` et `<form>`  
     230    [php] 
     231    // Hyperlien dans une chaine 
    233232    <?php echo link_to('my article', 'article/read?title=Finance_in_France') ?> 
    234233     => <a href="/routed/url/to/Finance_in_France">my article</a> 
    235234 
    236     // Hyperlink on an image 
     235    // Hyperlien dans une image 
    237236    <?php echo link_to(image_tag('read.gif'), 'article/read?title=Finance_in_France') ?> 
    238237     => <a href="/routed/url/to/Finance_in_France"><img src="/images/read.gif" /></a> 
    239238 
    240     // Button tag 
     239    // Balise bouton 
    241240    <?php echo button_to('my article', 'article/read?title=Finance_in_France') ?> 
    242241     => <input value="my article" type="button"onclick="document.location.href='/routed/url/to/Finance_in_France';" /> 
    243242 
    244     // Form tag 
     243    // Balise formulaire 
    245244    <?php echo form_tag('article/read?title=Finance_in_France') ?> 
    246245     => <form method="post" action="/routed/url/to/Finance_in_France" /> 
    247246 
    248 Link helpers can accept internal URIs as well as absolute URLs (starting with `http://`, and skipped by the routing system) and anchors. Note that in real-world applications, internal URIs are built with dynamic parameters. Listing 9-8 shows examples of all these cases. 
    249  
    250 Listing 9-8 - URLs Accepted by Link Helpers 
    251  
    252     [php] 
    253     // Internal URI 
     247Les helpers de liens accepte aussi bien les URI interne que les les URL absolue (commencant par `http://` et ignorées par le système de routage) et le ancres.  
     248Il est à noter que dans les applications du monde réel, les URI internes sont construits avec des paramètres dynamiques. Listing 9-8 montre des exemples de tous ces cas. 
     249 
     250Listing 9-8 - URLs acceptées par les helpers de liens 
     251    [php] 
     252    // URI interne 
    254253    <?php echo link_to('my article', 'article/read?title=Finance_in_France') ?> 
    255254     => <a href="/routed/url/to/Finance_in_France">my article</a> 
    256255 
    257     // Internal URI with dynamic parameter
     256    // URI interne avec paramètres dynamique
    258257    <?php echo link_to('my article', 'article/read?title='.$article->getTitle()) ?> 
    259258 
    260     // Internal URI with anchor
     259    // URI interne avec ancre
    261260    <?php echo link_to('my article', 'article/read?title=Finance_in_France#foo') ?> 
    262261     => <a href="/routed/url/to/Finance_in_France#foo">my article</a> 
    263262 
    264     // Absolute URL 
     263    // URL absolue 
    265264    <?php echo link_to('my article', 'http://www.example.com/foobar.html') ?> 
    266265     => <a href="http://www.example.com/foobar.html">my article</a> 
    267266 
    268 ### Link Helper Options 
     267### Les options du helper de liens 
    269268 
    270269As explained in Chapter 7, helpers accept an additional options argument, which can be an associative array or a string. This is true for link helpers, too, as shown in Listing 9-9.