57
8/17/2019 buenas_practicas_symfony.pdf http://slidepdf.com/reader/full/buenaspracticassymfonypdf 1/57 !"#$%&'(# )*#"(+ -%.(+/"($ $0*+ '(*1($ 2*1"($ (34"!45 #4(+*& -$6/."/*& -*$* *-!"/*/"%+(& &07)%+0

buenas_practicas_symfony.pdf

Embed Size (px)

Citation preview

Page 1: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 1/57

!"#$%&'(#

)*#"(+ -%.(+/"($

$0*+ '(*1($

2*1"($ (34"!45

#4(+*&-$6/."/*&-*$* *-!"/*/"%+(&

&07)%+0

Page 2: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 2/57

Esta página se ha dejado vacía a propósito

Page 3: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 3/57

!"#$%& #& %(")&"$#(*!"#$%&'( *+  !"# %&'("# )*+,-.,"# /'0 1*"2'34*5 67214(7 8 8 8 8 8 8 8 8 8 9

*+*+ ,-. /&0 1(.232%4 42%" 5&$"6+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7*+8+ 9 /&30. 24 :3;354 42%4 '3<;( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + =

*+>+ ?" "#'31"13@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + =

!"#$%&'( 8+  :*'"(/4 '0 )*47',-4 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ;

8+*+ A.2%"'".:( BCDE(.C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + F

8+8+ !;4".:( '" "#'31"13@. :4' <'(5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + G

8+>+ -2%;&1%&;".:( '" "#'31"13@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + H

8+I+ ?(2 <&.:'42 :4 '" "#'31"13@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *J8+7+ K%3'3L".:( (%;" 42%;&1%&;" :4 :3;41%(;3(2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + **

!"#$%&'( >+  :4(1.<&*",.=( 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 >?

>+*+ !(.E35&;"13@. ;4'"13(.":" 1(. '" 3.E;"42%;&1%&;" + + + + + + + + + + + + + + + + + + + + + + + + *>

>+8+ !(.E35&;"13@. ;4'"13(.":" 1(. '" "#'31"13@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + *I

>+>+ M( &%3'3142 '" 1(.E35&;"13@. 24DN.%31" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *=

>+I+ O4E3.4 '"2 (#13(.42 :4 1(.E35&;"13@. 24.23<'42 E&4;" :4 BCDE(.C+ + + + + + + + + + *=

!"#$%&'( I+  @*<"(.A"(/4 0" 0=<.," /' ('<4,.4 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 >;

I+*+ 9'D"14.".:( 1'"242 E&4;" :4' !"#$%& + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *F

I+8+ !(.E35&;".:( '(2 24;P313(2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *G

I+>+ K%3'3L".:( &." 1"#" :4 #4;232%4.13" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8J

I+I+ -2%N.:";42 :4 1@:35( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8>

!"#$%&'( 7+  :4(-*40"/4*'# 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 B9

7+*+ !(.E35&;".:( 4' 4.;&%"D34.%( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8=

7+8+ !(.E35&;".:( '"2 #'".%3''"2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8=

7+>+ !@D( :4<4;$". 24; '(2 1(.%;('":(;42 BCDE(.C + + + + + + + + + + + + + + + + + + + + + + + + + + 8F

7+I+ K%3'3L".:( '(2 Q";"D!(.P4;%4; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8F

7+7+ -R41&%".:( 1@:35( ".%42 C :42#&02 :4' 1(.%;('":(; + + + + + + + + + + + + + + + + + + + + + + 8H

!"#$%&'( =+  C0"(-.00"# 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ?>

=+*+ S;5".3L".:( '"2 #'".%3''"2+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >*

=+8+ -T%4.23(.42 UV35 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >8

!"#$%&'( F+  D4*2&0"*.4# 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ?9

Page 4: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 4/57

F+*+ !;4".:( '(2 E(;D&'";3(2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >7

F+8+ !(.E35&;".:( '(2 <(%(.42 :4' E(;D&'";3( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >=

F+>+ W4.:4;3L".:( 4' E(;D&'";3( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >G

F+I+ Q;(142".:( 4' 4.P$( :4 E(;D&'";3(2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + >G

!"#$%&'( G+   E(-'*(",.4("0.A",.=(8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 F>

G+*+ X(;D"%( :4 '(2 ";1Y3P(2 :4 %;":&113@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I*

G+8+ S;5".3L".:( '(2 ";1Y3P(2 :4 %;":&113@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I8

G+>+ O4E3.34.:( 1'"P42 #";" '"2 %;":&113(.42 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I8

G+I+ -R4D#'( :4 ";1Y3P( :4 %;":&113@.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I8

!"#$%&'( H+  6'<&*./"/8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 F9

H+*+ 9&%4.%31"13@. C '()&*+%%,  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I7H+8+ 9&%(;3L"13@. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + I=

H+>+ ?" ".(%"13@. ZB41&;3%C+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IF

H+I+ !(D#;(<".:( '(2 #4;D32(2 23. !"#$%&'() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IH

H+7+ ?(2 -&.")(/0 23/&), + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IH

H+=+ B35&34.%42 #"2(2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7*

!"#$%&'( *J+  G##'-# 3'% 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9?

*J+*+ K%3'3L".:( 9224%31 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7>*J+8+ 9#'31"13(.42 <"2":"2 4. 4' ')3#/&#$+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7I

!"#$%&'( **+  H'#-# 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 99

**+*+ U42%2 &.3%";3(2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 77

**+8+ U42%2 E&.13(."'42 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 77

**+>+ U42%2 #";" 4' 1@:35( ["P"B1;3#% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7F

Page 5: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 5/57

+,-.)/0( 12

3,* 4/&",* -56%)$%,* #&0

75,8&9(5: ;<87("<-' E;"D4V(;\ BCDE(.C 42 1(.(13:( #(; 24; 2&7 10'I.%0'] C" /&4 24 &%3'3L" 4. ND<3%(2 %". :3E4;4.%42

1(D( 23%3(2 V4< :3D3.&%(2] "#'31"13(.42 4D#;42";3"'42 /&4 23;P4. D3'42 :4 D3''(.42 :4 #4%313(.42 4

3.1'&2( 1(D( <"24 :4 (%;(2 E;"D4V(;\2+

O42:4 /&4 24 #&<'31@ 4. R&'3( :4 8J**] '" 1(D&.3:": BCDE(.C Y" ;41(;;3:( &. '";5( 1"D3.( :4 "#;4.^

:3L"R4] %".%( 4. '( /&4 24 ;4E34;4 " /&0 42 1"#"L BCDE(.C :4 Y"14;] 1(D( 4. 1&N' 42 '" D4R(; D".4;"

:4 Y"14;'(+

?(2 :3E4;4.%42 ;41&;2(2 1;4":(2 #(; '" 1(D&.3:":] :42:4 ";%$1&'(2 :4 <'(52 Y"2%" #;424.%"13(.42 4.

1(.E4;4.13"2] Y". (;353.":( &." 24;34 :4 ;41(D4.:"13(.42 C <&4."2 #;N1%31"2 3'(.(3,+, #";" :42";;(^

''"; "#'31"13(.42 BCDE(.C+ ?"D4.%"<'4D4.%4] D&1Y"2 :4 42%"2 ;41(D4.:"13(.42 2(. 4;;@.4"2+ O4 Y4^

1Y(] 1(D#'31". 4. 4T142( 4' :42";;(''( :4 "#'31"13(.42 C .( 235&4. 4. "<2('&%( '" E3'(2(E$" #;"5DN%31"

:4 '(2 1;4":(;42 :4 BCDE(.C+

1212 =>" ?/@ %("*$*)& &*), A/.,B-' (<R4%3P( :4 42%" 5&$" 42 2('&13(."; 4' #;(<'4D" ".%4;3(; 42%"<'4134.:( &." 24;34 :4  %&'("# )*+,J

-.,"# 41.,."0'# )"*" /'#"**400"* ")0.,",.4('# ,4( '0 1*"2'34*5 67214(7B + -2%"2 2(. '"2 <&4."2#;N1%31"2 /&4 D4R(; 4.1"R". 1(. '" E3'(2(E$" :4' E;"D4V(;\ 245_. 2& #;3.13#"' ;42#(.2"<'4] X"<34. Q(^

%4.134; `Y%%#2abb1(..41%+24.23('"<2+1(Db#;(E3'4bE"<#(%c +

B"<4D(2 /&4 42 :3E$13' :42Y"14;24 :4 '(2 YN<3%(2 ":/&3;3:(2 :&;".%4 "d(2 C #(; 42( #&4:4 /&4 "'5&."

:4 42%"2 <&4."2 #;N1%31"2 %4 1Y(/&4 ( .( 42%02 :4 "1&4;:( 1(. 4''"+ -. 1&"'/&34; 1"2(] 1;44D(2 /&4

23 235&42 42%"2 <&4."2 #;N1%31"2 #(:;N2 :42";;(''"; "#'31"13(.42 D&1Y( DN2 ;N#3:(] D&1Y( DN2 EN13'^

D4.%4 C 1(. '" D32D" ( DN2 1"'3:": :4 234D#;4+ 9:4DN2] 42%" '32%" :4 <&4."2 #;N1%31"2 24 "D#'3";N C

"1%&"'3L";N :4 D".4;" 1(.%3.&" " #";%3; :4 "Y(;"+

-. 1&"'/&34; 1"2(] %4. 4. 1&4.%" /&4 42%( 2(. *',42'/",.4('# 4),.4("0'# /&4 %_ C %& 4/&3#( #(:032

245&3; ( .( "' :42";;(''"; "#'31"13(.42 BCDE(.C+ B3 #;4E34;42 245&3; &%3'3L".:( %&2 #;(#3"2 D4%(:('(^

5

Page 6: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 6/57

5$"2 C <&4."2 #;N1%31"2] 4;42 '3<;4 :4 Y"14;'(+ BCDE(.C 42 E'4T3<'4 C 24 ":"#%";N " %& E(;D" :4 %;"<"R";+

-2( .&.1" P" " 1"D<3";+

12C2 D ?/$@" *& #$5$A& &*)& 0$45(-2%" 5&$" 42%N #4.2":" #";" 1&"'/&34; #;(5;"D":(; BCDE(.C] 23. 3D#(;%"; 23 42 4T#4;%( ( #;3.13#3".^

%4+ M( (<2%".%4] 1(D( 42%" 5&$" .( 42 &. %&%(;3"' #"2( " #"2(] 42 .4142";3( :32#(.4; :4 134;%(2 1(.(^

13D34.%(2 <N231(2 :4 BCDE(.C #";" #(:4; 245&3;'"+ e 23 .( 2"<42 .":" :4 BCDE(.C] f<34.P4.3:( " '"

1(D&.3:":g C .( ('P3:42 '44; #;3D4;( 4' %&%(;3"'  4&//(#5 -/+)/&$ `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b

/&31\h%(&;b%Y4h<35h#31%&;4+Y%D'c +

9:4DN2] Y4D(2 :413:3:( /&4 42%" 5&$" 24" '( DN2 1(;%" #(23<'4] #";" /&4 24 " D&C EN13' '44;'" C 1(.^

2&'%";'" '"2 P4142 /&4 .41423%42+ 92$ /&4 .( P"D(2 " ;4#4%3; '"2 4T#'31"13(.42 /&4 #&4:42 4.1(.%;";

4. '" :(1&D4.%"13@. :4 BCDE(.C] 1(D( /&0 42 '" 3.C4113@. :4 :4#4.:4.13"2 ( 1@D( E&.13(.". '(2

1(.%;('":(;42 E;(.%"'42+ M(2 14.%;";4D(2 4T1'&23P"D4.%4 4. 4T#'31"; 1@D( Y"14; '( /&4 C" 1(.(142+

12E2 3, ,-0$%,%$F" [&.%( 1(. 42%" 5&$" 4.1(.%;";N2 &." "#'31"13@. :4 #;&4<" :42";;(''":" %4.34.:( 4. 1&4.%" %(:"2 42%"2

;41(D4.:"13(.42+ !" ")0.,",.=( '# -"( #'(,.00" ,424 &( %04<] C" /&4 /&4;4D(2 /&4 %4 E3R42 4T1'&^

23P"D4.%4 4. '( /&4 42%N ;4'"13(.":( 1(. BCDE(.C C %4 ('P3:42 :4 '"2 #";%31&'";3:":42 :4 '" #;(#3"

"#'31"13@.+

9&./&4 '" "#'31"13@. 42 24.13''" .( '" P"D(2 " :42";;(''"; #"2( " #"2( 4. '" 5&$"+ -. 2& '&5";] 24'41^

13(.";4D(2 "'5&.(2 %;(L(2 :4 1@:35( " '( '";5( :4 '(2 235&34.%42 1"#$%&'(2+ -. 4' _'%3D( 1"#$%&'( 24

4T#'31" 1@D( 3.2%"'"; '" "#'31"13@.+

Capítulo 1. Las buenas prácticas del framework Symfony Buenas prácticas oficiales de Symfony

6

Page 7: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 7/57

+,-.)/0( C2

+5&,"#( &0 -5(<&%)(C212 G"*),0,"#( ;<87("<B('"D4.%4 4T32%4 &." D".4;" ;41(D4.:":" #";" 3.2%"'"; BCDE(.Ca

!(D#(24; 42 4' 542%(; :4 :4#4.:4.13"2 /&4 &%3'3L". %(:"2 '"2 "#'31"13(.42 QiQ D(:4;."2+ j;"13"2 "

!(D#(24; #(:;N2 "d":3; ( /&3%"; EN13'D4.%4 :4#4.:4.13"2 4. %&2 #;(C41%(2 C %"D<30. #(:;N2 "1%&"^

'3L"; 23. 42E&4;L( '"2 P4;23(.42 :4 '"2 '3<;4;$"2 :4 %4;14;(2 /&4 &%3'3L"2 4. %&2 "#'31"13(.42+

C21212 H&*)$(","#( #&-&"#&"%$,* %(" +(8-(*&59.%42 :4 3.2%"'"; BCDE(.C] "245_;"%4 :4 /&4 %34.42 :42)4#'* .(#-"0"/4 <04%"02'(-'+ 9<;4 %& 1(.^

2('" :4 1(D".:(2 ( %4;D3."' C 4R41&%" 4' 235&34.%4 1(D".:(a

* $,-.,/#& 001#&/',2

3,-.,/#& 1#&/',2 4#56778#5597:4#;$9<$9;=#8799>?;$8?<;47>? 5<4>0<:044 48@>=@>:

-. %& 1"2( P4;N2 &. 3:4.%3E31":(; :4 P4;23@. :3E4;4.%4+ M( %4 #;4(1&#42 #(;/&4 1(D( !(D#(24; 24

"1%&"'3L" 1(.%3.&"D4.%4] 2& P4;23@. .( 3D#(;%" 234D#;4 /&4 24" ;4134.%4+

C212C2 G"*),0,"#( +(8-(*&5 A0(4,08&")&B3 %(:"P$" .( Y"2 3.2%"'":( !(D#(24; 5'(<"'D4.%4 4. %& (;:4.":(;] 4R41&%" '(2 235&34.%42 1(D".:(2

4. %& 232%4D" (#4;"%3P( ?3.&T ( k"1 SB l `.( %4 "2&2%42] #4;( 4' 245&.:( 1(D".:( %4 #4:3;N %& 1(.^

%;"24d" :4 &2&";3(ca

* $%&A 0/" B((./@CCD#($,-.,/#&E,&DC'2/(?AA#& F .B.

* /%9, -1 $,-.,/#&E.B?& C%/&CA,$?ACG'2C$,-.,/#&

K%3'3L" !(D#(24; `Y%%#2abb54%1(D#(24;+(;5bc #";" 3.2%"'"; BCDE(.C+IJ>KD LMN+OG+D

O4#4.:34.:( :4 '" :32%;3<&13@. :4 ?3.&T /&4 &%3'3142 42 #(23<'4 /&4 :4<"2 4R41&%"; 4' 1(D".:(/% 4. P4L :4 /%9,+KPOD

7

Page 8: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 8/57

B3 %& 232%4D" (#4;"%3P( 42 m3.:(V2] :421";5" 4' 3.2%"'":(; :4 !(D#(24; `Y%%#2abb54%1(D#(24;+(;5b

:(V.'(":bc :42:4 2& 23%3( V4< (E313"'] 4R41_%"'( C 235&4 '(2 #"2(2 /&4 24 3.:31".+

C2C2 +5&,"#( 0, ,-0$%,%$F" #&0 40(A9Y(;" /&4 C" %4.4D(2 %(:( '32%(] C" #(:4D(2 1;4"; &. .&4P( #;(C41%( BCDE(.C+ Q";" 4''(] "<;4 %&

1(.2('" :4 1(D".:(2] 4.%;" 4. &. :3;41%(;3( :(.:4 %4.5"2 #4;D32( #";" 1;4"; ";1Y3P(2 C :3;41%(;3(2

`#(; 4R4D#'(] .&,)#$(,/Cc C 4R41&%" '( 235&34.%4a

* $9 .&,)#$(,/C

* $,-.,/#& $&#?(#0.&,H#$( /)-7,2)C7&?-#I,&J0/(?29?&90#9'(',2 GA,DC

-2%4 1(D".:( 1;4";N &. .&4P( :3;41%(;3( ''"D":( GA,DC /&4 1(.%34.4 &." "#'31"13@. BCDE(.C P"1$"

<"2":" 4. '" P4;23@. DN2 ;4134.%4 :32#(.3<'4 :4' E;"D4V(;\+

C2C212 +(8-5(4,"#( 0, $"*),0,%$F" #& ;<87("<!&".:( %4;D3.4 '" 3.2%"'"13@. :4 BCDE(.C] 4.%;" 4. 4' :3;41%(;3( GA,DC C 4R41&%" 42%4 1(D".:( #";"

1(D#;(<"; /&4 BCDE(.C 24 Y" 3.2%'":( 1(;;41%"D4.%4a

* $9 GA,DC

* .B. ?..C$,2/,A# 001#&/',2

")-7,2) 1#&/',2 5E=EK 0 ?..C9#1C9#G%D

B3 P42 '" P4;23@. 3.2%"'":" :4 BCDE(.C] %(:( E&.13(.@ 1(;;41%"D4.%4+ B3 .(] 4R41&%" 4' 235&34.%4 ,.)(6/ 

#";" :4%41%"; /&0 42%N E"''".:( 4. %& (;:4.":(; C /&4 3D#3:4 4R41&%"; "#'31"13(.42 BCDE(.Ca

* $9 .&,)#$(,/CGA,DC

* .B. ?..C$B#$JE.B.

O4#4.:34.:( :4' 42%":( :4 %& (;:4.":(;] 4' ;42&'%":( :4' ,.)(6/  ".%4;3(; #&4:4 24; &." ( :(2 '32%"2+ ?"

#;3D4;" '32%" 42 '" :4 '(2 ;4/&323%(2 %01.31(2 (<'35"%(;3(2 /&4 %& 232%4D" .( 1&D#'4+ ?" 245&.:" '32%"

D&42%;" '(2 ;4/&323%3(2 (#13(."'42 /&4 %"D#(1( 1&D#'42] #4;( /&4 .( %4 3D#3:4. 4R41&%"; "#'31"13(^

.42 BCDE(.C ̀ 2( 23D#'4D4.%4 ;41(D4.:"13(.42 #";" /&4 BCDE(.C 24 4R41&%4 D4R(;ca

")-7,2)5 L#M%'&#-#2(/ 3B#$J#&NNNNNNNNNNNNNNNNNNNNNNNNNNNNN

O PQP '/ %/'2D (B# 7,AA,I'2D .B.E'2' 7'A#@

C%/&CA,$?ACR#29C#($C.B.E'2'

O 3B#$J'2D ")-7,2) &#M%'&#-#2(/@

EEEEESEEEEEEEEEEEEEEEEEEEEEEEEETEEEEE

USLLVLW

X,%& /)/(#- '/ 2,( &#?9) (, &%2 ")-7,2)5 .&,H#$(/

Capítulo 2. Creando el proyecto Buenas prácticas oficiales de Symfony

8

Page 9: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 9/57

Y'Z (B# 7,AA,I'2D -?29?(,&) &#M%'&#-#2(/

NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

K 9?(#E('-#R,2# /#(('2D -%/( G# /#(

O "#( (B# [9?(#E('-#R,2#[ /#(('2D '2 .B.E'2'K \A'J# S%&,.#CP?&'/]E

V.(',2?A &#$,--#29?(',2/ (, '-.&,1# ),%& /#(%.

NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

K /B,&(^,.#2^(?D /B,%A9 G# 9'/?GA#9 '2 .B.E'2'

O "#( /B,&(^,.#2^(?D (, ,77 '2 .B.E'2'KE

C2E2 >*)5/%)/5,"#( 0, ,-0$%,%$F"K." P4L 1;4":" '" "#'31"13@.] 4.%;" 4. 4' :3;41%(;3( GA,DC C P4;N2 '" 235&34.%4 R4;";/&$" :4 ";1Y3P(2 C

:3;41%(;3(2a

GA,DC

!" ?..C

#  !" $,2/,A##  !" $?$B#C

#  !" $,27'DC

#  !" A,D/C#  $" L#/,%&$#/C!" /&$C

#  $" _..`%29A#C

!" 1#29,&C

$" I#GC

BCDE(.C #;(#(.4 4%" R4;";/&$" :4 ";1Y3P(2 C :3;41%(;3(2 #";" 42%;&1%&;"; %&2 "#'31"13(.42+ -' #;(#@^

23%( :4 1":" ";1Y3P(b:3;41%(;3( 42 4' 235&34.%4a

n  ?..C$?$B#C] "'D"14." %(:(2 '2( ";1Y3P(2 :4 1"1Y0 54.4;":(2 #(; '" "#'31"13@.+

n  ?..C$,27'DC] "'D"14." %(:" '" 3.E(;D"13@. :4E3.3:" #";" 1":" 4.%(;.( :4 4R41&13@.+

n  ?..CA,D/C] "'D"14." %(:(2 '(2 ";1Y3P(2 :4 '(5 :(.:4 24 5&";:". '(2 D4.2"R42 :4 '(5 54.4;":(2

#(; '" "#'31"13@.+

n  ?..CL#/,%&$#/C] "'D"14." %(:"2 '"2 #'".%3''"2 :4 '" "#'31"13@. C %(:(2 '(2 ";1Y3P(2 :4

%;":&113(.42+

n  /&$C_..`%29A#C] "'D"14." %(:( 4' 1@:35( 42#41$E31( :4 BCDE(.C `1(.%;('":(;42] ;&%"2] 4%1+c C%(:( %& 1@:35( #;(#3( `1'"242 :4 %& '@531" :4 .45(13(] 4.%3:":42 :4 O(1%;3.4] 4%1+c

U(:"2 '"2 P4;23(.42 :4 BCDE(.C 42%N. E3;D":"2 :353%"'D4.%4 #(; D(%3P(2 :4 245&;3:":+ B3

/&34;42 P4;3E31"; '" 3.%45;3:": :4 '" P4;23@. :4 BCDE(.C /&4 Y"2 3.2%"'":(] 1(.2&'%" 4' ;4#(23^

%(;3( #_<'31( :4 E3;D"2 :353%"'42 `Y%%#2abb53%Y&<+1(Db24.23('"<2b1Y41\2&D2c C 235&4 '(2 #"^

2(2 /&4 24 4T#'31". 4. 42%4 ";%$1&'( `Y%%#abbE"<34.+#(%4.134;+(;5b";%31'4bF>b235.3.5^#;(R41%^

;4'4"242c #";" #(:4; P4;3E31";'"2+

OMJ+P

Buenas prácticas oficiales de Symfony Capítulo 2. Creando el proyecto

9

Page 10: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 10/57

n  1#29,&C] 42%4 42 4' :3;41%(;3( :(.:4 !(D#(24; 3.2%"'" '"2 :4#:4.:4.13"2 :4 '" "#'31"13@. C #(;

%".%( .&.1" :4<4;$"2 %(1"; .":" 4. 42%4 :3;41%(;3(+

n  I#GC] "'D"14." '(2 1(.%;('":(;42 E;(.%"'42 C %(:(2 '(2 +,,&/, ;4'"13(.":(2 1(. 4' ')3#/&#$] %"'42

1(D( ";1Y3P(2 !BB] ";1Y3P(2 ["P"B1;3#% C '"2 3DN54.42+

C2Q2 3(* 4/"#0&* #& 0, ,-0$%,%$F"!&".:( 24 #&<'31@ BCDE(.C 8+J #(; #;3D4;" P4L] '" ;42#&42%" ."%&;"' :4 '(2 #;(5;"D":(;42 E&4 245&3;

42%;&1%&;".:( 2&2 "#'31"13(.42 1(D( 23 24 %;"%";" :4 '" ".%35&" P4;23@. 2CDE(.C *+T+ 92$ /&4 D&1Y"2

"#'31"13(.42 BCDE(.C "1"<";(. :3P3:3:"2 4. 78$"%3, %85(.3,] 23D3'";42 " '(2 :4 2CDE(.C *+T+

Q(; 42( Y(C 4. :$" 42 Y"<3%&"' 4.1(.%;";24 1(. "#'31"13(.42 BCDE(.C8 /&4 :4E3.4.  !"#$%&, 1(D( '(2

235&34.%42a a/#&`%29A#] P&,9%$(`%29A#] b21,'$#`%29A#] 4%1+

M( (<2%".%4] '(2 !"#$%&, 42%N. #4.2":(2 #";" /&4 24". 4'4D4.%(2 :4 2(E%V";4 /&4 24 #&4:4. ;4&%3'3L";

:4 D".4;" "&%@.(D"+ -. (%;"2 #"'"<;"2] 23 %34.42 #(; 4R4D#'( &. !"#$%& ''"D":( a/#&`%29A# #4;( /&4.( #&4:42 ;4&%3'3L";'( %"' C 1(D( 42%N 4. (%;"2 "#'31"13(.42 BCDE(.C8] 4.%(.142 424  !"#$%& 42%N D"'

Y41Y(+ ?( D32D( /&4 23 %& !"#$%& b21,'$#`%29A# :4#4.:4 :4 (%;( !"#$%& 1(D( P&,9%$(`%29A#+ B4 %;"%"

:4 &. 4;;(; C 42%(2 :(2 4'4D4.%(2 .( :4<4;$". 24; !"#$%&, 3.:4#4.:34.%42+

9' %4.4; &. _.31( !"#$%& ''"D:( _..`%29A#] 4' 1@:35( :4 %&2 "#'31"13(.42 24;N D&1Y( DN2 EN13' :4 42^

1;3<3; C :4 '44;+ 9:4DN2] " #";%3; :4 '" P4;23@. 8+=] '" :(1&D4.%"13@. (E313"' :4 BCDE(.C 234D#;4 D(2^

%;";N 2&2 4R4D#'(2 1(. 42%4 !"#$%& _..`%29A#+

!(. %(:( 42%(] '" 42%;&1%&;" :4 :3;41%(;3(2 ;41(D4.:":" #";" &." "#'31"13@. BCDE(.C /&4 235" '"2

<&4."2 #;N1%31"2 (E313"'42 :4<4;$" 24; '" 235&34.%4a

GA,DC

!" ?..C

#  !" $,2/,A#

#  !" $?$B#C#  !" $,27'DC#  $" A,D/C

#  $" L#/,%&$#/C

!" /&$C

#  $" _..`%29A#C!" 1#29,&C$" I#GC

!" ?..E.B.$" ?..^9#1E.B.

!;4" 2('"D4.%4 &. !"#$%& ''"D":( _..`%29A# 4. %& "#'31"13@.+IJ>KD LMN+OG+D

M( 42 .4142";3( "d":3; .3.5_. #;4E3R( "' .(D<;4 _..`%29A# #";" 3.:31"; 4' 9&#$3) ] 1(D( #(;

4R4D#'( 4' .(D<;4 :4 %& 4D#;42" ( #;(C41%(a _$-#_..`%29A#+ -' D(%3P( 42 /&4 42%4 !"#$%&] #(;

2& #;(#3" ."%&;"'4L"] .&.1" P" " 24; ;4&%3'3L":( 4. (%;"2 "#'31"13(.42 C .&.1" P" " 24; #&<'3^

1":( 1(D( !"#$%& :4 %4;14;(2+

KPOD

Capítulo 2. Creando el proyecto Buenas prácticas oficiales de Symfony

10

Page 11: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 11/57

C2R2 J)$0$S,"#( ()5, &*)5/%)/5, #& #$5&%)(5$(*B3 %& #;(C41%( ( '" 3.E;"42%;&1%&;" /&4 &%3'3L"2 ;4/&34;4. 1"D<3(2 4. '" R4;";/&$" :4 :3;41%(;3(2 #(;

:4E41%(] #&4:42 '44; 42%4 ";%$1&'( `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b1(.E35&;"%3(.b(P4^

;;3:4h:3;h2%;&1%&;4+Y%D'c #";" 2"<4; 1@D( ;4:4E3.3; '" '(1"'3L"13@. :4 '(2 :3;41%(;3(2 $?B$#C] A,D/C C

I#GC+

Q(; (%;" #";%4] '" E&%&;" P4;23@. BCDE(.C > &%3'3L";N &." 42%;&1%&;" :4 :3;41%(;3(2 '354;"D4.%4 :3E4^;4.%4a

GA,D0/)-7,2);C

!" ?..C

#  !" $,27'DC

#  $" L#/,%&$#/C!" G'2C#  $" $,2/,A#

!" /&$C

!" 1?&C

#  !" $?$B#C#  $" A,D/C!" 1#29,&C

$" I#GC

9&./&4 '(2 1"D<3(2 2(. D&C 2&%3'42] %4 "1(.24R"D(2 /&4 #(; 4' D(D4.%( 1(.%3._42 1(. '" 42%;&1%&;"

:4 :3;41%(;3(2 #(; :4E41%( :4 BCDE(.C8+

B3 &%3'3L"2 BCDE(.C 8+= ( 2&#4;3(;] 42%4 !"#$%& _..`%29A# C" 42%N 54.4;":(] #(; '( /&4 .( %34^

.42 /&4 Y"14; .":" DN2+ B3 &%3'3L"2 &." P4;23@. ".%4;3(; :4 BCDE(.C] #&4:42 54.4;"; 4' !"#$:

%& 4R41&%".:( 4' 235&34.%4 1(D".:(a

* .B. ?..C$,2/,A# D#2#&?(#@G%29A# 002?-#/.?$#c_..`%29A# 009'&c/&$007,&-?(c?22,(?(',2 002,0'2(#&?$(',2

OMJ+P

Buenas prácticas oficiales de Symfony Capítulo 2. Creando el proyecto

11

Page 12: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 12/57

Esta página se ha dejado vacía a propósito

12

Page 13: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 13/57

+,-.)/0( E2

+("7$A/5,%$F"?" 1(.E35&;"13@. :4 &." "#'31"13@. .(;D"'D4.%4 42%N ;4'"13(.":" 1(. D&1Y"2 #";%42 :3E4;4.%42 `3.^

E;"42%;&1%&;" %41.('@531"] 245&;3:":] 4%1+c C 1(. P";3(2 4.%(;.(2 :4 4R41&13@. ̀ :42";;(''(] #;(:&113@.]

4%1+c Q(; 42( BCDE(.C ;41(D34.:" :3P3:3; '" 1(.E35&;"13@. :4 '" "#'31"13@. 4. %;42 #";%42 :3E4;4.13"^

:"2+

E212 +("7$A/5,%$F" 5&0,%$(",#, %(" 0, $"75,&*)5/%)/5,

-' ";1Y3P( .?&?-#(#&/E)-A 1;4":( #(; :4E41%( #(; BCDE(.C 235&4 42%" ;41(D4.:"13@. C :4E3.4 '"2 (#^

13(.42 ;4'"13(.":"2 1(. '" <"24 :4 :"%(2 C 4' 24;P3:(; :4 1(;;4(a

d ?..C$,27'DC.?&?-#(#&/E)-A

.?&?-#(#&/@

9?(?G?/#^9&'1#&@   .9,^-)/MA

9?(?G?/#^B,/(@   456E<E<E4

9?(?G?/#^.,&(@   N

9?(?G?/#^2?-#@   /)-7,2)

9?(?G?/#^%/#&@   &,,(9?(?G?/#^.?//I,&9@ N

-?'A#&^(&?2/.,&(@   /-(.

-?'A#&^B,/(@   456E<E<E4

-?'A#&^%/#&@   N

-?'A#&^.?//I,&9@   N

d EEE

-2%"2 (#13(.42 .( 24 :4E3.4. 4. 4' ";1Y3P( ?..C$,27'DC$,27'DE)-A #(;/&4 .( %34.4. .":" /&4 P4; 1(.

4' 1(D#(;%"D34.%( :4 '" "#'31"13@.+ -. (%;"2 #"'"<;"2] " '" "#'31"13@. '4 :" 4T"1%"D4.%4 35&"' :@.:4

O4E3.4 '"2 (#13(.42 :4 1(.E35&;"13@. ;4'"13(.":"2 1(. '" 3.E;"42%;&1%&;" %41.('@^

531" 4. 4' ";1Y3P( ?..C$,27'DC.?&?-#(#&/E)-A+IJ>KD LMN+OG+D

13

Page 14: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 14/57

24 4.1&4.%;" '" <"24 :4 :"%(2 ( 1@D( 24 "114:4 " 4''"+ ?( _.31( /&4 '4 3D#(;%" 42 /&4 Y"C" &." <"24

:4 :"%(2 #;4#";":"+

E21212 L,568&)5(* %,"F"$%(*

O42:4 '" P4;23@. 8+> BCDE(.C 3.1'&C4 &. ";1Y3P( :4 1(.E35&;"13@. ''"D":( .?&?-#(#&/E9'/(E)-A] /&4

"'D"14." %(:(2 '(2 #";ND4%;(2 :4 1(.E35&;"13@. /&4 :4<4. 42%"; :4E3.3:(2 4. '" "#'31"13@. #";" /&4

02%" E&.13(.4 1(;;41"D4.%4+ -2%(2 #";ND4%;(2 24 ''"D".  )"*+2'-*4# ,"(=(.,4# /' 0" ")0.,",.=(

`.+#3#(.+% 6+)+7&/&), 4. 3.5'02c+

!":" P4L /&4 :4E3."2 &. .&4P( #";ND4%;( :4 1(.E35&;"13@. #";" %& "#'31"13@.] .( ('P3:42 "d":3;'(

%"D<30. " 42%4 ";1Y3P( .?&?-#(#&/E9'/(E)-A C 2&<3; :42#&02 '(2 1"D<3(2 "' ;42#(23%(;3( :4 1@:35(+

O4 42%" D".4;"] 1":" P4L /&4 &. D34D<;( :4' 4/&3#( :4 :42";;(''( "1%&"'314 4' #;(C41%( ( '( 3.2%"'4

4. #;(:&113@.] BCDE(.C 1(D#;(<";N 23 4' ._D4;( :4 #";ND4%;(2 :4' ";1Y3P( .?&?-#(#&/E)-A 1(3.13^

:4 1(. '(2 #";ND4%;(2 :4E3.3:(2 4. .?&?-#(#&/E)-AE9'/(+ B3 4T32%4 1&"'/&34; :3E4;4.13"] BCDE(.C %4

#;45&.%";N /&0 P"'(; /&34;42 "235."; " '(2 #";ND4%;(2 /&4 %4 E"'%". #(; :4E3.3; C '(2 "d":3;N "' ";1Y3^

P( .?&?-#(#&/E)-A+ 92$ '" "#'31"13@. .&.1" E"''";N #(;/&4 '4 E"'%4 &. #";ND4%;( :4 1(.E35&;"13@.+

E2C2 +("7$A/5,%$F" 5&0,%$(",#, %(" 0, ,-0$%,%$F"

-' ";1Y3P( $,27'DE)-A  :4E3.4 '"2 (#13(.42 /&4 24 &%3'3L". #";" D(:3E31"; 4' 1(D#(;%"D34.%( :4

'" "#'31"13@.] %"'42 1(D( 4' ;4D3%4.%4 :4 '(2 4D"3'2 :4 .(%3E31"13@.] '(2   '&+/")& /355%&,

`Y%%#abb4.+V3\3#4:3"+(;5bV3\3bX4"%&;4h%(55'4c   ] 4%1+ O4E3.3; 42%(2 P"'(;42 4. 4' ";1Y3P(

.?&?-#(#&/E)-A 42 #(23<'4] #4;( "d":3;$" &." 1"#" ":313(."' :4 1(.E35&;"13@. %(%"'D4.%4 3..4142";3"]

 C" /&4 .(;D"'D4.%4 .( .41423%"2 1"D<3"; 42%(2 P"'(;42 4. E&.13@. :4' 24;P3:(; 4. 4' /&4 24 4.1&4.^

%;4 '" "#'31"13@.+

?"2 (#13(.42 :4 1(.E35&;"13@. :4E3.3:"2 4. 4' ";1Y3P( $,27'DE)-A .(;D"'D4.%4 P";$". 4. E&.13@.:4'  4.%(;.( :4 4R41&13@.   `Y%%#abb'3<;(2V4<+42b2CDE(.Ch8hTb1"#3%&'(hIb4.%(;.(2+Y%D'c  + Q(; 42(

BCDE(.C :4E3.4 :(2 ";1Y3P(2 :32%3.%(2 ''"D":(2 ?..C$,27'DC$,27'D^9#1E)-A   C  ?..C$,27'DC

$,27'D^.&,9E)-A #";" /&4 #&4:"2 :4E3.3; :3E4;4.%42 P"'(;42 #";" 1":" 4.%(;.(+

E2C212 +("*),")&* / (-%$("&* #& %("7$A/5,%$F"K.( :4 '(2 4;;(;42 DN2 Y"<3%&"'42 "' :4E3.3; '" 1(.E35&;"13@. :4 &." "#'31"13@. 1(.232%4 4. "d":3; (#^

13(.42 #";" P"'(;42 /&4 .&.1" P". " 1"D<3";] 1(D( #(; 4R4D#'( 4' ._D4;( :4 4'4D4.%(2 D(2%;":(2

4. &." #"53."13@.+

O4E3.4 %(:(2 '(2 #";ND4%;(2 :4 '" "#'31"13@. 4. 4' ";1Y3P( ?..C$,27'DC

.?&?-#(#&/E9'/(E)-A+IJ>KD LMN+OG+D

O4E3.4 '"2 (#13(.42 :4 1(.E35&;"13@. ;4'"13(.":"2 1(. '" "#'31"13@. 4. 4' ";1Y3P(

?..C$,27'DC$,27'DE)-A+IJ>KD LMN+OG+D

Capítulo 3. Configuración Buenas prácticas oficiales de Symfony

14

Page 15: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 15/57

Page 16: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 16/57

j

CC EEE

k

k

?" _.31" :42P4.%"R" 3D#(;%".%4 :4 &2"; 1(.2%".%42 1(D( (#13(.42 :4 1(.E35&;"13@. 42 /&4 .( #&4:42;4:4E3.3;'"2 EN13'D4.%4 4. '(2 %42%2 :4 '" "#'31"13@.+

E2E2 K( /)$0$%&* 0, %("7$A/5,%$F" *&86")$%,

!(D( 24 4T#'31" 4. 4' ";%$1&'( ;3* /3 <=63,& + ,&7+#/(. >3#'(5")+/(3# '3) + ?"#$%& `Y%%#abb2CDE(.C+1(Db

:(1b1&;;4.%b1((\<((\b<&.:'42b4T%4.23(.+Y%D'c ] '(2 !"#$%&, :4 BCDE(.C :32#(.4. :4 :(2 (#13(.42

#";" 542%3(."; 2&2 #;(#3"2 (#13(.42 :4 1(.E35&;"[email protected] '" 1(.E35&;"13@. #3)7+% :4E3.3:" 4. 4' ";1Y3P(/#&1'$#/E)-A C '" 1(.E35&;"13@. ,&7@/(.+ D4:3".%4 &." 1'"24 42#413"' :4 %3#( KSZ(#2/',2+

9&./&4 '" 1(.E35&;"13@. 24DN.%31" 42 D&1Y( DN2 "P".L":" C (E;414 1";"1%4;$2%31"2 ;4"'D4.%4 3.^

%4;42".%42] 1(D( '" P"'3:"13@. :4 '"2 (#13(.42 :4 1(.E35&;"13@.] 4' %;"<"R( .4142";3( #";" :4E3.3; 42"

1(.E35&;"13@. .( D4;414 '" #4." #";" '(2 !"#$%&, 3.%4;.(2 :4 '" "#'31"13@. C /&4 #(; %".%(] .( 24 P".

" ;4&%3'3L"; 1(D( !"#$%&, :4 %4;14;(2+

E2Q2 T&7$"& 0,* (-%$("&* #& %("7$A/5,%$F" *&"*$40&* 7/&5, #& ;<8U7("<9' %;"<"R"; 1(. (#13(.42 :4 1(.E35&;"13@. 24.23<'42] 1(D( #(; 4R4D#'( '"2 1;4:4.13"'42 #";" "114:4; "

'" <"24 :4 :"%(2] '" ;41(D4.:"13@. 1(.232%4 4. "'D"14.";'"2 E&4;" :4 '" "#'31"13@. BCDE(.C C "114:4;

" 4''"2 D4:3".%4 '"2 P";3"<'42 :4 4.%(;.(+ Q";" 2"<4; 1@D( Y"14;'(] 1(.2&'%" 4' ";%$1&'( ;3* /3 -&/ &=:

/&)#+% A+)+7&/&), (# /B& -&)9(.& >3#/+(#&)  `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b1(.E35&;"%3(.b

4T%4;."'h#";"D4%4;2+Y%D'c +

M( :4E3."2 4. %&2 !"#$%&, &." 1(.E35&;"13@. 24DN.%31" #";" 4' 1(.%4.4:(; :4 3.^

 C4113@. :4 :4#4.:4.13"2+IJ>KD LMN+OG+D

Capítulo 3. Configuración Buenas prácticas oficiales de Symfony

16

Page 17: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 17/57

+,-.)/0( Q2

P5A,"$S,"#( 0, 0FA$%, #&

"&A(%$(?" 0=<.," /' ('<4,.4 ( !",(#&,, %35(.  1(.232%4 4. %(:( 4' 1@:35( /&4 421;3<42 #";" %& "#'31"13@. C /&4

.( 42%N ;4'"13(.":( 1(. 4' #;(#3( E;"D4V(;\ `1(.%;('":(;42] ;&%"2] 4%1+c ?"2 1'"242 :4' :(D3.3(] '"2

4.%3:":42 :4 O(1%;3.4 C '"2 1'"242 QiQ .(;D"'42 C 1(;;34.%42 2(. <&4.(2 4R4D#'(2 :4 '( /&4 42 '" '@^

531" :4 .45(13( :4 &." "#'31"13@. BCDE(.C+

-. '" D"C(;$" :4 %&2 #;(C41%(2] :4<4;$"2 "'D"14."; %(:" %& '@531" :4 .45(13( :4.%;( :4'  !"#$%&

_..`%29A#+ Q";" (;5".3L"; D4R(; %& 1@:35( #&4:42 1;4"; %(:(2 '(2 :3;41%(;3(2 /&4 .41423%42a

/)-7,)50.&,H#$(C

!" ?..C

!" /&$C#  $" _..`%29A#C#  $" a('A/C

#  $" f)3A?//E.B.

!" 1#29,&C

$" I#GC

Q212 D08,%&","#( %0,*&* 7/&5, #&0 !"#$%& M( 4T32%4 .3.5&." '3D3%"13@. %01.31" #";" 5&";:"; %& '@531" :4 .45(13( E&4;" :4 1&"'/&34; !"#$%&+ 92$ 

/&4 23 '( #;4E34;42] #&4:42 1;4"; %& #;(#3( #+7&,6+.& :4.%;( :4' :3;41%(;3( /&$C C (;5".3L"; 4' 1@:35(

:4 42" D".4;"a

/)-7,)50.&,H#$(C

!" ?..C!" /&$C#  !" _$-#C#  #  $" a('A/C

#  #  $" f)3A?//E.B.#  $" _..`%29A#C

17

Page 18: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 18/57

!" 1#29,&C

$" I#GC

Q2C2 +("7$A/5,"#( 0(* *&5V$%$(*?" "#'31"13@. :4' <'(5 .41423%" &." &%3'3:": /&4 %;".2E(;D4 '(2 %$%&'(2 :4 '(2 ";%$1&'(2 `4R4D#'(  ;3%+

C"#$3c 42 &. ,%"5 `4R4D#'( B3%+:7"#$3c+ ?(2 ,%"5 2(. '"2 1":4."2 :4 %4T%( /&4 24 &%3'3L". 1(D( #";%4

:4 '" KW? :4 '(2 ";%$1&'(2 #";" 4P3%"; '(2 1";"1%4;42 #;(<'4DN%31(2 ̀ 42#"13(2 4. <'".1(] "14.%(2] 4%1+c

92$ /&4 24 1;4" &." .&4P" 1'"24 ''"D":" "A%DD#& :4.%;( :4' :3;41%(;3( /&$C_..`%29A#Ca('A/C C 24

:4E3.4 4' 235&34.%4 D0%(:( /A%D'7)\]a

CC /&$C_..`%29A#Ca('A/C"A%DD#&E.B.

2?-#/.?$# _..`%29A#ha('A/i

$A?// "A%DD#&

j

/(?('$ 7%2$(',2 /A%D'7)\*/(&'2D]

j

&#(%&2 .&#D^&#.A?$#\

mCUs?0R<0tWCmn m0mn /(&(,A,I#&\(&'-\/(&'.^(?D/\*/(&'2D]]]

]i

kk

Q";" #(:4; &%3'3L"; 42%" 1'"24 4. %& "#'31"13@.] :4E3.4 &. .&4P( 24;P313( :4 '" 235&34.%4 D".4;"a

d ?..C$,27'DC/#&1'$#/E)-A

/#&1'$#/@

d #A 2,-G&# 9# A,/ /#&1'$',/ 9#G#&o? /#& -%) $,&(,

/A%DD#&@

$A?//@ _..`%29A#ha('A/h"A%DD#&

M(;D"'D4.%4 '(2 #;(5;"D":(;42 BCDE(.C &%3'3L". .(D<;42 :4 24;P313(2 D&C '";5(2] 1(#&42%(2 #(; 4'.(D<;4 :4 '" 1'"24 C 2& 1'"24] !"#$%& ( #+7&,6+.& #";" 4P3%"; 1('323(.42+ 92$ /&4 4. 42%4 1"2( 4' 24;P313(

#(:;$" Y"<4;24 ''"D":( #(; 4R4D#'( ?..E%('A/E/A%DD#&+ Q4;( 1&".:( 24 &%3'3L". .(D<;42 1(;%(2 #";"

'(2 24;P313(2] 4' 1@:35( 24 23D#'3E31" C 42 DN2 EN13' :4 '44;+

9Y(;" C" #&4:42 &%3'3L"; 4' 24;P313( /A%DD#&   4. 1&"'/&34; 1(.%;('":(;] 1(D( #(; 4R4D#'(

_9-'23,2(&,AA#&a

?" ;41(D4.:"13@. :4 &%3'3L"; 4' !"#$%& _..`%29A# 42 #";" /&4 %(:( 24" DN2 24.13''( :4 542%3(^

.";+ B3 %34.42 '" 4T#4;34.13" 2&E3134.%4 1(D( #";" :413:3; '( /&4 %34.4 /&4 1('(1";24 :4.%;( (

E&4;" :4' !"#$%&] 4.%(.142 :4<4;$"2 :4R";%4 5&3"; #(; %& #;(#3" 4T#4;34.13"+

OMJ+P

-' .(D<;4 :4 '(2 24;P313(2 :4<4;$" 24; %". 1(;%( 1(D( 24" #(23<'4] 3:4"'D4.%4 &."

2('" #"'"<;" 1(;%"+IJ>KD LMN+OG+D

Capítulo 4. Organizando la lógica de negocio Buenas prácticas oficiales de Symfony

18

Page 19: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 19/57

.%GA'$ 7%2$(',2 $&#?(#_$(',2\L#M%#/( *&#M%#/(]

j

CC EEE

'7 \*7,&-0O'/"%G-'((#9\] uu *7,&-0O'/v?A'9\]] j

*/A%D c *(B'/0OD#(\m/A%DD#&m]0O/A%D'7)\*.,/(0OD#(g'(A#\]]]i*.,/(0O/#("A%D\*/A%D]i

CC EEE

k

k

Q2C212 >0 7(58,)( #& %("7$A/5,%$F" WDX3-. '" 24113@. ".%4;3(;] 24 &%3'3L@ e9k? #";" :4E3.3; 4' 24;P313(+

B"<4D(2 /&4 42%" ;41(D4.:"13@. 42 D&C 1(.%;(P4;%3:"+ B45_. .&42%;" #;(#3" 4T#4;34.13"] 4' &2( :4

e9k? C lk? 42%N <"2%".%4 ;4#";%3:(] 1(. &." '354;" P4.%"R" #";" e9k?+ -. 1&"'/&34; 1"2(] 1(D( '(2

:(2 E(;D"%(2 %34.4. 4' D32D( ;4.:3D34.%(] "' E3."' '" :41323@. :4 1&N' &%3'3L"; 42 &." 1&42%3@. :4 5&2^

%( #4;2(."'+

?" ;41(D4.:"13@. :4 &%3'3L"; e9k? 24 :4<4 " /&4 '(2 .&4P(2 #;(5;"D":(;42 BCDE(.C #&4:4. "2$ 

:4E3.3; '(2 24;P313(2 DN2 EN13'D4.%4 C :4 D".4;" D&C 1(.132"+ Q4;( 4. %&2 "#'31"13(.42 #&4:42 4'453;

4' E(;D"%( /&4 #;4E34;"2+

Q2C2C2 K( #&7$",* -,568&)5(* -,5, 0,* %0,*&* #& 0(* *&5V$%$(*Q;(<"<'4D4.%4 %4 Y"<;N2 :":( 1&4.%" :4 /&4 ".%42 .( Y4D(2 1;4":( &. #";ND4%;( :4 1(.E35&;"13@.

#";" :4E3.3; '" 1'"24 :4' 24;P313(a

d ?..C$,27'DC/#&1'$#/E)-A

d $&#?29, %2 .?&p-#(&, .?&? 9#7'2'& A? $A?/# 9# %2 /#&1'$',

d eV A, B?D?/ #2 (%/ ?.A'$?$',2#/

.?&?-#(#&/@

/A%DD#&E$A?//@ _..`%29A#ha('A/h"A%DD#&

/#&1'$#/@

/A%DD#&@

$A?//@ [w/A%DD#&E$A?//w[

-2%" #;N1%31" 42 D&C #42":" C ":4DN2] %(%"'D4.%4 3..4142";3" #";" '(2 24;P313(2 #;(#3(2 :4 %&2 "#'3^

1"13(.42+

K%3'3L" e9k? #";" :4E3.3; %&2 #;(#3(2 24;P313(2+IJ>KD LMN+OG+D

M( :4E3."2 #";ND4%;(2 :4 1(.E35&;"13@. #";" '"2 1'"242 :4 %&2 24;P313(2+IJ>KD LMN+OG+D

Buenas prácticas oficiales de Symfony Capítulo 4. Organizando la lógica de negocio

19

Page 20: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 20/57

-2%" D"'" #;N1%31" %34.4 2& (;354. :4 .&4P( 4. '(2  !"#$%&, :4 %4;14;(2+ B3 :42";;(''"2 &. !"#$%& #";"

1(D#";%3;'( #_<'31"D4.%4] 4.%(.142 #;(<"<'D4.%4 2$ /&4 %34.42 /&4 :4E3.3; #";ND4%;(2 #";" '"2 1'"^

242 :4 %&2 24;P313(2+ Q4;( 23 42%N2 :4E3.34.:( 24;P313(2 3.%4;.(2 /&4 2@'( &%3'3L";N %& "#'31"13@.] 4.%(.^

142 .( Y"C .41423:": :4 Y"14; /&4 2&2 1'"242 24". 1(.E35&;"<'42+

Q2E2 J)$0$S,"#( /", %,-, #& -&5*$*)&"%$,BCDE(.C 42 &. E;"D4V(;\ iUUQ /&4 23D#'4D4.%4 24 4.1";5" :4 54.4;"; ;42#&42%"2 iUUQ " #";%3;

:4 #4%313(.42 iUUQ+ Q(; 42( BCDE(.C .( 3.1'&C4 .3.5&." &%3'3:": #";" 1(D&.31";24 1(. '"2 1"#"2 :4

#4;232%4.13"] 1(D( #(; 4R4D#'( <"242 :4 :"%(2 C 9QA2 4T%4;."2+ 92$ /&4 4;42 '3<;4 :4 421(54; '" '3<;4;$"

( 42%;"%453" /&4 #;4E34;"2 #";" 2('P4.%"; 42%" 1";4.13"+

-. '" #;N1%31" '" D"C(;$" :4 "#'31"13(.42 BCDE(.C Y"14. &2( :4'   #;(C41%( O(1%;3.4

`Y%%#abbVVV+:(1%;3.4^#;(R41%+(;5bc #";" :4E3.3; 2& D(:4'( D4:3".%4 '"2 4.%3:":42 C '(2 ;42#(23%(^

;3(2+ 9' 35&"' /&4 1(. 4' ;42%( :4 '" '@531" :4 .45(13(] 24 ;41(D34.:" "'D"14."; '"2 4.%3:":42 :4 O(1^

%;3.4 :4.%;( :4' !"#$%& _..`%29A#

+

?"2 %;42 4.%3:":42 :4E3.3:"2 4. '" "#'31"13@. :4' <'(5 2(. &. <&4. 4R4D#'( :4 1@D( (;5".3L"; 42%"2

1'"242a

/)-7,2)50.&,H#$(C

!" EEE

$" /&$C

$" _..`%29A#C$" S2('()C

!" 3,--#2(E.B.

!" P,/(E.B.$" a/#&E.B.

Q2E212 3, $"7(58,%$F" #& 8,-&( #& T(%)5$"&?"2 4.%3:":42 :4 O(1%;3.4 2(. (<R4%(2 QiQ .(;D"'42 C 1(;;34.%42 1&C" 3.E(;D"13@. 24 "'D"14." 4.

'" <"24 :4 :"%(2+ ?" _.31" 3.E(;D"13@. /&4 %34.4 O(1%;3.4 2(<;4 %&2 4.%3:":42 42 '" 3.E(;D"13@. :4

7+6&3 `7+66(#5 4. 3.5'02c /&4 :4E3."2 #";" 4''"2+ O(1%;3.4 2(#(;%" 1&"%;( E(;D"%(2 #";" :4E3.3; 42%"

3.E(;D"[email protected] e9k?] lk?] QiQ C ".(%"13(.42+

?"2 ".(%"13(.42 2(. 1(. D&1Y" :3E4;4.13" 4' E(;D"%( DN2 1@D(:( C '" D".4;" DN2 N53' :4 :4E3.3; '"

3.E(;D"13@. :4 D"#4(a

2?-#/.?$# _..`%29A#hS2('()i

%/# q,$(&'2#hVLfhf?..'2D ?/ VLfi

%/# q,$(&'2#h3,--,2h3,AA#$(',2/h_&&?)3,AA#$(',2i

B3 %34.42 '" 4T#4;34.13" 2&E3134.%4] #(; 2&#&42%( #&4:42 "'D"14."; '"2 4.%3:":42 :4 O(1%;3.4

4. 1&"'/&34; (%;( :3;41%(;3( :4.%;( :4 /&$C+OMJ+P

K%3'3L" ".(%"13(.42 #";" :4E3.3; '" 3.E(;D"13@. :4 D"#4( :4 '"2 4.%3:":42 :4 O(1^

%;3.4+IJ>KD LMN+OG+D

Capítulo 4. Organizando la lógica de negocio Buenas prácticas oficiales de Symfony

20

Page 21: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 21/57

CKK

K !VLfhS2('()

KC

$A?// P,/(

j$,2/( eaf^bgSf" c 4<i

CKK

K !VLfhb9

K !VLfhx#2#&?(#9v?A%#

K !VLfh3,A%-2\().#c['2(#D#&[]

KC

.&'1?(# *'9i

CKK

K !VLfh3,A%-2\().#c[/(&'2D[]

KC

.&'1?(# *('(A#i

CKK

K !VLfh3,A%-2\().#c[/(&'2D[]

KC

.&'1?(# */A%Di

CKK

K !VLfh3,A%-2\().#c[(#Z([]KC

.&'1?(# *$,2(#2(i

CKK

K !VLfh3,A%-2\().#c[/(&'2D[]

KC

.&'1?(# *?%(B,&S-?'Ai

CKK

K !VLfh3,A%-2\().#c[9?(#('-#[]

KC.&'1?(# *.%GA'/B#9_(i

CKK

K !VLfhV2#g,f?2)\

K (?&D#(S2('()c[3,--#2([n

K -?..#9`)c[.,/([n

K ,&.B?2L#-,1?Ac(&%#

K ]

K !VLfhV&9#&`)\j[.%GA'/B#9_([ c [_"3[k]

KC

.&'1?(# *$,--#2(/i

Buenas prácticas oficiales de Symfony Capítulo 4. Organizando la lógica de negocio

21

Page 22: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 22/57

.%GA'$ 7%2$(',2 ^^$,2/(&%$(\]

j

*(B'/0O.%GA'/B#9_( c 2#I hq?(#g'-#\]i

*(B'/0O$,--#2(/ c 2#I _&&?)3,AA#$(',2\]i

k

CC D#((#&/ ?29 /#((#&/ EEE

k

!(D( %(:(2 '(2 E(;D"%(2 %34.4. 4' D32D( ;4.:3D34.%(] :4 .&4P( 42%" :41323@. 42 &." 1&42%3@. :4 5&2^

%( #4;2(."' C :4 4'453; 4' E(;D"%( 1(. 4' /&4 %_ C %& 4/&3#( (2 4.1(.%;032 DN2 " 5&2%(+

Q2E2C2 T,)(* #& -5/&4,BCDE(.C .( 3.1'&C4 #(; :4E41%( 4' 2(#(;%4 #";" 1;4"; :"%(2 :4 #;&4<"] #(; '( /&4 :4<4;$"2 4R41&%"; 4'

235&34.%4 1(D".:( #";" 3.2%"'"; 4' !"#$%& #";" 1;4"; :"%(2 :4 #;&4<" :4 O(1%;3.4a

* $,-.,/#& &#M%'&# [9,$(&'2#C9,$(&'2#07'Z(%&#/0G%29A#[@[N5[

O42#&02] "1%3P" 4' .&4P( !"#$%& 4. _..y#&2#AE.B.] #4;( Y"L'( 2('"D4.%4 4. 4' 4.%(;.( :4 :42";;(''(

`9#1c C #;&4<"2 `(#/(c] C" /&4 4. #;(:&113@. .( 24 .41423%" C "2$ 4P3%"D(2 /&4 #4."'314 4' ;4.:3D34.^

%(a

%/# ")-7,2)h3,-.,2#2(hQ((.y#&2#Ahy#&2#Ai

$A?// _..y#&2#A #Z(#29/ y#&2#A

j

.%GA'$ 7%2$(',2 &#D'/(#&`%29A#/\]

j

*G%29A#/ c ?&&?)\

CC EEE

]i

'7 \'2^?&&?)\*(B'/0OD#(S21'&,2-#2(\]n ?&&?)\m9#1mn m(#/(m]]] j

CC EEE

*G%29A#/UW c 2#I q,$(&'2#h`%29A#hY'Z(%&#/`%29A#hq,$(&'2#Y'Z(%&#/`%29A#\]n

k

&#(%&2 *G%29A#/i

k

CC EEE

k

Q(; 23D#'313:":] 42 ;41(D4.:"<'4 1;4"; &." _.31"   1'"24 #";" :4E3.3; '(2 :"%(2 :4 #;&4<"

`Y%%#abb2CDE(.C+1(Db:(1bD"2%4;b<&.:'42bO(1%;3.4X3T%&;42o&.:'4b3.:4T+Y%D'pV;3%3.5^23D#'4^

E3T%&;42c + B3 42%" 1'"24 1;414 D&1Y(] :3P3:4 2&2 1(.%4.3:(2 4. P";3"2 1'"242 DN2 #4/&4d"2+

B&#(.34.:( /&4 24 Y"C" :4E3.3:( "' D4.(2 &." 1'"24 1(. ";1Y3P(2 :4 #;&4<" C /&4 4' "1142( " '" <"24:4 :"%(2 42%N <34. 1(.E35&;":(] #&4:42 1";5"; %(:(2 '(2 :"%(2 4R41&%".:( 4' 235&34.%4 1(D".:(a

Capítulo 4. Organizando la lógica de negocio Buenas prácticas oficiales de Symfony

22

Page 23: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 23/57

* .B. ?..C$,2/,A# 9,$(&'2#@7'Z(%&#/@A,?9

3?&#7%An 9?(?G?/# I'AA G# .%&D#9E q, ),% I?2( (, $,2('2%# XCe z X

O .%&D'2D 9?(?G?/#

O A,?9'2D _..`%29A#hq?(?Y'Z(%&#/hVLfhr,?9Y'Z(%&#/

Q2Q2 >*)6"#,5&* #& %F#$A(-' 1@:35( E&4.%4 :4 BCDE(.C8 235&4 '"2 ;41(D4.:"13(.42 :4 '(2 42%N.:";42 QBW^* `Y%%#abbVVV+#Y#^

E35+(;5b#2;b#2;^*bc C  QBW^8 `Y%%#abbVVV+#Y#^E35+(;5b#2;b#2;^8bc :4E3.3:(2 #(; '" 1(D&.3:": QiQ+

Q";" DN2 3.E(;D"13@.] #&4:42 '44; 4'   ";%$1&'( 2(<;4 '(2 42%N.:";42 :4 1@:35( :4 BDCE(.C

`Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1(.%;3<&%3.5b1(:4b2%".:";:2+Y%D'c + U"D<30. #&4:42 &%3'3L"; '"

Y4;;"D34.%" :4 1(.2('" QiQ^!B^X3T4; `Y%%#2abb53%Y&<+1(DbE"<#(%bQiQ^!B^X3T4;c #";" ;4E(;D"%4";

%(:( 4' 1@:35( E&4.%4 :4 %& "#'31"13@. 4. &.(2 #(1(2 245&.:(2 C 1(. '" 5";".%$" :4 .( ;(D#4;'( 1(.

'" "1%&"'3L"13@.+

Buenas prácticas oficiales de Symfony Capítulo 4. Organizando la lógica de negocio

23

Page 24: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 24/57

Esta página se ha dejado vacía a propósito

24

Page 25: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 25/57

+,-.)/0( R2

+(")5(0,#(5&*BCDE(.C 235&4 '" E3'(2(E$" :4 1;4"; 1(.%;('":(;42 D&C #4/&4d(2 C 1'"242 :4 D(:4'( D&C 5;".:42 `4.

3.5'02] /B(# .3#/)3%%&), +#$ '+/ 73$&%,c+ Q(; 42( '(2 1(.%;('":(;42 :4 BCDE(.C 24 1(D#(;%". 1(D( &."

E3." 1"#" :4 1@:35( /&4 &.4 C 1((;:3." '"2 :3E4;4.%42 #";%42 :4 '" "#'31"13@.+

?" ;45'" :4 (;( :4 '(2 1(.%;('":(;4 24 ;42&D4 4. 9J>LJBL] C" /&4 '(2 1(.%;('":(;42 :4<4;$". :4E3.3;

9 P";3"<'42 ( D4.(2] 1(.%4.4; >L "113(.42 ( D4.(2 4 3.1'&3; BL '$.4"2 :4 1@:35( ( D4.(2 4. 1":" "1^

13@.+ 9&./&4 #&4:4 Y"<4; 4T14#13(.42 #&.%&"'42 " 42%" ;45'"] %4 #&4:4 24;P3; 1(D( (;34.%"13@. #";"

2"<4; 1&N.:( %34.42 /&4 ;4E"1%(;3L"; %&2 1(.%;('":(;42 #";" 1(.P4;%3; #";%42 :4 2& 1@:35( 4. 24;P3^

13(2+

!&".:( +.36%+, '(2 1(.%;('":(;42 "' E;"D4V(;\ /&4 42%N2 &%3'3L".:(] #&4:42 "#;(P41Y"; %(:"2 2&2 E&.^

13(."'3:":42 C 42( "&D4.%" %& #;(:&1%3P3:":+

!(D( '(2 1(.%;('":(;42 .( 2(. DN2 /&4 &." 1"#" D&C E3." /&4 "#4."2 1(.%34.4 &."2 #(1"2 '$.4"2 :4

1@:35( #";" &.3; '"2 :3E4;4.%42 #";%42 :4 '" "#'31"13@.] :4:31"; :414."2 :4 Y(;"2 " :42"1(#'"; 424 1@^

:35( ;42#41%( "' E;"D4V(;\ 42 &. %;"<"R( 4.(;D4 /&4 :3E$13'D4.%4 %4 1(D#4.2";N " '" '";5"+

9:4DN2] "' &2"; ".(%"13(.42 #";" 4' 4.;&%"D34.%(] '" 1"1Y0 C '" 245&;3:":] 24 23D#'3E31" 4.(;D4D4.%4

'" 1(.E35&;"13@. :4 '" "#'31"13@.+ e" .( %4.:;N2 /&4 ;4<&21"; 4.%;4 :414."2 :4 ";1Y3P(2 :4 1(.E35&;"^

13@. 1;4":(2 1(. :3E4;4.%42 E(;D"%(2 `e9k?] lk?] QiQc+ 9Y(;" %(:" '" 1(.E35&;"13@. ;4'4P".%4 42%N

 R&2%( :(.:4 '" .41423%"2 C &%3'3L" &. _.31( E(;D"%(+

-. ;42&D4.] '" ;41(D4.:"13@. 42 /'#",4)0"* -4-"02'(-' -& 0=<.," /' ('<4,.4 ;42#41%( :4' E;"D4^

V(;\] #4;( "' D32D( %34D#(] ",4)0"* -4-"02'(-' 04# ,4(-*40"/4*'# 7 '0 '(*&-"2.'(-4 "' E;"D4^

V(;\] #";" "#;(P41Y"; %(:"2 2&2 #(23<3'3:":42 :4 '" D".4;" DN2 N53' #(23<'4+

i"L /&4 %&2 1(.%;('":(;42 4T%34.:". :4 '" 1'"24 3,2(&,AA#& <"24 #;(#(;13(.":"

#(; 4' !"#$%& Y&?-#I,&J`%29A# C &2" ".(%"13(.42 #";" :4E3.3; 4' 4.;&%"D34.%(] '"

1"1Y0 C '" 245&;3:": 234D#;4 /&4 24" #(23<'4+

IJ>KD LMN+OG+D

25

Page 26: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 26/57

R212 +("7$A/5,"#( &0 &"5/),8$&")(Q";" 1";5"; %(:"2 '"2 ;&%"2 :4E3.3:"2 1(D( ".(%"13(.42 4. '(2 1(.%;('":(;42 :4'  !"#$%& _..`%29A#]

"d":4 '" 235&34.%4 1(.E35&;"13@. 4. 4' ";1Y3P( #;3.13#"' :4 4.;&%"D34.%(a

d ?..C$,27'DC&,%('2DE)-A

?..@

&#/,%&$#@ [!_..`%29A#C3,2(&,AA#&C[

().#@   ?22,(?(',2

-2%" 1(.E35&;"13@. Y"14 /&4 24 1";5&4. %(:"2 '"2 ".(%"13(.42 :4 1&"'/&34; 1(.%;('":(; :4E3.3:( :4.^

%;( :4' :3;41%(;3( /&$C_..`%29A#C3,2(&,AA#&C C :4 %(:(2 2&2 2&<:3;41%(;3(2+ 92$ /&4 23 4. %& "#'31"^

13@. Y"2 :4E3.3:( D&1Y(2 1(.%;('":(;42] #&4:4 24; &." <&4." 3:4" (;5".3L";'(2 4. 2&<:3;41%(;3(2a

l(%0.&,)#$(,OC

!" EEE

$" /&$C$" _..`%29A#C!" EEE$" 3,2(&,AA#&C

!" q#7?%A(3,2(&,AA#&E.B.

!" EEE

!" _.'C#  !" EEE#  $" EEE

$" `?$J#29C

!" EEE

$" EEE

R2C2 +("7$A/5,"#( 0,* -0,")$00,*

9&./&4 '" ".(%"13@. !g#-.A?(# 42 _%3'] 24 %;"%" :4 '" ".(%"13@. /&4 DN2 7+5(+ 3D#'31"+ e 424 42 4' D(^

%3P( #(; 4' /&4 24 ;41(D34.:" .( &%3'3L";'"+

?" D"C(;$" :4 1(.%;('":(;42 &%3'3L". '" ".(%"13@. !g#-.A?(# 23. #";ND4%;(2] '( /&4 Y"14 DN2 :3E$13' "

'(2 #;(5;"D":(;42 2"<4; 4T"1%"D4.%4 '" #'".%3''" /&4 24 42%N ;4.:4;3L".:(+ 9:4DN2] #";" '(2 #;(5;"^

D":(;42 /&4 4D#34L". 1(. BCDE(.C 42%4 1(D#(;%"D34.%( ;42&'%" 1(.E&2(] C" /&4 245_. 24 4T#'31"

4. '" :(1&D4.%"13@.] '(2 1(.%;('":(;42 :4<4;$". :4P('P4; 1(D( ;42&'%":( &." ;42#&42%" 4. E(;D" :4

(<R4%( L#/.,2/# `" D4.(2 /&4 &%3'3142 '" 1"#" :4 '" P32%" C :4P&4'P"2 &." #'".%3''" ;4.:4;3L":"c+

Q(; _'%3D(] '" ".(%"13@. !g#-.A?(#   &%3'3L" '" 1'"24 g#-.A?(#r'/(#2#&   #";"   &,.".B+)   4' 4P4.%(

J#&2#AE1'#I '".L":( #; 4' E;"D4V(;\+ -2%4 %(,/&#&)  3.%;(:&14 &. 3D#"1%( .( :42#;413"<'4 4. 4' ;4.:3^

D34.%( :4 '" "#'31"13@.+ -. '" "#'31"13@. :4 <'(5] ;4.:4;3L"; '" #(;%":" 1&42%" D4.(2 :4 7 D3'3245&.^

:(2 1&".:( 24 &%3'3L" 4' D0%(:( *(B'/0O&#29#&\] 4. 4' 1(.%;('":(; C DN2 :4 8= D3'3245&.:(2 1&".:(

24 &%3'3L" '" ".(%"13@. !g#-.A?(#+

M( &%3'3142 '" ".(%"13@. !g#-.A?(#\] #";" :4E3.3; '" #'".%3''" &%3'3L":" #(; 4' 1(.^

%;('":(;+IJ>KD LMN+OG+D

Capítulo 5. Controladores Buenas prácticas oficiales de Symfony

26

Page 27: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 27/57

R2E2 +F8( #&4&5.," *&5 0(* %(")5(0,#(5&* ;<87("<!(.23:4;".:( %(:( '( ".%4;3(;] " 1(.%3.&"13@. 24 D&42%;" &. 4R4D#'( :4 1@D( :4<4;$" 24; 4' 1@:35(

:4 '(2 1(.%;('":(;42 :4 &." "#'31"13@. BCDE(.C %$#31"a

2?-#/.?$# _..`%29A#h3,2(&,AA#&i

%/# ")-7,2)h`%29A#hY&?-#I,&J`%29A#h3,2(&,AA#&h3,2(&,AA#&i

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2hL,%(#i

$A?// q#7?%A(3,2(&,AA#& #Z(#29/ 3,2(&,AA#&

j

CKK

K !L,%(#\[C[n 2?-#c[B,-#.?D#[]

KC

.%GA'$ 7%2$(',2 '29#Z_$(',2\]

j*#- c *(B'/0OD#(q,$(&'2#\]0OD#(f?2?D#&\]i

*.,/(/ c *#-0OD#(L#.,/'(,&)\m_..@P,/(m]0O7'29r?(#/(\]i

&#(%&2 *(B'/0O&#29#&\m9#7?%A(C'29#ZEB(-AE(I'Dmn ?&&?)\

m.,/(/m cO *.,/(/

]]i

k

k

R2Q2 J)$0$S,"#( 0(* L,5,8+("V&5)&5B3 4. %& "#'31"13@. &%3'3L"2 O(1%;3.4] 4.%(.142 #&4:42 &%3'3L"; 23 /&34;42 '( /&4 24 ''"D"  Q";"D^

!(.P4;%4; `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b<&.:'42bB4.23(X;"D4V(;\-T%;"o&.:'4b"..(%"%3(.2b

1(.P4;%4;2+Y%D'c #";" ;4"'3L"; <_2/&4:"2 4. '" <"24 :4 :"%(2 "&%(DN%31"D4.%4 C #"2"; 4' ;42&'%":( "'

1(.%;('":(;+

-R4D#'(

CKK

K !L,%(#\[Cj'9k[n 2?-#c[?9-'2^.,/(^/B,I[]

KC

.%GA'$ 7%2$(',2 /B,I_$(',2\P,/( *.,/(]

j

*9#A#(#Y,&- c *(B'/0O$&#?(#q#A#(#Y,&-\*.,/(]i

&#(%&2 *(B'/0O&#29#&\m?9-'2C.,/(C/B,IEB(-AE(I'Dmn ?&&?)\

m.,/(m   cO *.,/(n

m9#A#(#^7,&-m cO *9#A#(#Y,&-0O$&#?(#v'#I\]n

]]ik

K%3'3L" '(2 Q";"D!(.P4;%4; #";" <&21"; '"2 4.%3:":42 O(1%;3.4 "&%(DN%31"D4.%4

234D#;4 /&4 '" <_2/&4:" 24" 24.13''"+IJ>KD LMN+OG+D

Buenas prácticas oficiales de Symfony Capítulo 5. Controladores

27

Page 28: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 28/57

?( Y"<3%&"' 4. 42%4 %3#( :4 1(.%;('":(;42 1(.232%4 4. #"2"; 1(D( #";ND4%;( " /B,I_$(',2\] 4' *'9

:4' ";%$1&'( /&4 24 /&34;4 '44;+ B3. 4D<";5(] "' &%3'3L"; 1(D( #";ND4%;( '" P";3"<'4 *.,/( 1(. 4' %3#(

:4 :"%( P,/( `4. 3.5'02 " 42%" %01.31" 24 '4 ''"D" /06& B(#/(#5c] BCDE(.C "#'31" &. A+)+7>3#9&)/&)  #"^

;" <&21"; "&%(DN%31"D4.%4 4' (<R4%( 1&C( "%;3<&%( '9 1(3.13:" 1(. 4' P"'(; *'9 (<%4.3:( D4:3".%4 '"

;&%"+ B3 .( 24 4.1&4.%;" .3.5_. (<R4%(] 24 D&42%;" "&%(DN%31"D4.%4 &." #N53." :4 4;;(; ><>+

R2Q212 M&,0$S,"#( 4Y*?/&#,* 86* ,V,"S,#,*-' 4R4D#'( ".%4;3(; E&.13(." 23. %4.4; /&4 ;4"'3L"; .3.5&." 1(.E35&;"13@. ":313(."' #(;/&4 j'9k

1(3.13:4 4T"1%"D4.%4 1(. 4' .(D<;4 :4 &." 4.%3:":+ !&".:( 42%( .( 2&14:4] ( 23 /&34;42 Y"14; <_2^

/&4:"2 DN2 1(D#'4R"2] #&4:4 ;42&'%"; DN2 24.13''( ;4"'3L"; '" <_2/&4:" :4 O(1%;3.4 " D".(+ -2%( 42

#(; 4R4D#'( '( /&4 2&14:4 4. '" 1'"24 3,--#2(3,2(&,AA#& :4 '" "#'31"[email protected]

CKK

K !L,%(#\[C$,--#2(Cj.,/("A%DkC2#I[n 2?-# c [$,--#2(^2#I[]

KC

.%GA'$ 7%2$(',2 2#I_$(',2\L#M%#/( *&#M%#/(n *.,/("A%D]j

*.,/( c *(B'/0OD#(q,$(&'2#\]

0OD#(L#.,/'(,&)\m_..`%29A#@P,/(m]

0O7'29V2#`)\?&&?)\m/A%Dm cO */A%D]]i

'7 \{*.,/(] j

(B&,I *(B'/0O$&#?(#e,(Y,%29SZ$#.(',2\]i

k

CC EEE

k

Q(; 2&#&42%( %"D<30. #(:;$"2 &%3'3L"; '" 1(.E35&;"13@. "P".L":" :4 !P?&?-3,21#&(#& #(;/&4 42 <"2^

%".%4 E'4T3<'4a

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2hL,%(#i

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2hP?&?-3,21#&(#&i

CKK

K !L,%(#\[C$,--#2(Cj.,/("A%DkC2#I[n 2?-# c [$,--#2(^2#I[]

K !P?&?-3,21#&(#&\[.,/([n ,.(',2/cj[-?..'2D[@ j[.,/("A%D[@ [/A%D[kk]KC

.%GA'$ 7%2$(',2 2#I_$(',2\L#M%#/( *&#M%#/(n P,/( *.,/(]

j

CC EEE

k

?" 1(.1'&23@. 42 /&4 '(2 A+)+7>3#9&)/&)  2(. 54.3"'42 #";" 1"2(2 24.13''(2] #4;( .( :4<4;$"2 ('P3:";

/&4 Y"14; '"2 1(.2&'%"2 O(1%;3.4 " D".( %"D<30. 42 <"2%".%4 24.13''(+

Capítulo 5. Controladores Buenas prácticas oficiales de Symfony

28

Page 29: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 29/57

R2R2 >Z&%/),"#( %F#$A( ,")&* < #&*-/@* #&0 %(")5(0,#(5B3 /&34;42 4R41&%"; 134;%( 1@:35( ".%42 ( :42#&02 :4 '" 4R41&13@. :4 '(2 1(.%;('":(;42 :4 '" "#'31"13@.]

&%3'3L" 4' 1(D#(.4.%4 <9&#/D(,6+/.B&)  %"' C 1(D( 24 4T#'31" 4. 4' ";%$1&'( ;3* /3 -&/"6 !&'3)& +#$ +'/&) 

E(%/&), `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b4P4.%h:32#"%1Y4;b<4E(;4h"E%4;hE3'%4;2+Y%D'c +

Buenas prácticas oficiales de Symfony Capítulo 5. Controladores

29

Page 30: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 30/57

Esta página se ha dejado vacía a propósito

30

Page 31: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 31/57

+,-.)/0( [2

L0,")$00,*!&".:( 24 #&<'31@ QiQ #(; #;3D4;" P4L Y"14 DN2 :4 8J "d(2] " '(2 #;(5;"D":(;42 '42 4.1".%@ 2& 24.^

13''4L C '( EN13' /&4 4;" D4L1'"; 1@:35( QiQ 1(. 1@:35( iUk?+ B3. 4D<";5(] 1(. 4' #"2( :4' %34D#( ".

2&;53:( '4.5&"R42 :4 #'".%3''"2 1(D( UV35 `Y%%#abb%V35+24.23('"<2+(;5bc /&4 2(. D&1Y( D4R(;42 #";"

1;4"; '"2 #'".%3''"2 :4 '"2 "#'31"13(.42+

-. 54.4;"'] '"2 #'".%3''"2 QiQ 2(. D&1Y( DN2 P4;<(2"2 /&4 '"2 #'".%3''"2 UV35 #(;/&4 .( %34.4. 2(^

#(;%4 ."%3P( #";" D&1Y"2 :4 '"2 E&.13(."'3:":42 /&4 .41423%". '"2 #'".%3''"2 D(:4;."2] %"'42 1(D( '"Y4;4.13"] 4' &,.+6+$3 "&%(DN%31( :4 3.E(;D"13@. C '(2 E3'%;(2+

UV35 42 4' E(;D"%( #(; :4E41%( :4 '"2 #'".%3''"2 BCDE(.C C 42 4' E(;D"%( :32%3.%( " QiQ 1(. '" D"C(;

1(D&.3:": :4 &2&";3(2] C" /&4 24 &%3'3L" 4. #;(C41%(2 %". 3D#(;%".%42 1(D( O;&#"' G+

Q(; _'%3D(] UV35 42 4' _.31( E(;D"%( /&4 %34.4. 5";".%3L":( 4' 2(#(;%4 4. '" E&%&;" P4;23@. BCDE(.C

>+J+ U".%( 42 "2$] /&4 42 D&C #(23<'4 /&4 :42"#";4L1" 4' 2(#(;%4 :4 #'".%3''"2 QiQ+

[212 P5A,"$S,"#( 0,* -0,")$00,*

?" D"C(;$" :4 #;(5;"D":(;42 BCDE(.C "'D"14." '"2 #'".%3''"2 :4 '" "#'31"13@. 4. '(2 :3;41%(;3(2

L#/,%&$#/C1'#I/C :4 1":" !"#$%&+ O42#&02 &%3'3L". 4' #37!)& %85(.3 :4 '" #'".%3''" #";" ;4E4;3;24 " 4''"

`4R4D#'( _$-#q#-,`%29A#@q#7?%A(@'29#ZEB(-AE(I'Dc+

9&./&4 42%" #;N1%31" 42 1(;;41%" #";" '(2 !"#$%&, :4 %4;14;(2] 4. 4' 1"2( :4 '"2 #'".%3''"2 :4 '" "#'31"^

13@. 42 D&1Y( DN2 1@D(:( "'D"14.";'"2 4. 4' :3;41%(;3( ?..CL#/,%&$#/C1'#I/C+ -' #;3D4; D(%3P( 42

/&4 24 23D#'3E31" :4 D".4;" ;":31"' 4'  #37!)& %85(.3 :4 '"2 #'".%3''"2a

K%3'3L" 2('"D4.%4 UV35 #";" 1;4"; %&2 #'".%3''"2+IJ>KD LMN+OG+D

9'D"14." %(:"2 '"2 #'".%3''"2 :4 '" "#'31"13@. 4. 4' :3;41%(;3( ?..CL#/,%&$#/C

1'#I/C+IJ>KD LMN+OG+D

31

Page 32: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 32/57

L0,")$00,* ,08,%&",#,* &" !"#$%&'    L0,")$00,* ,08,%&",#,* &" ?..C?..C

_$-#q#-,`%29#@q#7?%A(@'29#ZEB(-AE(I'D 9#7?%A(C'29#ZEB(-AE(I'D

@@A?),%(EB(-AE(I'D A?),%(EB(-AE(I'D

_$-#q#-,`%29A#@@'29#ZEB(-AE(I'D '29#ZEB(-AE(I'D

_$-#q#-,`%29A#@q#7?%A(@/%G9'&C'29#ZEB(-AE(I'D 9#7?%A(C/%G9'&C'29#ZEB(-AE(I'D

_$-#q#-,`%29A#@q#7?%A(C/%G9'&@'29#ZEB(-AE(I'D 9#7?%A(C/%G9'&C'29#ZEB(-AE(I'D

S%;" :4 '"2 P4.%"R"2 :4 14.%;"'3L"; %(:"2 '"2 #'".%3''"2 42 /&4 24 23D#'3E31" D&1Y( 4' %;"<"R( :4 %& 4/&3^

#( ')3#/&#$ C :4 %&2 :324d":(;42+ e" .( 42 .4142";3( <&21"; '"2 #'".%3''"2 4.%;4 :414."2 :4 :3;41%(;3(2

#(;/&4 %(:"2 24 4.1&4.%;". 4. 4' D32D( '&5";+

[2C2 >\)&"*$("&* O9$A

9 '" "#'31"13@. :4' <'(5 '4 P4.:;$" D&C <34. &. E3'%;( :4 UV35 ''"D":( -95B(-A /&4 %;".2E(;D4 4' 1(.^

%4.3:( k";\:(V. 4. 1(.%4.3:( iUk?+

9.%42 :4 1;4"; 42%4 E3'%;(] "d":4 1(D( :4#4.:4.13" :4 %& #;(C41%( '" 4T14'4.%4 '3<;4;$" Q";24:(V.

`Y%%#abb#";24:(V.+(;5bc /&4 %;".2E(;D" 4' 1@:35( k";\:(V. 4. iUk?+ Q";" 4''(] 4R41&%" 4' 235&34.%4

1(D".:( 4. '" 1(.2('"a

* $,-.,/#& &#M%'&# #&%/#1C.?&/#9,I2

O42#&02] :4E3.4 &. .&4P( 24;P313( ''"D":( -?&J9,I2 #";" /&4 '( &%3'314 '" 4T%4.23@. :4 UV35+ -. 42%4

1"2( '" :4E3.313@. :4' 24;P313( 42 %. 23D#'4 1(D( 3.:31"; '" ;&%" " '" 1'"24 QiQ "2(13":"a

d ?..C$,27'DC/#&1'$#/E)-A

/#&1'$#/@

d EEE

-?&J9,I2@$A?//@ _..`%29A#ha('A/hf?&J9,I2

-2%" 1'"24 f?&J9,I2 :4E3.4 &. _.31( D0%(:( /&4 %;".2E(;D" 4' 1(.%4.3:( k";\:(V. #"2":( 1(D( ";^

5&D4.%( 4. 1(.%4.3:( iUk?a

2?-#/.?$# _..`%29A#ha('A/i

$A?// f?&J9,I2

j

.&'1?(# *.?&/#&i

.%GA'$ 7%2$(',2 ^^$,2/(&%$(\]

O4E3.4 %&2 4T%4.23(.42 UV35 4. 4' :3;41%(;3( _..`%29A#CgI'DC C 1(.E35_;"'"2 4. 4'

";1Y3P( ?..C$,27'DC/#&1'$#/E)-A+IJ>KD LMN+OG+D

Capítulo 6. Plantillas Buenas prácticas oficiales de Symfony

32

Page 33: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 33/57

j

*(B'/0O.?&/#& c 2#I hP?&/#9,I2\]i

k

.%GA'$ 7%2$(',2 (,Q(-A\*(#Z(]

j*B(-A c *(B'/0O.?&/#&0O(#Z(\*(#Z(]i

&#(%&2 *B(-Ai

k

k

9Y(;" C" #&4:42 1;4"; '" 4T%4.23@. UV35 #";" :4E3.3; &. .&4P( E3'%;( ''"D":( -95B(-A D4:3".%4 '"

1'"24 gI'D^"'-.A#Y'A(#&+ M( ('P3:42 3.C41%"; 4' 24;P313( -?&J9,I2 4. 4' 1(.2%;&1%(; :4 '" 4T%4.23@.

UV35a

2?-#/.?$# _..`%29A#hgI'Di

%/# _..`%29A#ha('A/hf?&J9,I2i

$A?// _..SZ(#2/',2 #Z(#29/ hgI'D^SZ(#2/',2

j

.&'1?(# *.?&/#&i

.%GA'$ 7%2$(',2 ^^$,2/(&%$(\f?&J9,I2 *.?&/#&]

j

*(B'/0O.?&/#& c *.?&/#&ik

.%GA'$ 7%2$(',2 D#(Y'A(#&/\]

j

&#(%&2 ?&&?)\

2#I hgI'D^"'-.A#Y'A(#&\

m-95B(-Amn

?&&?)\*(B'/n m-?&J9,I2g,Q(-Am]n

?&&?)\m'/^/?7#m cO ?&&?)\mB(-Am]]

]n

]ik

.%GA'$ 7%2$(',2 -?&J9,I2g,Q(-A\*$,2(#2(]

j

&#(%&2 *(B'/0O.?&/#&0O(,Q(-A\*$,2(#2(]i

k

.%GA'$ 7%2$(',2 D#(e?-#\]

j

&#(%&2 m?..^#Z(#2/',2mi

k

k

Buenas prácticas oficiales de Symfony Capítulo 6. Plantillas

33

Page 34: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 34/57

Q";" #(:4; &%3'3L"; '" 4T%4.23@. :4 UV35 4. '" "#'31"13@.] :4E3.4 &. .&4P( 24;P313( C 4%3/&0%"'( 1(.

'" 4%3/&4%" (I'DE#Z(#2/',2 `4' .(D<;4 :4 42%4 24;P313( 42 3;;4'4P".%4 #(;/&4 .( '( P"2 " &2"; :3;41%"^

D4.%4 4. '" "#'31"[email protected]

d ?..C$,27'DC/#&1'$#/E)-A

/#&1'$#/@?..E(I'DE?..^#Z(#2/',2@

$A?//@   _..`%29A#hgI'Dh_..SZ(#2/',2

?&D%-#2(/@ U[!-?&J9,I2[W

(?D/@

0 j 2?-#@ (I'DE#Z(#2/',2 k

Capítulo 6. Plantillas Buenas prácticas oficiales de Symfony

34

Page 35: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 35/57

+,-.)/0( ]2

^(58/0,5$(*?(2 E(;D&'";3(2 2(. &." :4 '"2 #";%42 :4 BCDE(.C /&4 #4(; 24 &%3'3L".] :4<3:( " 2& 5;". 1(D#'4R3:": C

2& 3.%4;D3."<'4 '32%" :4 E&.13(."'3:":42+ -. 42%4 1"#$%&'( 24 D&42%;". "'5&."2 :4 '"2 <&4."2 #;N1%31"2

/&4 #&4:4. Y"14;%4 "#;(P41Y"; '(2 E(;D&'";3(2 :4 &." D".4;" 24.13''"+

]212 +5&,"#( 0(* 7(58/0,5$(*

-' 1(D#(.4.%4 E3)7 #4;D3%4 1;4"; '(2 E(;D&'";3(2 :3;41%"D4.%4 :4.%;( :4 '(2 1(.%;('":(;42+ B3 4'

E(;D&'";3( 42 #4/&4d( C .( P"2 " ;4&%3'3L";'( .&.1"] .( 42 3.1(;;41%( :4E3.3;'( :4.%;( :4' #;(#3( 1(.^

%;('":(;+ Q4;( #";" E(;D&'";3(2 1(D#'4R(2 /&4 24 ;4&%3'3L". 4. D&1Y"2 #";%42 :4 '" "#'31"13@.] 42 ;4^

1(D4.:"<'4 :4E3.3; 1":" E(;D&'";3( 4. 2& #;(#3" 1'"24 QiQa

2?-#/.?$# _..`%29A#hY,&-i

%/# ")-7,2)h3,-.,2#2(hY,&-h_G/(&?$(g).#i

%/# ")-7,2)h3,-.,2#2(hY,&-hY,&-`%'A9#&b2(#&7?$#i

%/# ")-7,2)h3,-.,2#2(hV.(',2/L#/,A1#&hV.(',2/L#/,A1#&b2(#&7?$#i

$A?// P,/(g).# #Z(#29/ _G/(&?$(g).#j

.%GA'$ 7%2$(',2 G%'A9Y,&-\Y,&-`%'A9#&b2(#&7?$# *G%'A9#&n ?&&?) *,.(',2/]

j

*G%'A9#&

0O?99\m('(A#m]

0O?99\m/%--?&)mn m(#Z(?&#?m]

0O?99\m$,2(#2(mn m(#Z(?&#?m]

0O?99\m?%(B,&S-?'Amn m#-?'Am]

0O?99\m.%GA'/B#9_(mn m9?(#('-#m]

i

k

O4E3.4 '(2 E(;D&'";3(2 1(D( 1'"242 QiQ+IJ>KD LMN+OG+D

35

Page 36: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 36/57

.%GA'$ 7%2$(',2 /#(q#7?%A(V.(',2/\V.(',2/L#/,A1#&b2(#&7?$# *&#/,A1#&]

j

*&#/,A1#&0O/#(q#7?%A(/\?&&?)\

m9?(?^$A?//m cO m_..`%29A#hS2('()hP,/(m

]]i

k

.%GA'$ 7%2$(',2 D#(e?-#\]

j

&#(%&2 m.,/(mi

k

k

Q";" &%3'3L"; 42%" 1'"24 4. &. 1(.%;('":(;] 4D#'4" 4' "%"R( $&#?(#Y,&- 4 3.2%".13" &." .&4P" 1'"24 :4

%3#( E(;D&'";3(a

%/# _..`%29A#hY,&-hP,/(g).#iCC EEE

.%GA'$ 7%2$(',2 2#I_$(',2\L#M%#/( *&#M%#/(]

j

*.,/( c 2#I P,/(\]i

*7,&- c *(B'/0O$&#?(#Y,&-\2#I P,/(g).#\]n *.,/(]i

CC EEE

k

]21212 M&A$*)5,"#( 7(58/0,5$(* %(8( *&5V$%$(*BCDE(.C #4;D3%4 ;4532%;"; '(2 E(;D&'";3(2 1(D( 24;P313(2 `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\^

<((\bE(;Db1;4"%4h1&2%(DhE34':h%C#4+Y%D'p1;4"%3.5^C(&;^E34':^%C#4^"2^"^24;P314c ] #4;( .( '( ;41(^

D4.:"D(2 " D4.(2 /&4 P"C"2 " ;4&%3'3L"; 424 %3#( :4 E(;D&'";3( 4. D&1Y(2 23%3(2 :3E4;4.%42 ( P"C"2

" 4D<4<4;'( :4.%;( :4 (%;(2 E(;D&'";3(2 D4:3".%4 4' %3#( q1(''41%3(.q `Y%%#abb2CDE(.C+1(Db:(1b1&^

;;4.%b;4E4;4.14bE(;D2b%C#42b1(''41%3(.+Y%D'c +

-. '" D"C(;$" :4 '(2 1"2(2] '(2 E(;D&'";3(2 2('"D4.%4 24 &%3'3L". #";" 1;4"; ( D(:3E31"; 3.E(;D"13@.]

#(; '( /&4 ;4532%;";'(2 1(D( 24;P313(2 42 %(%"'D4.%4 3..4142";3(+ 9:4DN2] 42%( Y"14 /&4 24" DN2 :3E$^

13' 2"<4; 4T"1%"D4.%4 /&0 1'"24 :4 E(;D&'";3( 24 42%N &%3'3L".:( :4.%;( :4' 1(.%;('":(;+

]2C2 +("7$A/5,"#( 0(* 4()("&* #&0 7(58/0,5$(?"2 1'"242 :4 E(;D&'";3(2 :4<4;$". 24; "5.@2%31"2 ;42#41%( " :@.:4 24 P". " &%3'3L";+ O4 42%" D".4;"

'(2 E(;D&'";3(2 24 #(:;N. ;4&%3'3L"; DN2 EN13'D4.%4+

O42:4 '" P4;23@. 8+7 :4 BCDE(.C 42 #(23<'4 "d":3; <(%(.42 1(D( 1"D#(2 :4 %&2 #;(#3(2 E(;D&'";3(2+

?" P4.%"R" 42 /&4 "2$ 24 23D#'3E31" 4' 1@:35( :4 '" #'".%3''" /&4 D&42%;" 4' E(;D&'";3(+ ?" :42P4.%"R" 42/&4 "' "d":3; '(2 <(%(.42 "' #;(#3( E(;D&'";3(] 42%N2 '3D3%".:( 2& E&.13(."'3:":a

9d":4 '(2 <(%(.42 :4 '(2 E(;D&'";3(2 4. '"2 #'".%3''"2] .( 4. '"2 1'"242 :4 E(;D&'"^

;3( ( 4. '(2 1(.%;('":(;42+IJ>KD LMN+OG+D

Capítulo 7. Formularios Buenas prácticas oficiales de Symfony

36

Page 37: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 37/57

$A?// P,/(g).# #Z(#29/ _G/(&?$(g).#

j

.%GA'$ 7%2$(',2 G%'A9Y,&-\Y,&-`%'A9#&b2(#&7?$# *G%'A9#&n ?&&?) *,.(',2/]

j

*G%'A9#&

CC EEE0O?99\m/?1#mn m/%G-'(mn ?&&?)\mA?G#Am cO m3&#?(# P,/(m]]

i

k

CC EEE

k

S;353."'D4.%4 42%4 E(;D&'";3( 24 :324d( #";" 1;4"; ";%$1&'(2 :4' <'(5 C #(; 42( 3.1'&C4 4' <(%@. >)&+/&

A3,/ + B3. 4D<";5(] 42%4 E(;D&'";3( #(:;$" ;4&%3'3L";24 %"D<30. #";" '" "113@. :4 D(:3E31"; '(2 ";%$1&^

'(2+ -. 42%4 1"2( 4' %4T%( :4' <(%@. 24;$" 3.1(;;41%(] C" /&4 .( 42%N2  .)&+#$3 ";%$1&'(2 23.( 73$('(.@#:

$3%3,+ Q";" 4P3%"; 42%(2 #;(<'4D"2] "'5&.(2 #;(5;"D":(;42 #;4E34;4. "d":3; '(2 <(%(.42 :3;41%"D4.%4

4. 4' 1(.%;('":(;a

2?-#/.?$# _..`%29A#h3,2(&,AA#&h_9-'2i

%/# ")-7,2)h3,-.,2#2(hQ((.Y,%29?(',2hL#M%#/(i

%/# ")-7,2)h`%29A#hY&?-#I,&J`%29A#h3,2(&,AA#&h3,2(&,AA#&i

%/# _..`%29A#hS2('()hP,/(i

%/# _..`%29A#hY,&-hP,/(g).#i

$A?// P,/(3,2(&,AA#& #Z(#29/ 3,2(&,AA#&j

CC EEE

.%GA'$ 7%2$(',2 2#I_$(',2\L#M%#/( *&#M%#/(]

j

*.,/( c 2#I P,/(\]i

*7,&- c *(B'/0O$&#?(#Y,&-\2#I P,/(g).#\]n *.,/(]i

*7,&-0O?99\m/%G-'(mn m/%G-'(mn ?&&?)\

mA?G#Am cO m3&#?(#mn

m?((&m   cO ?&&?)\m$A?//m cO mG(2 G(209#7?%A( .%AA0&'DB(m]

]]i

CC EEE

k

k

-2%" 2('&13@. %"D<30. 42 &. 4;;(;] C" /&4 42%N2 D4L1'".:( 4' 1@:35( :4 '"2 #'".%3''"2 ̀ 4%3/&4%"2] 1'"242

!BB] 4%1+c 1(. 4' 1@:35( QiQ #&;( :4' 1(.%;('":(;+ B4#";"; '"2 :3E4;4.%42 1"#"2 :4 '" "#'31"13@. 42 &."

<&4." #;N1%31" /&4 234D#;4 :4<4;$"2 245&3;+ Q(; 42( 42 D4R(; 1('(1"; %(:( '( ;4'"13(.":( 1(. '" P32%"

4. '"2 #;(#3"2 #'".%3''"2a

Buenas prácticas oficiales de Symfony Capítulo 7. Formularios

37

Page 38: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 38/57

l7,&- -#(B,9c[PV"g[ jj 7,&-^#2$().#\7,&-] kkO

jj 7,&-^I'9D#(\7,&-] kk

l'2.%( ().#c[/%G-'([ 1?A%#c[3&#?(#[

$A?//c[G(2 G(209#7?%A( .%AA0&'DB([ CO

lC7,&-O

]2E2 M&"#&5$S,"#( &0 7(58/0,5$(BCDE(.C #4;D3%4 ;4.:4;3L"; '(2 E(;D&'";3(2 :4 D&1Y"2 E(;D"2 :3E4;4.%42] :42:4 ;4.:4;3L"; %(:( 4'

E(;D&'";3( " '" P4L 1(. &." 3.2%;&113@. Y"2%" ;4.:4;3L"; 1":" &." :4 '"2 #";%42 /&4 E(;D". 1":" 1"D^

#( :4 E(;D&'";3(+ ?" D4R(; D".4;" :4 ;4.:4;3L"; 4' E(;D&'";3( 234D#;4 :4#4.:4 :4 1&N.%( .41423%42

#4;2(."'3L"; '(2 E(;D&'";3(2+

?( DN2 24.13''(] 42#413"'D4.%4 :&;".%4 4' :42";;(''( :4 '" "#'31"13@.] 42 1;4"; '"2 4%3/&4%"2 l7,&-O C

lC7,&-O " D".( C :42#&02 &%3'3L"; '" E&.13@. 7,&-^I'9D#(\] #";" ;4.:4;3L"; %(:(2 '(2 1"D#(2 :4' E(;^

D&'";3(a

l7,&- -#(B,9c[PV"g[ jj 7,&-^#2$().#\7,&-] kkO

jj 7,&-^I'9D#(\7,&-] kk

lC7,&-O

?(2 #;(5;"D":(;42 BCDE(.C DN2 4T#4;3D4.%":(2 24 Y"<;N. :":( 1&4.%" :4 /&4 4. 4' 4R4D#'( ".%4^

;3(; .( 24 &%3'3L". '"2 E&.13(.42 7,&-^/(?&(\] ( 7,&-\] #";" ;4.:4;3L"; '" 4%3/&4%" l7,&-O :4' E(;D&^'";3(+ -' D(%3P( 42 /&4] "&./&4 '"2 E&.13(.42 2(. D&C 1@D(:"2] .( "#(;%". %".%"2 P4.%"R"2 %4.34.:(

4. 1&4.%" /&4 ;4:&14. '354;"D4.%4 '" '453<3'3:": :4' E(;D&'";3(+

B3 /&34;42 1(.%;('"; :4 D".4;" DN2 #;4132" 1@D( 24 ;4.:4;3L". '(2 1"D#(2 :4' E(;D&'";3(] .( &%3'3142

'" E&.13@. 7,&-^I'9D#(\7,&-] C 4. 2& '&5";] ;4.:4;3L" 1":" 1"D#( :4 E(;D&'";3( 3.:3P3:&"'D4.%4+

!(.2&'%" 4' ";%$1&'(  ;3* /3 >",/37(F& E3)7 G&#$&)(#5  `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b

E(;DbE(;Dh1&2%(D3L"%3(.+Y%D'c #";" 2"<4; 1@D( Y"14;'( C #";" "#;4.:4; " :4E3.3; %4D"2 :4 E(;D&^

'";3(+

]2Q2 L5(%&*,"#( &0 &"V.( #& 7(58/0,5$(*-' #;(142"D34.%( :4 '(2 E(;D&'";3(2 BCDE(.C 4. '(2 1(.%;('":(;42 :4<4;$" 245&3; '" 235&34.%4 42%;&1^

%&;"a

.%GA'$ 7%2$(',2 2#I_$(',2\L#M%#/( *&#M%#/(]

j

CC $&#?& #A 7,&-%A?&', EEE

*7,&-0OB?29A#L#M%#/(\*&#M%#/(]i

M( &%3'3142 '"2 E&.13(.42 7,&-\]] 7,&-^/(?&(\] ( 7,&-^#29\] #";" ;4.:4;3L"; '"2

4%3/&4%"2 :4 "#4;%&;" C 134;;4 :4' E(;D&'";3(+IJ>KD LMN+OG+D

?" _.31" 4T14#13@. 42 4' E(;D&'";3( #";" <(;;"; ";%$1&'(2 #(;/&4 42 %". 23D#'4 /&4 2& _.31(

1(.%4.3:( 42 &. <(%@. C 4.%(.142 2$ /&4 D4;414 '" #4." &%3'3L"; 42%(2 "%"R(2+OMJ+P

Capítulo 7. Formularios Buenas prácticas oficiales de Symfony

38

Page 39: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 39/57

'7 \*7,&-0O'/"%G-'((#9\] uu *7,&-0O'/v?A'9\]] j

*#- c *(B'/0OD#(q,$(&'2#\]0OD#(f?2?D#&\]i

*#-0O.#&/'/(\*.,/(]i

*#-0O7A%/B\]i

&#(%&2 *(B'/0O&#9'&#$(\*(B'/0OD#2#&?(#a&A\

m?9-'2^.,/(^/B,Imn

?&&?)\m'9m cO *.,/(0OD#(b9\]]

]]i

k

CC &#29#&'R?& A? .A?2('AA? EEE

k

-. 4' 1@:35( ".%4;3(; 42 3D#(;%".%4 E3R";24 4. :(2 1(2"2+ Q;3D4;(] 42 D4R(; &%3'3L"; &." _.31" "113@.

%".%( #";" D(2%;"; 4' E(;D&'";3( 1(D( #";" #;(142";'(+ 9&./&4 #(:;$"2 Y"<4; :4E3.3:( &." "[email protected]#I_$(',2 /&4 2('"D4.%4 D&42%;4 4' E(;D&'";3( C :42#&02 (%;" "113@. $&#?(#_$(',2 /&4 2@'( 24 4.^

1";5&4 :4 #;(142";'(] '"2 :(2 "113(.42 24;$". #;N1%31"D4.%4 3:0.%31"2+ 92$ /&4 42 D&1Y( DN2 EN13' 23

'" "113@. 2#I_$(',2 24 4.1";5" :4 '"2 :(2 %";4"2+

-. 245&.:( '&5";] %4 "1(.24R"D(2 /&4 "d":"2 4' D0%(:( *7,&-0O'/"%G-'((#9\] :4.%;( :4 '" 3.2%;&1^

13@. '7  #";" Y"14; 4' 1@:35( DN2 1'";(+ U01.31"D4.%4 .( 42 .4142";3( Y"14;'(] C" /&4 4' D0%(:(

'/v?A'9\] 4R41&%" #;3D4;( 4' D0%(:( '/"%G-'((#9\]+ Q4;( 23 .( '( "d":42] 4' E'&R( :4 4R41&13@. :4'

E(;D&'";3( /&4:" &. #(1( ;";(] C" /&4 #";414 /&4 234D#;4 24 42%N #;(142".:( 4' E(;D&'";3(] 3.1'&2(

4. '"2 #4%313(.42 xSg /&4 23D#'4D4.%4 '( D&42%;".+

Buenas prácticas oficiales de Symfony Capítulo 7. Formularios

39

Page 40: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 40/57

Esta página se ha dejado vacía a propósito

40

Page 41: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 41/57

+,-.)/0( _2

G")&5",%$(",0$S,%$F"?" 3.%4;."13(."'3L"13@. C '" '(1"'3L"13@. 24 4.1";5". :4 ":"#%"; '"2 "#'31"13(.42 C 2&2 1(.%4.3:(2 #";"

'" ;453@. ( 3:3(D" 42#41$E31(2 :4' &2&";3(+ -. BCDE(.C 42%" E&.13(."'3:": 42 (#13(."' C #(; 42( :4<42

"1%3P";'" ".%42 :4 &%3'3L";'"+ Q";" 4''(] :421(D4.%" '" (#13@. :4 1(.E35&;"13@. (&?2/A?(,& C :4E3.4 4'

3:3(D" #(; :4E41%( :4 '" "#'31"[email protected]

d ?..C$,27'DC$,27'DE)-A

7&?-#I,&J@

d EEE

(&?2/A?(,&@ j 7?AAG?$J@ [wA,$?A#w[ k

d ?..C$,27'DC.?&?-#(#&/E)-A

.?&?-#(#&/@

d EEE

A,$?A#@   #2

_212 ^(58,)( #& 0(* ,5%`$V(* #& )5,#/%%$F"-' 1(D#(.4.%4 H)+#,%+/(3# :4 BCDE(.C 2(#(;%" D&1Y(2 E(;D"%(2 :3E4;4.%42 #";" 1;4"; '(2 ";1Y3P(2 :4

%;":&[email protected] QiQ] r%] E.,] E-,] [BSM] !Bs] AMA] 4%1+

O4 %(:(2 '(2 E(;D"%(2 :4 %;":&113@. :32#(.3<'42] 2('"D4.%4 l?AXX C 5&//&=/  42%N. 2(#(;%":(2 #(; %(:"2

'"2 Y4;;"D34.%"2 /&4 &%3'3L". '(2 %;":&1%(;42 #;(E423(."'42+ 9:4DN2] "' 42%"; <"2":( 4. lk?] #&4:42

P"'3:"; '(2 1(.%4.3:(2 :4' ";1Y3P( " D4:3:" /&4 '( 1;4"2+

9 #";%3; :4 '" P4;23@. 8+= :4 BCDE(.C '(2 ";1Y3P(2 l?AXX 2(#(;%". '" 1;4"13@. :4 .(%"2 C 1(D4.%";3(2+

!(D( &." <&4." %;":&113@. :4#4.:4 %(%"'D4.%4 :4 &. <&4. 1(.%4T%(] 42%"2 .(%"2 l?AXX 2(. 3:4"'42

#";" #;(#(;13(."; %(:" 42" 3.E(;D"13@. :4 1(.%4T%(+

K%3'3L" 4' E(;D"%( l?AXX #";" 1;4"; '(2 ";1Y3P(2 :4 %;":&113@.+IJ>KD LMN+OG+D

41

Page 42: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 42/57

_2C2 P5A,"$S,"#( 0(* ,5%`$V(* #& )5,#/%%$F"

?(2 #;(5;"D":(;42 BCDE(.C .(;D"'D4.%4 5&";:"<". '(2 ";1Y3P(2 :4 %;":&113@. :4.%;( :4 '(2 :3;41^

%(;3(2 L#/,%&$#/C(&?2/A?(',2/C :4 '(2 !"#$%&, :4 '" "#'31"13@.+

B3. 4D<";5(] "'D"14."; %(:(2 '(2 ";1Y3P(2 4. ?..CL#/,%&$#/C(&?2/A?(',2/C 42 DN2 1@D(:( #(;/&4

"2$ 24 14.%;"'3L". %(:(2 42%(2 ";1Y3P(2+ 9:4DN2] 1&"'/&34; ";1Y3P( 1('(1":( 4. ?..CL#/,%&$#/C 24 1(.^23:4;" 1(. DN2 #;3(;3:": /&4 '(2 ";1Y3P(2 4/&3P"'4.%4 :4E3.3:(2 4. 4' :3;41%(;3( L#/,%&$#/C :4 '(2

!"#$%&,+ 92$ /&4 %&2 ";1Y3P(2 :4 %;":&113@. 7+.B+.+)@# 1&"'/&34; %;":&113@. 3:0.%31" :4E3.3:" 4. '(2

!"#$%&, :4 %4;14;(2] "'5( /&4 42 D&C _%3' 4. '"2 "#'31"13(.42+

_2E2 T&7$"$&"#( %0,V&* -,5, 0,* )5,#/%%$("&*

-D#'4"; 1'"P42 4. P4L :4 1(.%4.3:(2 23D#'3E31" D&1Y( '" 542%3@. :4 '(2 ";1Y3P(2 :4 %;":&113@.+ -'D(%3P( 42 /&4 #&4:42 1"D<3"; '(2 1(.%4.3:(2 :4' 3:3(D" #;3.13#"' 23. .41423:": :4 1"D<3"; %(:(2 '(2

";1Y3P(2 :4 %(:(2 '(2 3:3(D"2+

9:4DN2] '"2 1'"P42 234D#;4 :4<4. :421;3<3; 2&  6)368,(/3 C .( 2&  %3.+%(F+.(8#+ B3 #(; 4R4D#'( :4E3.42

&. E(;D&'";3( 1(. &. 1"D#( 1&C( %$%&'( 42 e,-G&# 9# %/%?&',] 4.%(.142 '" 1'"P4 :4<4;$" 24;

A?G#AE2,-G&#^%/%?&', C .( 7,&-%A?&',^#9'(E$?-.,/^,GA'D?(,&',/EA?G#AE2,-G&#^%/%?&',+

_2Q2 >Z&8-0( #& ,5%`$V( #& )5,#/%%$F"9#'31".:( %(:"2 '"2 <&4."2 #;N%31"2 ".%4;3(;42] 4' ";1Y3P( :4 %;":&113@. :4 '" "#'31"13@. #";" 4' 3:3(^

D" 3.5'02 %4.:;$" 42%4 "2#41%(a

l{00 ?..CL#/,%&$#/C(&?2/A?(',2/C-#//?D#/E#2EZA'77 00O

lzZ-A 1#&/',2c[4E<[zO

lZA'77 1#&/',2c[4E5[ Z-A2/c[%&2@,?/'/@2?-#/@($@ZA'77@9,$%-#2(@4E5[O

l7'A# /,%&$#0A?2D%?D#c[#2[ (?&D#(0A?2D%?D#c[#2[ 9?(?().#c[.A?'2(#Z([O

lG,9)O

l(&?2/0%2'( '9c[4[O

l/,%&$#O('(A#E.,/(^A'/(lC/,%&$#O

l(?&D#(OP,/( r'/(lC(?&D#(O

lC(&?2/0%2'(O

lCG,9)O

-'   !"#$%&   [kBU;".2'"%3(.o&.:'4   `Y%%#2abb53%Y&<+1(Db21YD3%%R(Yb[kBU;".2'"%3(.o&.:'4c

(E;414 &." 3.%4;E"L V4< #";" P4; C 4:3%"; '(2 ";1Y3P(2 :4 %;":&113@.+ U"D<30. :32#(.4 :4 Y4^

;;"D34.%"2 "P".L":"2 #";" 4T%;"4; :4 '"2 #'".%3''"2 '"2 1":4."2 :4 %4T%( /&4 :4<4. %;":&13;24

4 3.1'&2( #&4:4 "1%&"'3L"; "&%(DN%31"D4.%4 '(2 ";1Y3P(2 l?AXX+

OMJ+P

9'D"14." %(:(2 '(2 ";1Y3P(2 :4 %;":&113@. 4. 4' :3;41%(;3( ?..CL#/,%&$#/C

(&?2/A?(',2/C+IJ>KD LMN+OG+D

K%3'3L" 1'"P42 4. P4L :4 1(.%4.3:(2 #";" 3:4.%3E31"; 1":" %;":&113@.+IJ>KD LMN+OG+D

Capítulo 8. Internacionalización Buenas prácticas oficiales de Symfony

42

Page 43: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 43/57

lC7'A#O

lCZA'77O

Buenas prácticas oficiales de Symfony Capítulo 8. Internacionalización

43

Page 44: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 44/57

Esta página se ha dejado vacía a propósito

44

Page 45: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 45/57

+,-.)/0( a2

;&A/5$#,#a212 D/)&")$%,%$F" < ()*&+,%%' -. '"2 "#'31"13(.42 BCDE(.C #&4:42 "&%4.%31"; " %&2 &2&";3(2 1(. 1&"'/&34; D0%(:( /&4 :4E3."2 C

#&4:42 1";5"; '" 3.E(;D"13@. :4 '(2 &2&";3(2 :42:4 1&"'/&34; E&4.%4+ !(D( 42%4 42 &. %4D" <"2%".%4

1(D#'4R(] #&4:42 41Y"; &. P32%"L( " '(2   %&%(;3"'42 (E313"'42 2(<;4 '" 245&;3:": :4 BCDE(.C

`Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b241&;3%Cb3.:4T+Y%D'c +

A.:4#4.:34.%4D4.%4 :4 %&2 .41423:":42] '" "&%4.%31"13@. 24 1(.E35&;" 4. 4' ";1Y3P( /#$%&'()E)-A <"^

 R( '" 1'"P4 7'&#I?AA/+

?" D"C(;$" :4 "#'31"13(.42 2('"D4.%4 &%3'3L". &. D41".32D( :4 "&%4.%31"13@. C &. 1(.R&.%( :4 &2&"^

;3(2+ Q(; 42( %4 <"2%" 1(. %4.4; &. _.31(  '()&*+%%+ K." 4T14#13@. PN'3:" 42 1&".:( &%3'3L"2 DN2 :4 &.

D41".32D( :4 "&%4.%31"13@.] 1(D( #(; 4R4D#'( 1&".:( :32#(.42 :4 &." 9QA #;(%453:"+

9:4DN2] :4<4;$"2 "1%3P"; 234D#;4 '" (#13@. ?2,2)-,%/ :4' '()&*+%%+ Q";" ;42%;3.53; 4' "1142( " '"2 :3E4^

;4.%42 #";%42 :4 '" "#'31"13@.] &%3'3L" '" 1(.E35&;"13@. :4 '" (#13@. ?$$#//^$,2(&,A+

!&".:( 24 "'D"14.". '"2 1(.%;"24d"2 :4 '(2 &2&";3(2 4. 4' 232%4D"] '" ;41(D4.:"13@. 1(.232%4 4. &%3^

'3L"; 4' 1(:3E31":(; G$&).( 4. P4L :4' %;":313(."' 1(:3E31":(; <"2":( 4. "Q_0845+ ?" #;3.13#"' P4.%"R"

:4 G$&).( 42 /&4 C" 3.1'&C4 4'  ,+%/  1(D( #";%4 :4 '" 1(.%;"24d"] '( /&4 '4 #;(%454 E;4.%4 " "%"/&42 :4

%3#( )+(#!3* /+!%&+ 9:4DN2] "' %;"%";24 :4 &. "'5(;3%D( ":"#%"%3P(] 42 #(23<'4 ;"'4.%3L"; 2& 4R41&13@.

#";" ;4232%3; D4R(; " '(2 "%"/&42 :4 E&4;L" <;&%"+

!(. %(:( 42%(] '" 1(.E35&;"13@. :4 '" "#'31"13@. :4 #;&4<" /&4:" :4 '" 235&34.%4 D".4;" #";" &%3'3L";&. E(;D&'";3( :4 '(53. C 1";5"; '(2 &2&";3(2 D4:3".%4 '" <"24 :4 :"%(2a

9 D4.(2 /&4 :4E3."2 :(2 D41".32D(2 :4 "&%4.%31"13@. :3E4;4.%42 `4R4D#'(] E(;^

D&'";3( :4 '(53. #";" 4' 23%3( C 232%4D" :4 /3I&#, #";" '" 9QAc :4E3.4 &. _.31( '()&:

*+%% 4. %& "#'31"13@. 1(. '" (#13@. ?2,2)-,%/ "1%3P":"+

IJ>KD LMN+OG+D

K%3'3L" G$&).( #";" 1(:3E31"; '"2 1(.%;"24d"2 :4 %&2 &2&";3(2+IJ>KD LMN+OG+D

45

Page 46: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 46/57

/#$%&'()@

#2$,9#&/@

_..`%29A#hS2('()ha/#&@ G$&).(

.&,1'9#&/@

9?(?G?/#^%/#&/@#2('()@ j $A?//@ _..`%29A#@a/#&n .&,.#&()@ %/#&2?-# k

7'&#I?AA/@

/#$%&#9^?&#?@

.?((#&2@ sC

?2,2)-,%/@ (&%#

7,&-^A,D'2@

$B#$J^.?(B@ /#$%&'()^A,D'2^$B#$J

A,D'2^.?(B@ /#$%&'()^A,D'2^7,&-

A,D,%(@

.?(B@ /#$%&'()^A,D,%(

(?&D#(@ B,-#.?D#

d e, /# -%#/(&? A? /#$$'|2 m?$$#//^$,2(&,Am

a2C2 D/)(5$S,%$F"BCDE(.C %"D<30. :4E3.4 P";3"2 E(;D"2 :4 1(.E35&;"; '" "&%(;3L"13@.] 42 :413;] :4 ;42%;3.53; 4' "1142(

:4 '(2 &2&";3(2 " '(2 ;41&;2(2+ -. 1(.1;4%(] #&4:42 Y"14; &2( :4 '" 1(.E35&;"13@. ?$$#//^$,2(&,A 4.

4' ";1Y3P( 241&;3%C+CD' `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b;4E4;4.14b1(.E35&;"%3(.b241&;3%C+Y%D'c

] :4 '"   ".(%"13@. ZB41&;3%C   `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b<&.:'42bB4.23(X;"D4V(;\-T%;"^

o&.:'4b"..(%"%3(.2b241&;3%C+Y%D'c  C :4'   D0%(:( 32j;".%4:`c  `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b

<((\b241&;3%C+Y%D'p"11422^1(.%;('c :4' 24;P313( /#$%&'()E$,2(#Z(+

9' D";54. :4 '( ".%4;3(;] 4T32%4. (%;"2 E(;D"2 :4 14.%;"'3L"; %(:" '" '@531" ;4'"13(.":" 1(. '" 245&;3^

:":] 1(D( #(; 4R4D#'( '(2 ,&.")(/0 93/&), C '"2 9!? ( %(,/+, $& .3#/)3% $& +..&,3+

t<42%#;"1%314u

n K%3'3L" &. ,&.")(/0 93/&)  #";" :4E3.3; '"2 ;42%;3113(.42 :4 245&;3:": :4 '(2 ;41&;2(2 :4 '""#'31"13@.+

-' 1@:35( E&4.%4 :4 '" "#'31"13@. :4 #;&4<" 3.1'&C4 1(D4.%";3(2 /&4 4T#'31". :4%"''":"D4.%4

1":" #";%4 :4 42%4 ";1Y3P(+OMJ+P

n K%3'3L" ?$$#//^$,2(&,A #";" #;(%454; 24113(.42 1(D#'4%"2 :4 %& 23%3( V4<+

n K%3'3L" '" ".(%"13@. !"#$%&'() #";" #;(%454; ;41&;2(2 3.:3P3:&"'42+

n K%3'3L" 4' 24;P313( /#$%&'()E$,2(#Z( 1&".:( '" '@531" ;4'"13(.":" 1(. '"

245&;3:": 24" DN2 1(D#'4R"+

IJ>KD LMN+OG+D

Capítulo 9. Seguridad Buenas prácticas oficiales de Symfony

46

Page 47: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 47/57

n K%3'3L" &." 9!? 1&".:( :4E3."2 ;42%;3113(.42 :4 245&;3:": 5;".&'";42 4. '"2 /&4 1":" (<R4%(

:4E3.4 4' "1142( #4;D3%3:( #";" 1":" &2&";3(+ tb<42%#;"1%314u

a2E2 3, ,"(),%$F" b;&%/5$)<?" ".(%"13@. !"#$%&'() 42 '" E(;D" DN2 24.13''" :4 1(.%;('"; 4' "1142( " 1":" 1(.%;('":(; :4 '" "#'31"^

13@.+ B& 23.%"T32 42 D&C EN13' :4 '44; C ;42&'%" D&C 1@D(:( 1(.E35&;"; 4' "1142( :4 1":" 1(.%;('":(;

 R&2%( 4.13D" :4' 1@:35( :4 '" "113@.+

-. '" "#'31"13@. :4 #;&4<"] #";" 1;4"; &. .&4P( ";%$1&'( 4. 4' <'(5 42 .4142";3( :32#(.4; :4'  )3%&

LVrS^_qfbe+ !(. '" ".(%"13@. !"#$%&'()] 4' 1@:35( ;42&'%".%4 42a

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2hL,%(#i

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2h"#$%&'()i

CC EEE

CKKK q'/.A?)/ ? 7,&- (, $&#?(# ? 2#I P,/( #2('()E

K

K !L,%(#\[C2#I[n 2?-#c[?9-'2^.,/(^2#I[]

K !"#$%&'()\[B?/^&,A#\mLVrS^_qfbem][]

KC

.%GA'$ 7%2$(',2 2#I_$(',2\]

j

CC EEE

k

a2E212 T&7$"$&"#( 5&*)5$%%$("&* %(8-0&Z,* 8&#$,")& &\-5&*$("&*B3 '" '@531" :4 %& "#'31"13@. 42 DN2 1(D#'4R"] #&4:42 &%3'3L"; 4T#;423(.42 `Y%%#abb2CDE(.C+1(Db:(1b

1&;;4.%b1(D#(.4.%2b4T#;4223(.h'".5&"54b3.%;(:&1%3(.+Y%D'c :4.%;( :4 '" ".(%"13@. !"#$%&'()+ -.

4' 235&34.%4 4R4D#'(] 24 ;42%;3.54 4' "1142( #";" /&4 2@'( #&4:". 4:3%"; '(2 ";%$1&'(2 "/&4''(2 &2&";3(2

1&C( 4D"3' 1(3.13:" 1(. 4' "&%(; :4' ";%$1&'( ̀ (<%4.3:( D4:3".%4 4' D0%(:( D#(_%(B,&S-?'A :4' (<R4%(

P,/(ca

%/# _..`%29A#hS2('()hP,/(i

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2h"#$%&'()i

CKKK !L,%(#\[Cj'9kC#9'([n 2?-#c[?9-'2^.,/(^#9'([]

K !"#$%&'()\[%/#&ED#(S-?'A\] cc .,/(ED#(_%(B,&S-?'A\][]

KC

.%GA'$ 7%2$(',2 #9'(_$(',2\P,/( *.,/(]

j

CC EEE

k

-2%" 1(.E35&;"13@. ;4/&34;4 :4' &2( :4 '(2  Q";"D!(.P4;%4;2   `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b

<&.:'42bB4.23(X;"D4V(;\-T%;"o&.:'4b"..(%"%3(.2b1(.P4;%4;2+Y%D'c ] C" /&4 Y"C /&4 ;4"'3L"; &."

1(.2&'%" " '" <"24 :4 :"%(2 #";" (<%4.4; 4' (<R4%( P,/( C "235.";'( "' ";5&D4.%( *.,/( :4' 1(.%;('":(;+

Buenas prácticas oficiales de Symfony Capítulo 9. Seguridad

47

Page 48: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 48/57

-2%( 42 '( /&4 Y"14 /&4 #&4:"2 &%3'3L"; &." P";3"<'4 ''"D":" .,/( :4.%;( :4 '" 4T#;423@. :4 '" ".(%"^

13@. !"#$%&'()+

?" 5;". :42P4.%"R" :4 '"2 4T#;423(.42 42 /&4 .( 24 #&4:4. ;4&%3'3L"; EN13'D4.%4 4. (%;"2 #";%42 :4 '"

"#'31"13@.+ AD"53." /&4 /&34;42 "d":3; 4. &." #'".%3''" &. 4.'"14 " '" "113@. :4 4:3%"; 4' ";%$1&'( #4^

;( 2('"D4.%4 23 4' &2&";3( /&4 42%N "114:34.:( " '" "#'31"13@. 42 "&%(; :4 424 ";%$1&'(+ 9Y(;" D32D(%4.:;$"2 /&4 ;4#4%3; 42" D32D" 4T#;423@. &%3'3L".:( 4' 1@:35( UV35a

jw '7 ?..E%/#& ?29 ?..E%/#&E#-?'A cc .,/(E?%(B,&S-?'A wk

l? B&#7c[[O EEE lC?O

jw #29'7 wk

?" 2('&13@. DN2 24.13''" #";" ;4&%3'3L"; 42%" '@531" 24;$" 1;4"; &. .&4P( D0%(:( 4. '" 4.%3:": P,/(

/&4 1(D#;&4<4 23 4' &2&";3( 3.:31":( 42 4' "&%(; :4' ";%$1&'(a

CC /&$C_..`%29A#CS2('()CP,/(E.B.

CC EEE

$A?// P,/(

j

CC EEE

CKK

K }S/ #A %/%?&', '29'$?9, #A ?%(,& 9#A P,/(z

K

K !&#(%&2 G,,A

KC.%GA'$ 7%2$(',2 '/_%(B,&\a/#& *%/#& c 2%AA]

j

&#(%&2 *%/#& uu *%/#&0OD#(S-?'A\] cc *(B'/0OD#(_%(B,&S-?'A\]i

k

k

9Y(;" C" #&4:42 ;4&%3'3L"; 42%4 D32D( D0%(:( %".%( 4. 4' 1(.%;('":(; 1(D( 4. '" #'".%3''"a

%/# _..`%29A#hS2('()hP,/(i

%/# "#2/',h`%29A#hY&?-#I,&JSZ(&?`%29A#h3,27'D%&?(',2h"#$%&'()i

CKK

K !L,%(#\[Cj'9kC#9'([n 2?-#c[?9-'2^.,/(^#9'([]

K !"#$%&'()\[.,/(E'/_%(B,&\%/#&][]

KC

.%GA'$ 7%2$(',2 #9'(_$(',2\P,/( *.,/(]

j

CC EEE

k

jw '7 .,/(E'/_%(B,&\?..E%/#&] wk

l? B&#7c[[O EEE lC?Ojw #29'7 wk

Capítulo 9. Seguridad Buenas prácticas oficiales de Symfony

48

Page 49: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 49/57

a2Q2 +(8-5(4,"#( 0(* -&58$*(* *$" b;&%/5$)<-' 4R4D#'( :4 '" 24113@. ".%4;3(; &%3'3L" !"#$%&'() R&.%( 1(. &. A+)+7>3#9&)/&)  #";" #(:4; "114:4; "'

P"'(; :4 '" P";3"<'4 .,/(+ B3 .( %4 5&2%" Y"14;'( "2$ ( %&2 ;4/&4;3D34.%(2 2(. DN2 1(D#'4R(2] ;41&4;:"

/&4 '" 245&;3:": 24 #&4:4 1(D#;(<"; EN13'D4.%4 1(. 1@:35( QiQa

CKK

K !L,%(#\[Cj'9kC#9'([n 2?-#c[?9-'2^.,/(^#9'([]

KC

.%GA'$ 7%2$(',2 #9'(_$(',2\*'9]

j

*.,/( c *(B'/0OD#(q,$(&'2#\]0OD#(L#.,/'(,&)\m_..`%29A#@P,/(m]

0O7'29\*'9]i

'7 \{*.,/(] j

(B&,I *(B'/0O$&#?(#e,(Y,%29SZ$#.(',2\]i

k

'7 \{*.,/(0O'/_%(B,&\*(B'/0OD#(a/#&\]]] j

(B&,I *(B'/0O$&#?(#_$$#//q#2'#9SZ$#.(',2\]i

k

CC EEE

k

a2R2 3(* -&."*)/0 23/&*' 

B3 '" '@531" ;4'"13(.":" 1(. '" 245&;3:": 42 1(D#'4R" C .( 24 #&4:4 14.%;"'3L"; 4. &. D0%(:( :4 '"4.%3:":] 1(D( 4' ".%4;3(; D0%(:( '/_%(B,&\]] 4.%(.142 :4<4;$"2 &%3'3L"; &. ,&.")(/0 93/&)  #;(#3(+ ?"

5;". P4.%"R" :4 '(2 93/&), ;42#41%( " '"2 9!? `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b241&;3%Cb

"1'+Y%D'c 42 /&4 2(. &. (;:4. :4 D"5.3%&: DN2 24.13''(2 :4 1;4"; C 4. 1"23 %(:(2 '(2 1"2(2 (E;414. '"

D32D" E'4T3<3'3:":+

Q";" &%3'3L"; 42%4 D41".32D(] 1;4" #;3D4;( '" 1'"24 :4'  93/&) + -' 235&34.%4 4R4D#'( D&42%;" '" 1"24 &%3^

'3L":" 4. '" "#'31"13@. #";" 4' 93/&)  <"2":( 4. 4' D0%(:( D#(_%(B,&S-?'Aa

2?-#/.?$# _..`%29A#h"#$%&'()i

%/# ")-7,2)h3,-.,2#2(h"#$%&'()h3,&#h_%(B,&'R?(',2hv,(#&h_G/(&?$(v,(#&i%/# ")-7,2)h3,-.,2#2(h"#$%&'()h3,&#ha/#&ha/#&b2(#&7?$#i

CC r? $A?/# _G/(&?$(v,(#& #/(p 9'/.,2'GA# ? .?&('& 9# ")-7,2) 5E=

$A?// P,/(v,(#& #Z(#29/ _G/(&?$(v,(#&

j

$,2/( 3LS_gS c m$&#?(#mi

$,2/( Sqbg   c m#9'(mi

.&,(#$(#9 7%2$(',2 D#("%..,&(#9_((&'G%(#/\]

j

&#(%&2 ?&&?)\/#A7@@3LS_gSn /#A7@@Sqbg]i

Buenas prácticas oficiales de Symfony Capítulo 9. Seguridad

49

Page 50: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 50/57

k

.&,(#$(#9 7%2$(',2 D#("%..,&(#93A?//#/\]

j

&#(%&2 ?&&?)\m_..`%29A#hS2('()hP,/(m]i

k

.&,(#$(#9 7%2$(',2 '/x&?2(#9\*?((&'G%(#n *.,/(n *%/#& c 2%AA]

j

'7 \{*%/#& '2/(?2$#,7 a/#&b2(#&7?$#] j

&#(%&2 7?A/#i

k

'7 \*?((&'G%(# cc /#A7@@3LS_gS uu '2^?&&?)\LVrS^_qfben *%/#&0OD#(L,A#/\]]] j

&#(%&2 (&%#i

k

'7 \*?((&'G%(# cc /#A7@@Sqbg uu *%/#&0OD#(S-?'A\] ccc *.,/(0OD#(_%(B,&S-?'A\]] j

&#(%&2 (&%#i

k

&#(%&2 7?A/#i

k

k

Q";" "1%3P"; 4'   93/&)   4. '" "#'31"13@.] :4E3.4 &. .&4P( 24;P313( C 4%3/&0%"'( 1(. '" 4%3/&4%"

/#$%&'()E1,(#&a

d ?..C$,27'DC/#&1'$#/E)-A

/#&1'$#/@

d EEE

.,/(^1,(#&@

$A?//@   _..`%29A#h"#$%&'()hP,/(v,(#&

.%GA'$@   7?A/#

(?D/@

0 j 2?-#@ /#$%&'()E1,(#& k

?( <&4.( :4' 93/&)  42 /&4 %"D<30. 24 #&4:4 &%3'3L"; R&.%( 1(. '" ".(%"13@. !"#$%&'()a

CKK

K !L,%(#\[Cj'9kC#9'([n 2?-#c[?9-'2^.,/(^#9'([]

K !"#$%&'()\['/^D&?2(#9\m#9'(mn .,/(][]

KC

.%GA'$ 7%2$(',2 #9'(_$(',2\P,/( *.,/(]

j

CC EEE

k

e #(; 2&#&42%( %"D<30. 24 #&4:4 1(D<3."; 1(. 4' 24;P313( /#$%&'()E$,2(#Z( D4:3".%4 4' D0%(:('/x&?2(#9\]a

Capítulo 9. Seguridad Buenas prácticas oficiales de Symfony

50

Page 51: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 51/57

CKK

K !L,%(#\[Cj'9kC#9'([n 2?-#c[?9-'2^.,/(^#9'([]

KC

.%GA'$ 7%2$(',2 #9'(_$(',2\*'9]

j

*.,/( c CC M%#&) 7,& (B# .,/( EEE

'7 \{*(B'/0OD#(\m/#$%&'()E$,2(#Z(m]0O'/x&?2(#9\m#9'(mn *.,/(]] j

(B&,I *(B'/0O$&#?(#_$$#//q#2'#9SZ$#.(',2\]i

k

k

a2[2 ;$A/$&")&* -,*(*-' !"#$%& XSBK24;o&.:'4 `c ] :42";;(''":( #(; '" 1(D&.3:": BCDE(.C] 23D#'3E31" '" 542%3@. :4 '(2 &2&"^

;3(2 "'D"14.":(2 4. '" <"24 :4 :"%(2+ U"D<30. 24 4.1";5" :4 %";4"2 1(D( 4' ;4532%;( :4 &2&";3(2 ( 4'

4.P$( :4 4D"3'2 1&".:( " &. &2&";3( 24 '4 ('P3:" 2& 1(.%;"24d"+

?" E&.13(."'3:":   W4D4D<4; k4   `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b241&;3%Cb;4D4D^

<4;hD4+Y%D'c :4' 1(D#(.4.%4 :4 245&;3:": :4 BCDE(.C #4;D3%4 D".%4.4; 1(.41%":(2 " %&2 &2&";3(2

#";" /&4 .( %4.5". /&4 3.%;(:&13; 2&2 1;4:4.13"'42 1":" P4L /&4 P323%4. %& 23%3(+

K." :4 '"2 E&.13(."'3:":42 DN2 _%3'42 :4' 1(D#(.4.%4 :4 245&;3:":] C /&4 42 424.13"' #(; 4R4D#'( #"^

;" :"; 2(#(;%4 "' &2&";3(] 1(.232%4 4. "114:4; " '" "#'31"13@.  (76&),3#+#$3 " (%;( &2&";3(+ O4 42%" D"^

.4;" #&4:42 1(D#;(<"; :4 #;3D4;" D".( 4' 4;;(; ( #;(<'4D" /&4 42%N 2&E;34.:( 4' &2&";3(+ !(.2&'%"

'" 24113@. 2(<;4 3D#4;2(."; &2&";3(2 `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b241&;3%Cb3D#4;^

2(."%3.5h&24;+Y%D'c #";" 1(.(14; '(2 :4%"''42+

Q(; _'%3D(] 23 4. %& 4D#;42" 24 &%3'3L" &. D0%(:( :4   %35(#  .( 2(#(;%":( #(; BCDE(.C] #&4:42

1;4"; %& #;(#3( #;(P44:(; :4 &2&";3(2 `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b241&;3%Cb1&2^

%(Dh#;(P3:4;+Y%D'c C %& #;(#3( #;(P44:(; :4 "&%4.%31"13@. `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1(^

(\<((\b241&;3%Cb1&2%(Dh"&%Y4.%31"%3(.h#;(P3:4;+Y%D'c +

Buenas prácticas oficiales de Symfony Capítulo 9. Seguridad

51

Page 52: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 52/57

Esta página se ha dejado vacía a propósito

52

Page 53: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 53/57

+,-.)/0( 1c2

D**&)* 9&4?(2 +,,&/, *&! 2(. '"2 Y(R"2 :4 42%3'( !BB] '(2 ";1Y3P(2 ["P"B1;3#% C '"2 3DN54.42 /&4 24 &%3'3L". 4. 4'

 ')3#/&#$ :4 '"2 "#'31"13(.42 #";" /&4 %4.5". &. <&4. "2#41%(+ M(;D"'D4.%4 '(2 #;(5;"D":(;42 BCD^

E(.C 1;4". 42%(2 ";1Y3P(2 4. '(2 :3;41%(;3(2 L#/,%&$#/C.%GA'$C :4 '(2 !"#$%&,+

O32#4;2"; '(2 +,,&/, 4.%;4 :414."2 :4 :3;41%(;3(2 :3E4;4.%42 Y"14 /&4 24" DN2 :3E$13' 542%3(.";'(2 #(;

#";%4 :4 %& 4/&3#(+ -' %;"<"R( :4 '(2 :324d":(;42 24;N D&1Y( DN2 EN13' 23 %(:(2 '(2 +,,&/, 24 4.1&4.%;".

4. &. _.31( '&5";+

9:4DN2] "' 14.%;"'3L"; %&2 +,,&/,] 4' 1@:35( :4 '"2 #'".%3''"2 24 23D#'3E31" #(;/&4 '(2 4.'"142 2(. D&1Y(

DN2 1(.132(2a

lA'2J &#Ac[/()A#/B##([ B&#7c[jj ?//#(\m$//CG,,(/(&?.E-'2E$//m] kk[ CO

lA'2J &#Ac[/()A#/B##([ B&#7c[jj ?//#(\m$//C-?'2E$//m] kk[ CO

jd EEE dk

l/$&'.( /&$c[jj ?//#(\mH/CHM%#&)E-'2EH/m] kk[OlC/$&'.(O

l/$&'.( /&$c[jj ?//#(\mH/CG,,(/(&?.E-'2EH/m] kk[OlC/$&'.(O

1c212 J)$0$S,"#( D**&)$%

i(C 4. :$" 42 #;N1%31"D4.%4 3D#(23<'4 /&4 &. 23%3( V4< :4E3." 2('"D4.%4 &.(2 #(1(2 ";1Y3P(2 !BB C ["P"B1;3#% 42%N%31(2+ B45&;"D4.%4 %&2 #;(C41%(2 &%3'3L";N. P";3(2 ";1Y3P(2 B"22 ( ?-BB /&4 24 1(D#3^

9'D"14." %(:(2 '(2 +,,&/, 4. 4' :3;41%(;3( I#GC :4' #;(C41%(+IJ>KD LMN+OG+D

-' :3;41%(;3( I#GC 42 #_<'31(] #(; '( 1&"'/&34; &2&";3( #&4:4 "114:4; " %(:(2 2&2 1(.%4.3:(2

:3;41%"D4.%4 :42:4 2& ."P45":(;+ B3 #;4E34;42 /&4 '(2 &2&";3(2 .( "114:". " '(2 ";1Y3P(2 (;3^

53."'42 :4 '(2  +,,&/, `#(; 4R4D#'( '(2 ";1Y3P(2 !(EE4B1;3#%] B"22 C ?-BBc] 5&";:" '(2 ";1Y3P(2

(;353."'42 4. ?..CL#/,%&$#/C?//#(/C C "'D"14." 4. I#GC 2('"D4.%4 4' ;42&'%":( :4 1(D#3'";

42(2 ";1Y3P(2+

KPOD

53

Page 54: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 54/57

'". " 1@:35( !BB C :42#&02 24 1(D<3.". C D3.3D3L". #";" D4R(;"; 4' ;4.:3D34.%( :4 '" #";%4 E;(.%"'

:4 '" "#'31"13@.+

-T32%4. D&1Y"2 Y4;;"D34.%"2 /&4 ;42&4'P4. <34. 42%4 #;(<'4D"] 3.1'&C4.:( "'5&."2 42#413"'D4.%4

:324d":"2 #";" 4' ')3#/&#$ C /&4 .( &%3'3L". QiQ] 1(D( #(; 4R4D#'( j;&.%[B+

9224%31 `Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b"224%31b"224%hD"."54D4.%+Y%D'c 42 &. 542%(;

:4 +,,&/, 1"#"L :4 1(D#3'"; '(2  +,,&/, :42";;(''":(2 1(. :414."2 :4 %41.('(5$"2] 3.'&1C4.:( #(; 2&^

#&42%( ?-BB] B"22 C !(EE4B1;3#%+ !(D<3."; %(:(2 42%(2 +,,&/, 4. &. _.31( ";1Y3P( D4:3".%4 9224%31 42

%". 24.13''( 1(D( &%3'3L"; '" 4%3/&4%" jw /()A#/B##(/ wk :4 UV35a

jw /()A#/B##(/

m$//CG,,(/(&?.E-'2E$//m

m$//C-?'2E$//m

7'A(#&cm$//&#I&'(#m ,%(.%(cm$//C$,-.'A#9C?AAE$//m wk

lA'2J &#Ac[/()A#/B##([ B&#7c[jj ?//#(^%&A kk[ CO

jw #29/()A#/B##(/ wk

jd EEE dk

jw /()A#/B##(/

mH/CHM%#&)E-'2EH/m

mH/CG,,(/(&?.E-'2EH/m,%(.%(cmH/C$,-.'A#9C?AAEH/m wk

l/$&'.( /&$c[jj ?//#(^%&A kk[OlC/$&'.(O

jw #29/()A#/B##(/ wk

1c21212 D-5&"#$&"#( 86* *(45& D**&)$%9224%31 %"D<30. 42 1"#"L :4 D3.3D3L"; '(2 ";1Y3P(2 !BB C ["P"B1;3#% &%3'3L".:( K5'3EC!BBbK5'3EC[B

`Y%%#abb2CDE(.C+1(Db:(1b1&;;4.%b1((\<((\b"224%31b&5'3ECR2+Y%D'c ] #";" "&D4.%"; 4' ;4.:3D34.%(

:4 %& 23%3( V4<+ O4 Y41Y(] 9224%31 %"D<30. #&4:4 1(D#;3D3; '"2 3DN54.42 `Y%%#abb2CDE(.C+1(Db:(1b

1&;;4.%b1((\<((\b"224%31bR#45h(#%3D3L4+Y%D'c #";" ;4:&13; 2& %"D"d( ".%42 :4 24;P3;'"2 " '(2 &2&"^

;3(2+

1c2C2 D-0$%,%$("&* 4,*,#,* &" &0 (*3#/&#$ 9'5&."2 %41.('(5$"2 ;4134.%42] 1(D( 9.5&'";[B] Y". 5".":( D&1Y" #(#&'";3:": 4.%;4 '" 1(D&.3:":

:4 #;(5;"D":(;42 #";" :42";;(''"; "#'31"13(.42 ')3#/&#$ /&4 24 1(D&.31". 1(. 4' 24;P3:(; D4:3".%4

&." 9QA+

B3 42%N2 :42";;(''".:( &." "#'31"13@. :4 42%4 %3#(] 42 #;4E4;3<'4 /&4 &%3'3142 '"2 Y4;;"D34.%"2 ;41(^

D4.:":"2 #(; '" %41.('(5$" /&4 &%3'3142] 1(D( #(; 4R4D#'( o(V4; C j;&.%[B+ O4 Y41Y(] :4<4;$"2 :42"^

;;(''"; %& ')3#/&#$ %(%"'D4.%4 :42"1(#'":( ;42#41%( :4' !+.I&#$ BCDE(.C ̀ 3.1'&2( 24#";".:( '(2 ;4#(^

23%(;3(2 :4 1@:35(c+ !(.2&'%" '" :(1&D4.%"13@. (E313"' :4 9224%31 `Y%%#2abb53%Y&<+1(Db\;32V"''2D3%Yb"224%31c #";" 1(.(14; %(:"2 2&2 E&.13(."'3:":42+

K%3'3L" 9224%31 #";" 1(D#3'";] 1(D<3."; C D3.3D3L"; '(2  +,,&/, *&!] " D4.(2 /&4

24#"2 &%3'3L"; <34. Y4;;"D34.%"2 :4' ')3#/&#$ 1(D( j;&.%[B+IJ>KD LMN+OG+D

Capítulo 10. Assets web Buenas prácticas oficiales de Symfony

54

Page 55: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 55/57

+,-.)/0( 112

O&*)*j4.4;"'D4.%4 '(2 #;(5;"D":(;42 1;4". :(2 %3#(2 :4 %42%2+ ?(2 %42%2 &.3%";3(2 1(D#;&4<". '" 4.%;":"b

2"'3:" :4 :4%4;D3.:(2 D0%(:(2 ( E&.13(.42+ ?(2 %42%2 E&.13(."'42 &%3'3L". &. ."P45":(; &7"%+$3 #";"

."P45"; #(; '"2 #N53."2 :4 %& 23%3( ( "#'31"13@.] #3.1Y"; 4. 2&2 4.'"142 C ;4''4."; 2&2 E(;D&'";3(2 #";"

1(D#;(<"; 23 '(2 ;42&'%":(2 (<%4.3:(2 2(. '(2 42#4;":(2+

11212 O&*)* /"$),5$(*?(2 %42%2 &.3%";3(2 1(D#;&4<". /&4 '" '@531" :4 .45(13( :4 %& "#'31"31@. E&.13(." <34.+ -2%" '@531"

:4 .45(13( 42 %(%"'D4.%4 3.:4#4.:34.%4 :4' E;"D4V(;\ C #(; 42( BCDE(.C .( 3.1'&C4 .3.5&." Y4^

;;"D34.%" #";" 42%(2 %42%2+ ?" D"C(;$" :4 #;(5;"D":(;42 &%3'3L". QY#K.3% `Y%%#2abb#Y#&.3%+:4bc C

QY#B#41 `Y%%#abbVVV+#Y#2#41+.4%bc +

112C2 O&*)* 7/"%$(",0&*!(D( 1;4"; '(2 %42%2 E&.13(."'42 :4 '" "#'31"13@. ''4P" &. %34D#(] D&1Y(2 #;(5;"D":(;42 '(2 35.(;".

1(D#'4%"D4.%4 C .( Y"14. .3.5_. %42%+ ?" ;41(D4.:"13@. 42 /&4 "' D4.(2 :42";;(''42 &.(2 %42%2 E&.^

13(."'42 24.13''(2] C" /&4 %4 1(2%";N D&C #(1( %34D#( C P4;N2 /&4 2(. D&C _%3'42 #";" :421&<;3; '(

".%42 #(23<'4 4;;(;42 5;"P42 4. %& "#'31"13@.+

-2%4 %42% E&.13(."' 42 %". 24.13''( 1(D( '( 235&34.%4a

CKK !9?(?P&,1'9#& .&,1'9#a&A/ KC

.%GA'$ 7%2$(',2 (#/(P?D#b/"%$$#//7%A\*%&A]

j

*$A'#2( c /#A7@@$&#?(#3A'#2(\]i

*$A'#2(0O&#M%#/(\mxSgmn *%&A]i

*(B'/0O?//#&(g&%#\*$A'#2(0OD#(L#/.,2/#\]0O'/"%$$#//7%A\]]ik

O4E3.4 "' D4.(2 &. %42% E&.13(."' /&4 1(D#;&4<4 /&4 %(:"2 '"2 #N53."2 :4 %& 23%3(

( "#'31"13@. 24 1";5". <34.+

IJ>KD LMN+OG+D

55

Page 56: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 56/57

.%GA'$ 7%2$(',2 .&,1'9#a&A/\]

j

&#(%&2 ?&&?)\

?&&?)\mCm]n

?&&?)\mC.,/(/m]n?&&?)\mC.,/(C7'Z(%&#0.,/(04m]n

?&&?)\mCGA,DC$?(#D,&)C7'Z(%&#0$?(#D,&)m]n

?&&?)\mC?&$B'1#/m]n

CC EEE

]i

k

-' 1@:35( :4 42%4 4R4D#'( 1(D#;&4<" /&4 %(:"2 '"2 KW?2 3.:31":"2 24 1";5". <34.+ Q";" 4''( 24 &%3'3L"

4' D0%(:( '/"%$$#//7%A\]] /&4 1(D#;&4<" 23 4' 1@:35( :4 42%":( iUUQ 24 4.1&4.%;" 4.%;4 5<< C 5tt+

9&./&4 #&4:4 #";414;%4 /&4 42%4 %42% .( 42 :4D"23":( _%3'] 4. ;4"'3:": D4;414 '" #4." "d":3;'( " %&

 ,"(/& :4 %42%2 #(; 4' #(1( 42E&4;L( /&4 %4 1(2%";N 1;4";'(+

112C212 K( A&"&5&* 0,* JM3 #& 0(* )&*)*r&3LN2 %4 42%02 #;45&.%".:( #(; /&0 4. 4' ".%4;3(; %42% E&.13(."' .( 24 &2" 4' 24;P313( 54.4;":(; :4

KW? " #";%3; :4' .(D<;4 :4 '"2 ;&%"2+

AD"53." /&4 :32#(.42 :4' 235&34.%4 %42% E&.13(."' /&4 &%3'3L" 4' 24;P313( &,%(#& #";" 54.4;"; '" KW? "#";%3; :4' .(D<;4 :4 '" ;&%"a

.%GA'$ 7%2$(',2 (#/(`A,D_&$B'1#/\]

j

*$A'#2( c /#A7@@$&#?(#3A'#2(\]i

*%&A c *$A'#2(0OD#(3,2(?'2#&\]0OD#(\m&,%(#&m]0OD#2#&?(#\mGA,D^?&$B'1#/m]i

*$A'#2(0O&#M%#/(\mxSgmn *%&A]i

CC EEE

k

9&./&4 4' 1@:35( ".%4;3(; E&.13(." 1(;;41%"D4.%4] %34.4 &." :42P4.%"R" D&C 5;".:4+ B3 &. #;(5;"^

D":(; 1"D<3" 23. /&4;4; '" KW? :4 '" ;&%" GA,D^?&$B'1#/] 42%4 %42% .( 24 ;(D#4;N C #(; %".%( .( %4

:";N2 1&4.%" :4' 4;;(;+ B3. 4D<";5(] '" KW? ".%4;3(; :4R";N :4 E&.13(."; #";" '(2 P323%".%42 :4' 23%3(]

#(; '( /&4 %(:(2 '(2 4.'"142 ".%4;3(;42 C %(:(2 '(2 D";1":(;42 :4R";N. :4 E&.13(."; 23. /&4 %4 :42

1&4.%"+

112C2C2 D5%`$V(* #& #,)(*B3 4. %& "#'31"13@. /&34;42 54.4;"; <&4.(2 ";1Y3P(2 1(. :"%(2 :4 #;&4<"] #&4:42 &%3'3L"; '"2 '3<;4;$"2

X"\4; `Y%%#2abb53%Y&<+1(DbEL".3.(%%(bX"\4;c C 9'314 `Y%%#2abb53%Y&<+1(Db.4'D3(b"'314c +

-21;3<4 '"2 KW? :4 '(2 %42%2 " D".(] 23. &%3'3L"; 4' 24;P313( &,%(#& :4 BCDE(.C #";"

54.4;";'"2+IJ>KD LMN+OG+D

Capítulo 11. Tests Buenas prácticas oficiales de Symfony

56

Page 57: buenas_practicas_symfony.pdf

8/17/2019 buenas_practicas_symfony.pdf

http://slidepdf.com/reader/full/buenaspracticassymfonypdf 57/57

112E2 O&*)* -,5, &0 %F#$A( d,V,;%5$-)-' &7"%+$3)  :4 ."P45":(; /&4 &%3'3L" BCDE(.C #";" '(2 %42%2 E&.13(."'42 .( #4;D3%4 #;(<"; 4' 1(D^

#(;%"D34.%( ["P"B1;3#% :4 %&2 #N53."2+ 92$ /&4 23 4. %& "#'31"13@. 42 3D#(;%".%4 #;(<"; 424 1@:35(]

:4<4;$"2 &%3'3L"; '" '3<;4;$" k3.\ `Y%%#abbD3.\+<4Y"%+(;5c R&.%( 1(. QiQK.3%+

S<P3"D4.%4 23 %& "#'31"13@. &%3'3L" ["P"B1;3#% 4. %(:"2 2&2 E&.13(."'3:":42] 24;$" D4R(; &%3'3L"; &."

Y4;;"D34.%" :4 %42%2 42#413"'D4.%4 #4.2":" #";" ["P"B1;3#%+

Buenas prácticas oficiales de Symfony Capítulo 11. Tests