slideyii

download slideyii

of 48

Transcript of slideyii

  • 8/14/2019 slideyii

    1/48

    Iniciando com YII Framework

    Volmar Machado da Silva Neto

  • 8/14/2019 slideyii

    2/48

    Linguagem Dinamica

    Linguagem com foco em desenvolvimento Web

    - Velocidade e robustez

    - Estruturado e orientado a objetos

    - ortabilidade

    - !i"agem dinamica

    - Sinta#e similar ao $%$&& e erl

    - '"en-source

    PHP: Linguagem, aplicabilidades, porque php?

  • 8/14/2019 slideyii

    3/48

    ' ( tem muitas bibliotecas)

    E#* S'+, ML, D'M, Stream, D' etc)))

    !em uma comunidade gigantesca)

    E#) Listas, gru"os, foruns, em"resas)

    +tualiza./es constantes)

    Documenta.0o)

    Estatisticas

    Linguagem Sites Porcentagem

    PHP 3.9984.25 59%

    ASP.NET 2.294.166 34%Perl 259.931 4%

    Python 159.475 2%

    PHP: Linguagem, aplicabilidades, porque php?

  • 8/14/2019 slideyii

    4/48

    1 usado "or muitas em"resas de sites institucionais, a a"lica./esde intranet e e#tranet) !emos como e#em"lo, faceboo2, milharesde sites e blogs com 3ord"ress, temos ainda outros 4ue usam

    joomla e dru"al, e tamb5m 6ii frame3or2)

    PHP: Linguagem, aplicabilidades, porque php?

    file:///C:/Users/Internet/Desktop/drupal.jpeg

    file:///C:/Users/Internet/Desktop/joomla.jpeg

    file:///C:/Users/Internet/Desktop/images.jpg

    file:///C:/Users/Internet/Desktop/magento.jpg

  • 8/14/2019 slideyii

    5/48

    YII Framework

    ' nome 6ii re"resenta as "alavras f7cil 8eas9:, e;ciente 8ef;cient: ee#tensdigos)

    +celera.0o signi;cativa do "rocesso de desenvolvimento)

    ' 6ii 5 um frame3or2 de "rograma.0o Web gen5rico)$aching "ara o desenvolvimento de a"lica./es com alto tr7fego de dados)

    $omo a maioria dos frame3or2s (, ' 6ii 5 um frame3or2 MV$)

    E;ciente, rico em recursos e bem documentado)

    ' 6ii 5 n0o 5 nem um sub"roduto de algum "rojeto, nem um conglomeradode trabalho de terceiros)

  • 8/14/2019 slideyii

    6/48

    htt"*%%nomedoservidor%caminho%do%9ii%re4uirements%inde#)"h"

  • 8/14/2019 slideyii

    7/48

    YII Framework: Estrutura

  • 8/14/2019 slideyii

    8/48

    YII Framework: Logica

  • 8/14/2019 slideyii

    9/48

    YII Framework: !"

    Modelo-Vis0o-$ontrole

    ' 6ii im"lementa o "adr0o de desenvolvimento modelo-vis0o-controle 8MV$:4ue 5 am"lamente adotado na "rograma.0o Web) ' MV$ visa se"arar a l>gicade neg>cio da interface com o usu7rio, assim os "rogramadores "odem mudarfacilmente cada "arte, sem afetar as outras) No "adr0o MV$, o modelo

    re"resenta as informa./es 8os dados: e as regras de neg>cio, a vis0o cont5melemento de interface com o usu7rio, como te#tos, formul7rios, e o controlegerencia a comunica.0o entre o modelo e a vis0o) +l5m MV$, o 6ii tamb5mintroduz um controle de frente, chamado a"lica.0o 8a""lication:, 4ue re"resentao conte#to de e#ecu.0o dos "rocessos re4uisitados) + a"lica.0o recebe asolicita.0o do usu7rio e a envia "ara um controlador ade4uado "ara ser"rocessada)

  • 8/14/2019 slideyii

    10/48

    YII Framework: Logica

  • 8/14/2019 slideyii

    11/48

    YII Framework: YII"

    ? cd Web=oot? "h" 6ii=oot%frame3or2%9iic)"h" 3eba"" nomea""

    @erramenta de linha de comando "ara automa.0o

    comandos*- controller- crud- form- hel"

    - model- module

  • 8/14/2019 slideyii

    12/48

    YII Framework: YII"

    $reate a Web a""lication under A%Webroot%nomea""B C6esNo

    6es

    m2dir %Web=oot%nomea""

    m2dir %Web=oot%nomea""%assets

    m2dir %Web=oot%nomea""%css

    generate css%bg)gif

    generate css%form)css

    generate css%main)css)))

  • 8/14/2019 slideyii

    13/48

    e#em"lo%

    inde#)"h" Scri"t Fnico de entrada da a"lica.0o inde#-test)"h" Scri"t de entrada "ara testes funcionais assets% +r4uivos de recurso "ublicados css% @olhas de estilo images% Diretorio de imagens themes% !emas da a"lica.0o

    "rotected% Diretorio "rotegido dos ar4uivos de a"lica.0o com"onents% $om"onentes reusaveis da a"lica.0o $ontroller)"h" $lasse base "ara as controllers GserHdentit9)"h" $lasse usada "ara autentica.0o config% Diretorio de configura.0o da a"lica.0o console)"h" $onfigura.0o do console da a"lica.0o main)"h" $onfigura.0o da a"lica.0o 3eb test)"h" $onfigura.0o "ara os testes funcionais controllers% Diretorio das controllers da a"lica.0o Site$ontroller)"h" $ontroller "adr0o

    YII Framework: Estrutra de diretorio da aplica#$o

  • 8/14/2019 slideyii

    14/48

    e#tensions% $ontem e#tens/es de terceiros messages% Mensagens traduzidas models% Diretorio de Modelos Login@orm)"h" Modelo de formulario "ara action AloginA $ontact@orm)"h" Modelo de formulario "ara a action AcontactA runtime% +r4uivos tem"orarios tests% Scri"ts de teste vie3s% +r4uivos de a"resenta.0o e la9out la9outs% La9out de a"resenta.0o

    main)"h" La9out base da a"lica.0o columnI)"h" La9out "ara "aginas com uma coluna columnJ)"h" La9out "ara "aginas com duas colunas site% +"resenta.0o "ara a controller Site "ages% aginas AestaticasA about)"h" +"resenta.0o "ara a action AaboutA

    contact)"h" +"resenta.0o "ara a action AcontactA error)"h" +"resenta.0o "ara a action AerrorA inde#)"h" +"resenta.0o "ara a action Ainde#A login)"h" +"resenta.0o "ara a action AloginA

    YII Framework: Estrutra de diretorio da aplica#$o

  • 8/14/2019 slideyii

    15/48

  • 8/14/2019 slideyii

    16/48

    'modules')arra&(// uncomment the following to ena$le the 6ii tool'gii' )arra&(

    'class' ) 's&stem%gii%6ii7odule','password' ) '89;=',

    'ipilters' ) false,,

    ,

    // application components'components')arra&(

    'user')arra&(// ena$le coo*ie-$ased authentication'allowAuto.ogin')true,

    ,// uncomment the following to ena$le >1.s in path-format/4'url7anager')arra&(

    'urlormat')'path','rules')arra&(

    '

  • 8/14/2019 slideyii

    17/48

    // uncomment the following to use a 7&2C. data$ase'd$')arra&(

    'connection2tring' ) 'm&sBl:host8D%D%8%8D!d$nameo+sul','emulatePrepare' ) true,

    'username' ) 'd$user','password' ) '89;','charset' ) 'utfE',

    ,

    'errorFandler')arra&( 'errorAction')'site/error', ,

    'log')arra&(

    'class')'.og1outer','routes')arra&(

    arra&('class')'ile.og1oute','leels')'error, warning',

    ,arra&(

    'class')'#e$.og1oute',,

    ,,,

    'params')arra&(// this is used in contact page'adminmail')'we$masterGpampa%com%$r

    ',,

    !

    YII Framework: "on%igura#$o

    mailto:'[email protected]:'[email protected]
  • 8/14/2019 slideyii

    18/48

    YII Framework: &cript de entrada

  • 8/14/2019 slideyii

    19/48

    YII Framework: "iclo de 'ida da aplica#$o

    I) r5-inicia a a"lica.0o com o m5todo $+""lication**"reinit8:KJ) $onfigura as o auto-carregamento de classes 8autoloader: e otratamento de errosK) =egistra os "rinci"ais com"onentes da a"lica.0oK) $arrega as configura./es da a"lica.0oK) Hnicia a a"lica.0o com o $+""lication**init8:*

    I) =egistra os com"ortamentos 8behaviors: da a"lica.0oKJ) $arrega os com"onentes est7ticos da a"lica.0oKO) Dis"ara o evento onPegin=e4uest 8no in

  • 8/14/2019 slideyii

    20/48

    YII Framework: (II

  • 8/14/2019 slideyii

    21/48

    YII Framework: (II

  • 8/14/2019 slideyii

    22/48

    YII Framework: (II

  • 8/14/2019 slideyii

    23/48

    YII Framework: (II

  • 8/14/2019 slideyii

    24/48

    YII Framework: (II

  • 8/14/2019 slideyii

    25/48

    YII Framework: "ontroller

    class Lemploontroller eLtends ontrollerM

    pu$lic function ++construct(Hid M

    Hthis-)la&out 'colunm8'!parent::++construct(Hid!

    N

    pu$lic function actionAction8(MHthis-)render('action8'!N

    pu$lic function actionAction9(MHthis-)render('action9'!N

    pu$lic function actionAction(MHthis-)render('action'!

    N

    pu$lic function actionndeL(MHthis-)render('indeL'!N

    N

  • 8/14/2019 slideyii

    26/48

    // >ncomment the following methods and oerride them if needed/4

    pu$lic function filters(M// return the filter configuration for this controller, e%g%:return arra&('inlineilterame',arra&('class')'path%to%ilterlass','propert&ame')'propert&Kalue',,

    !N

    pu$lic function actions(M// return eLternal action classes, e%g%:return arra&('action8')'path%to%Actionlass','action9')arra&('class')'path%to%AnotherActionlass','propert&ame')'propert&Kalue',,!N4/

    YII Framework: "ontroller

    YII F k d l

  • 8/14/2019 slideyii

    27/48

    YII Framework: odel

  • 8/14/2019 slideyii

    28/48

    YII Framework: odel

    /444 @returnarra& alidation rules for model attri$utes%4/pu$lic function rules(M// O": &ou should onl& define rules for those attri$utes that// will receie user inputs%return arra&(arra&('nome, descricao', 'reBuired',arra&('nome, descricao', 'length', 'maL')9,// "he following rule is used $& search(%// Please remoe those attri$utes that should not $e searched%

    arra&('id, nome, descricao', 'safe', 'on')'search',!N

    /444 @returnarra& relational rules%4/pu$lic function relations(M

    // O": &ou ma& need to ad5ust the relation name and therelated// class name for the relations automaticall& generated $elow%return arra&(!N

    YII F k d l

  • 8/14/2019 slideyii

    29/48

    YII Framework: odel/444 @returnarra& customiQed attri$ute la$els (name)la$el4/pu$lic function attri$ute.a$els(M

    return arra&('id' ) '0','nome' ) 'ome','descricao' ) '0escricao',!N

    /444 1etriees a list of models $ased on the current search/filter conditions%

    4 @returnActie0ataProider the data proider that can return the models $asedon the search/filter conditions%4/pu$lic function search(M// #arning: Please modif& the following code to remoe attri$utes that// should not $e searched%

    Hcriterianew 0$riteria!

    Hcriteria-)compare('id',Hthis-)id!Hcriteria-)compare('nome',Hthis-)nome,true!Hcriteria-)compare('descricao',Hthis-)descricao,true!

    return new Actie0ataProider(get+class(Hthis, arra&('criteria')Hcriteria,!NN

    main "h"YII Framework: La)out * ain

  • 8/14/2019 slideyii

    30/48

  • 8/14/2019 slideyii

    31/48

  • 8/14/2019 slideyii

    32/48

  • 8/14/2019 slideyii

    33/48

    YII Framework: Pagina gerada

    YII Framework: "-. * Inde/

  • 8/14/2019 slideyii

    34/48

    YII Framework: "-. * Inde/

    YII Framework: "-. * "reate

  • 8/14/2019 slideyii

    35/48

    YII Framework: "-. * "reate

    YII Framework: "-. * 'iew

  • 8/14/2019 slideyii

    36/48

    YII Framework: "-. * 'iew

    YII Framework: "-. * anage

  • 8/14/2019 slideyii

    37/48

    YII Framework: "-. * anage

    YII Framework: "-. * "ontroller

  • 8/14/2019 slideyii

    38/48

    a e o " - * "o t o e

    class ntidadeontroller eLtends ontrollerM/444 @varstring the default la&out for the iews% 0efaults to '//la&outs/column9',4 meaning using two-column la&out% 2ee 'protected/iews/la&outs/column9%php'%

    4/pu$lic Hla&out'//la&outs/column9'!

    /444 @returnarra& action filters4/pu$lic function filters(Mreturn arra&(

    'accessontrol', // perform access control for 1>0 operations!N

    /444 2pecifies the access control rules%4 "his method is used $& the 'accessontrol' filter%4 @returnarra& access control rules4/

    pu$lic function access1ules(Mreturn arra&(arra&('allow', // allow all users to perform 'indeL' and 'iew' actions'actions')arra&('indeL','iew','users')arra&('4',,

    YII Framework: "-. * "ontroller

  • 8/14/2019 slideyii

    39/48

    arra&('allow', // allow authenticated user to perform 'create' and 'update'actions'actions')arra&('create','update','users')arra&('G',

    ,arra&('allow', // allow admin user to perform 'admin' and 'delete' actions'actions')arra&('admin','delete','users')arra&('admin',,arra&('den&', // den& all users'users')arra&('4',,!

    N

    /444 0ispla&s a particular model%4 @paraminteger Hid the 0 of the model to $e displa&ed4/pu$lic function actionKiew(HidMHthis-)render('iew',arra&(

    'model')Hthis-)load7odel(Hid,!N

    YII Framework: "-. * "ontroller

  • 8/14/2019 slideyii

    40/48

    /444 reates a new model%4 f creation is successful, the $rowser will $e redirected to the 'iew' page%4/pu$lic function actionreate(MHmodelnew ntidade!

    // >ncomment the following line if AVA3 alidation is needed// Hthis-)performA5aLKalidation(Hmodel!

    if(isset(H+PO2"S'ntidade'TMHmodel-)attri$utesH+PO2"S'ntidade'T!if(Hmodel-)sae(

    Hthis-)redirect(arra&('iew','id')Hmodel-)id!N

    Hthis-)render('create',arra&('model')Hmodel,!N

    /44

    4 >pdates a particular model%4 f update is successful, the $rowser will $e redirected to the 'iew' page%4 @paraminteger Hid the 0 of the model to $e updated4/pu$lic function action>pdate(HidMHmodelHthis-)load7odel(Hid!

    // >ncomment the following line if AVA3 alidation is needed// Hthis-)performA5aLKalidation(Hmodel!

    YII Framework: "-. * "ontroller

  • 8/14/2019 slideyii

    41/48

    if(isset(H+PO2"S'ntidade'TMHmodel-)attri$utesH+PO2"S'ntidade'T!if(Hmodel-)sae(Hthis-)redirect(arra&('iew','id')Hmodel-)id!N

    Hthis-)render('update',arra&('model')Hmodel,!N

    /444 0eletes a particular model%4 f deletion is successful, the $rowser will $e redirected to the 'indeL' page%

    4 @paraminteger Hid the 0 of the model to $e deleted4/pu$lic function action0elete(HidMif(Yii::app(-)reBuest-)isPost1eBuestM// we onl& allow deletion ia PO2" reBuestHthis-)load7odel(Hid-)delete(!

    // if AVA3 reBuest (triggered $& deletion ia admin grid iew, we should notredirect the $rowserif(Risset(H+6"S'a5aL'THthis-)redirect(isset(H+PO2"S'return>rl'T ? H+PO2"S'return>rl'T : arra&('admin'!Nelsethrow new FttpLception(;DD,'nalid reBuest% Please do not repeat this reBuestagain%'!N

    YII Framework: "-. * "ontroller

  • 8/14/2019 slideyii

    42/48

    /444 .ists all models%4/pu$lic function actionndeL(

    MHdataProidernew Actie0ataProider('ntidade'!Hthis-)render('indeL',arra&('dataProider')HdataProider,!N

    /444 7anages all models%4/pu$lic function actionAdmin(MHmodelnew ntidade('search'!Hmodel-)unsetAttri$utes(! // clear an& default aluesif(isset(H+6"S'ntidade'THmodel-)attri$utesH+6"S'ntidade'T!

    Hthis-)render('admin',arra&('model')Hmodel,

    !N

    YII Framework: "-. * "ontroller

  • 8/14/2019 slideyii

    43/48

    /444 1eturns the data model $ased on the primar& *e& gien in the 6"aria$le%4 f the data model is not found, an F""P eLception will $e raised%4 @paraminteger the 0 of the model to $e loaded

    4/pu$lic function load7odel(HidMHmodelntidade::model(-)findJ&P*((intHid!if(Hmodelnullthrow new FttpLception(;D;,'"he reBuested page does not eList%'!return Hmodel!N

    /444 Performs the AVA3 alidation%4 @param7odel the model to $e alidated4/protected function performA5aLKalidation(HmodelMif(isset(H+PO2"S'a5aL'T UU H+PO2"S'a5aL'T'entidade-form'Mecho Actieorm::alidate(Hmodel!

    Yii::app(-)end(!NN

    YII Framework: "-. * 0idgets

  • 8/14/2019 slideyii

    44/48

  • 8/14/2019 slideyii

    45/48

  • 8/14/2019 slideyii

    46/48

  • 8/14/2019 slideyii

    47/48

    $lasse $$lientScri"t

    H$ase>rl Yii::app(-)$ase>rl!Hcs Yii::app(-)getlient2cript(!Hcs-)registerssile(H$ase>rl % '/css/calendar5s%css'!Hcs-)registerssile(H$ase>rl % '/css/drh/principal%css'!Hcs-)register2criptile(H$ase>rl % '/5s/calendario/5Buer&%5s'!Hcs-)register2criptile(H$ase>rl % '/5s/calendario/mootools%5s'!Hcs-)register2criptile(H$ase>rl % '/5s/calendario/calendar%5s'!

  • 8/14/2019 slideyii

    48/48

    333)9iiframe3or2)comnetocame9ahoo)com)br

    9ii-frame3or2-brasilgooglegrou"s)comhtt"*%%333)9iiframe3or2)com%doc%guide%

    http://www.yiiframework.com/mailto:[email protected]:[email protected]:[email protected]:[email protected]://www.yiiframework.com/