Iniciando com YII Framework   Volmar Machado da Silva Neto
PHP: Linguagem, aplicabilidades, porque php? Linguagem Dinamica Linguagem com foco em desenvolvimento Web    - Velocidade ...
PHP: Linguagem, aplicabilidades, porque php?  O PHP tem muitas bibliotecas.   Ex: SOAP, XML, DOM, Stream, PDO etc...  Tem ...
PHP: Linguagem, aplicabilidades, porque php?    É usado por muitas empresas de sites institucionais, a aplicações    de in...
YII Framework O nome Yii representa as palavras fácil (easy), eficiente (efficient) e extensível (extensible) Yii é um frame...
http://nomedoservidor/caminho/do/yii/requirements/index.php
YII Framework: Estrutura
YII Framework: Logica
YII Framework: MVCModelo-Visão-ControleO Yii implementa o padrão de desenvolvimento modelo-visão-controle (MVC)que é ampla...
YII Framework: Logica
YII Framework: YIIC          Ferramenta de linha de comando para automação          comandos:          - controller       ...
YII Framework: YIIC       Create a Web application under /Webroot/nomeapp? [Yes|No]       Yes       mkdir /WebRoot/nomeapp...
YII Framework: Estrutra de diretorio da aplicação     exemplo/       index.php              Script único de entrada da apl...
YII Framework: Estrutra de diretorio da aplicação     extensions/         Contem extensões de terceiros    messages/      ...
YII Framework: Configuração<?php// uncomment the following to define a path alias// Yii::setPathOfAlias(local,path/to/loca...
YII Framework: Configuração  modules=>array(      // uncomment the following to enable the Gii tool      gii =>array(     ...
YII Framework: Configuração          // uncomment the following to use a MySQL database          db=>array(              c...
YII Framework: Script de entrada   <?php   // change the following paths if necessary   $yii=dirname(__FILE__)./../../yii-...
YII Framework: Ciclo de vida da aplicação    1. Pré-inicia a aplicação com o método CApplication::preinit();    2. Configu...
YII Framework: GII
YII Framework: GII
YII Framework: GII
YII Framework: GII
YII Framework: GII
YII Framework: Controller    class ExemploController extends Controller    {        public function __construct($id) {    ...
YII Framework: Controller     // Uncomment the following methods and override them if needed     /*     public function fi...
YII Framework: Model   <?php   /**     * This is the model class for table "entidade".     *     * The followings are the ...
YII Framework: Model      /**        * @return array validation rules for model attributes.        */      public function...
YII Framework: Model /**   * @return array customized attribute labels (name=>label)   */ public function attributeLabels(...
YII Framework: Layout / Main                                          main.php                                            ...
YII Framework: Layout / Main   <body>       <div class="container" id="page">           <div id="header">               <d...
YII Framework: View / action1      <?php      $this->breadcrumbs=array(      Exemplo=>array(/exemplo),      Action1,      ...
YII Framework: Pagina gerada
YII Framework: CRUD / Index
YII Framework: CRUD / Create
YII Framework: CRUD / view
YII Framework: CRUD / Manage
YII Framework: CRUD / Controller class EntidadeController extends Controller { /**   * @var string the default layout for ...
YII Framework: CRUD / Controller  array(allow, // allow authenticated user to perform create and update  actions  actions=...
YII Framework: CRUD / Controller /**   * Creates a new model.   * If creation is successful, the browser will be redirecte...
YII Framework: CRUD / Controller if(isset($_POST[Entidade])) { $model->attributes=$_POST[Entidade]; if($model->save()) $th...
YII Framework: CRUD / Controller   /**     * Lists all models.     */   public function actionIndex()   {   $dataProvider=...
YII Framework: CRUD / Controller  /**    * Returns the data model based on the primary key given in the GET  variable.    ...
YII Framework: CRUD / Widgets <?php $this->breadcrumbs=array( Entidades=>array(index), Manage, ); $this->menu=array( array...
YII Framework: CRUD / Widgets <p> You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, ...
YII Framework: CRUD / Partial View<div class="form"><?php $form=$this->beginWidget(CActiveForm, array(id=>entidade-form,en...
YII Framework: Scripts  Classe CClientScript  $baseUrl = Yii::app()->baseUrl;  $cs = Yii::app()->getClientScript();  $cs->...
www.yiiframework.com        netocame@yahoo.com.bryii-framework-brasil@googlegroups.comhttp://www.yiiframework.com/doc/guide/
Upcoming SlideShare
Loading in …5
×

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Comunicação)

10,653 views
10,448 views

Published on

O objetivo da palestra é explicar como compreender os principios básicos de construção de aplicativos em php, e mostrar como é rápido o desenvolvimento com este framework.

Published in: Technology, Education

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Comunicação)

  1. 1. Iniciando com YII Framework Volmar Machado da Silva Neto
  2. 2. PHP: Linguagem, aplicabilidades, porque php? Linguagem Dinamica Linguagem com foco em desenvolvimento Web - Velocidade e robustez - Estruturado e orientado a objetos - Portabilidade - Tipagem dinamica - Sintaxe similar ao C/C++ e Perl - Open-source
  3. 3. PHP: Linguagem, aplicabilidades, porque php? O PHP tem muitas bibliotecas. Ex: SOAP, XML, DOM, Stream, PDO etc... Tem uma comunidade gigantesca. Ex. Listas, grupos, foruns, empresas. Estatisticas Linguagem Sites Porcentagem Atualizações constantes. PHP 3.9984.25 59% Documentação. ASP.NET 2.294.166 34% Perl 259.931 4% Python 159.475 2% Java 18.065 0%
  4. 4. PHP: Linguagem, aplicabilidades, porque php? É usado por muitas empresas de sites institucionais, a aplicações de intranet e extranet. Temos como exemplo, facebook, milhares de sites e blogs com wordpress, temos ainda outros que usam joomla e drupal, e também Yii framework. file:///C:/Users/Internet/Desktop/magento.jpg file:///C:/Users/Internet/Desktop/images.jpg file:///C:/Users/Internet/Desktop/drupal.jpeg file:///C:/Users/Internet/Desktop/joomla.jpeg
  5. 5. YII Framework O nome Yii representa as palavras fácil (easy), eficiente (efficient) e extensível (extensible) Yii é um framework de alta performance em PHP que utiliza componentes para o desenvolvimento de grandes aplicações Web. Reutilização de códigos. Aceleração significativa do processo de desenvolvimento. O Yii é um framework de programação Web genérico. Caching para o desenvolvimento de aplicações com alto tráfego de dados. Como a maioria dos frameworks PHP, O Yii é um framework MVC. Eficiente, rico em recursos e bem documentado. O Yii é não é nem um subproduto de algum projeto, nem um conglomerado de trabalho de terceiros.
  6. 6. http://nomedoservidor/caminho/do/yii/requirements/index.php
  7. 7. YII Framework: Estrutura
  8. 8. YII Framework: Logica
  9. 9. YII Framework: MVCModelo-Visão-ControleO Yii implementa o padrão de desenvolvimento modelo-visão-controle (MVC)que é amplamente adotado na programação Web. O MVC visa separar a lógicade negócio da interface com o usuário, assim os programadores podem mudarfacilmente cada parte, sem afetar as outras. No padrão MVC, o modelorepresenta as informações (os dados) e as regras de negócio, a visão contémelemento de interface com o usuário, como textos, formulários, e o controlegerencia a comunicação entre o modelo e a visão. Além MVC, o Yii tambémintroduz um controle de frente, chamado aplicação (application), que representao contexto de execução dos processos requisitados. A aplicação recebe asolicitação do usuário e a envia para um controlador adequado para serprocessada.
  10. 10. YII Framework: Logica
  11. 11. YII Framework: YIIC Ferramenta de linha de comando para automação comandos: - controller - crud - form - help - model - module % cd WebRoot % php YiiRoot/framework/yiic.php webapp nomeapp
  12. 12. YII Framework: YIIC Create a Web application under /Webroot/nomeapp? [Yes|No] Yes mkdir /WebRoot/nomeapp mkdir /WebRoot/nomeapp/assets mkdir /WebRoot/nomeapp/css generate css/bg.gif generate css/form.css generate css/main.css ...
  13. 13. YII Framework: Estrutra de diretorio da aplicação exemplo/ index.php Script único de entrada da aplicação index-test.php Script de entrada para testes funcionais assets/ Arquivos de recurso publicados css/ Folhas de estilo images/ Diretorio de imagens themes/ Temas da aplicação protected/ Diretorio protegido dos arquivos de aplicação components/ Componentes reusaveis da aplicação Controller.php Classe base para as controllers UserIdentity.php Classe usada para autenticação config/ Diretorio de configuração da aplicação console.php Configuração do console da aplicação main.php Configuração da aplicação web test.php Configuração para os testes funcionais controllers/ Diretorio das controllers da aplicação SiteController.php Controller padrão
  14. 14. YII Framework: Estrutra de diretorio da aplicação extensions/ Contem extensões de terceiros messages/ Mensagens traduzidas models/ Diretorio de Modelos LoginForm.php Modelo de formulario para action login ContactForm.php Modelo de formulario para a action contact runtime/ Arquivos temporarios tests/ Scripts de teste views/ Arquivos de apresentação e layout layouts/ Layout de apresentação main.php Layout base da aplicação column1.php Layout para paginas com uma coluna column2.php Layout para paginas com duas colunas site/ Apresentação para a controller Site pages/ Paginas estaticas about.php Apresentação para a action about contact.php Apresentação para a action contact error.php Apresentação para a action error index.php Apresentação para a action index login.php Apresentação para a action login
  15. 15. YII Framework: Configuração<?php// uncomment the following to define a path alias// Yii::setPathOfAlias(local,path/to/local-folder);// This is the main Web application configuration. Any writable// CWebApplication properties can be configured here.return array( modules=>array( telemarketing, ), basePath=>dirname(__FILE__).DIRECTORY_SEPARATOR..., name=>.: Sistema Integrado XP :., // preloading log component //preload=>array(log), // autoloading model and component classes import=>array( application.models.*, application.components.*, application.models.utils.*, application.models.jornal.*, application.models.jornal.cliente.*, application.models.jornal.telemarketing.*, application.models.sistema.*, ),
  16. 16. YII Framework: Configuração modules=>array( // uncomment the following to enable the Gii tool gii =>array( class => system.gii.GiiModule, password => 123456, ipFilters => false, ), ), // application components components=>array( user=>array( // enable cookie-based authentication allowAutoLogin=>true, ), // uncomment the following to enable URLs in path-format /* urlManager=>array( urlFormat=>path, rules=>array( <controller:w+>/<id:d+>=><controller>/view, <controller:w+>/<action:w+>/<id:d+>=><controller>/<action>, <controller:w+>/<action:w+>=><controller>/<action>, ), ), */ /* db=>array( connectionString => sqlite:.dirname(__FILE__)./../data/testdrive.db, ), */
  17. 17. YII Framework: Configuração // uncomment the following to use a MySQL database db=>array( connectionString => mysql:host=10.0.1.10;dbname=o_sul, emulatePrepare => true, username => dbuser, password => 1234, charset => utf8, ), errorHandler=>array( errorAction=>site/error, ), log=>array( class=>CLogRouter, routes=>array( array( class=>CFileLogRoute, levels=>error, warning, ), array( class=>CWebLogRoute, ), ), ), ), params=>array( // this is used in contact page adminEmail=>webmaster@pampa.com.br, ),);
  18. 18. YII Framework: Script de entrada <?php // change the following paths if necessary $yii=dirname(__FILE__)./../../yii-1.1.6.r2877/framework/yii.php; $config=dirname(__FILE__)./protected/config/main.php; // remove the following lines when in production mode defined(YII_DEBUG) or define(YII_DEBUG,true); // specify how many levels of call stack should be shown in each log message defined(YII_TRACE_LEVEL) or define(YII_TRACE_LEVEL,3); require_once($yii); Yii::createWebApplication($config)->run();
  19. 19. YII Framework: Ciclo de vida da aplicação 1. Pré-inicia a aplicação com o método CApplication::preinit(); 2. Configura as o auto-carregamento de classes (autoloader) e o tratamento de erros; 3. Registra os principais componentes da aplicação; 4. Carrega as configurações da aplicação; 5. Inicia a aplicação com o CApplication::init(): 1. Registra os comportamentos (behaviors) da aplicação; 2. Carrega os componentes estáticos da aplicação; 6. Dispara o evento onBeginRequest (no início da requisição); 7. Processa a requisição do usuário: 1. Resolve a requisição do usuário; 2. Cria um controle; 3. Executa o controle; 8. Dispara o evento onEndRequest (ao fim da requisição);
  20. 20. YII Framework: GII
  21. 21. YII Framework: GII
  22. 22. YII Framework: GII
  23. 23. YII Framework: GII
  24. 24. YII Framework: GII
  25. 25. YII Framework: Controller class ExemploController extends Controller { public function __construct($id) { $this->layout = colunm1; parent::__construct($id); } public function actionAction1() { $this->render(action1); } public function actionAction2() { $this->render(action2); } public function actionAction3() { $this->render(action3); } public function actionIndex() { $this->render(index); } }
  26. 26. YII Framework: Controller // Uncomment the following methods and override them if needed /* public function filters() { // return the filter configuration for this controller, e.g.: return array( inlineFilterName, array( class=>path.to.FilterClass, propertyName=>propertyValue, ), ); } public function actions() { // return external action classes, e.g.: return array( action1=>path.to.ActionClass, action2=>array( class=>path.to.AnotherActionClass, propertyName=>propertyValue, ), ); } */
  27. 27. YII Framework: Model <?php /** * This is the model class for table "entidade". * * The followings are the available columns in table entidade: * @property integer $id * @property string $nome * @property string $descricao */ class Entidade extends CActiveRecord { /** * Returns the static model of the specified AR class. * @return Entidade the static model class */ public static function model($className=__CLASS__) { return parent::model($className); } /** * @return string the associated database table name */ public function tableName() { return entidade; }
  28. 28. YII Framework: Model /** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array(nome, descricao, required), array(nome, descricao, length, max=>255), // The following rule is used by search(). // Please remove those attributes that should not be searched. array(id, nome, descricao, safe, on=>search), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( ); }
  29. 29. YII Framework: Model /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( id => ID, nome => Nome, descricao => Descricao, ); } /** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria=new CDbCriteria; $criteria->compare(id,$this->id); $criteria->compare(nome,$this->nome,true); $criteria->compare(descricao,$this->descricao,true); return new CActiveDataProvider(get_class($this), array( criteria=>$criteria, )); } }
  30. 30. YII Framework: Layout / Main main.php column1.php column2.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="language" content="en" /> <!-- blueprint CSS framework --> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/screen.css" media="screen, projection" /> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/print.css" media="print" /> <!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/ie.css" media="screen, projection" /><![endif]--> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/main.css" /> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" /> <script language="javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/js/jquery.js" ></script> <script language="javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/start.js" ></script> <title><?php echo CHtml::encode($this->pageTitle); ?></title> </head>
  31. 31. YII Framework: Layout / Main <body> <div class="container" id="page"> <div id="header"> <div id="logo"><?php echo CHtml::encode($this->pageTitle); ?></div> </div><!-- header --> <?php if(!Yii::app()->user->isGuest){ ?> <div id="alert_header" class="alert_header"> </div> <?php } ?> <?php $this->widget(zii.widgets.CBreadcrumbs, array( links => $this->breadcrumbs, )); ?><!-- breadcrumbs --><?php echo $content; ?> <div id="footer">Copyright &copy; Rede Pampa - <?php echo date(Y); ?>. </div><!-- footer --> </div><!-- page --> </body></html>
  32. 32. YII Framework: View / action1 <?php $this->breadcrumbs=array( Exemplo=>array(/exemplo), Action1, );?> <h1><?php echo $this->id . / . $this->action->id; ? ></h1> <p> You may change the content of this page by modifying the file <tt><?php echo __FILE__; ?></tt>. </p>
  33. 33. YII Framework: Pagina gerada
  34. 34. YII Framework: CRUD / Index
  35. 35. YII Framework: CRUD / Create
  36. 36. YII Framework: CRUD / view
  37. 37. YII Framework: CRUD / Manage
  38. 38. YII Framework: CRUD / Controller class EntidadeController extends Controller { /** * @var string the default layout for the views. Defaults to //layouts/column2, * meaning using two-column layout. See protected/views/layouts/column2.php. */ public $layout=//layouts/column2; /** * @return array action filters */ public function filters() { return array( accessControl, // perform access control for CRUD operations ); } /** * Specifies the access control rules. * This method is used by the accessControl filter. * @return array access control rules */ public function accessRules() { return array( array(allow, // allow all users to perform index and view actions actions=>array(index,view), users=>array(*), ),
  39. 39. YII Framework: CRUD / Controller array(allow, // allow authenticated user to perform create and update actions actions=>array(create,update), users=>array(@), ), array(allow, // allow admin user to perform admin and delete actions actions=>array(admin,delete), users=>array(admin), ), array(deny, // deny all users users=>array(*), ), ); } /** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionView($id) { $this->render(view,array( model=>$this->loadModel($id), )); }
  40. 40. YII Framework: CRUD / Controller /** * Creates a new model. * If creation is successful, the browser will be redirected to the view page. */ public function actionCreate() { $model=new Entidade; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST[Entidade])) { $model->attributes=$_POST[Entidade]; if($model->save()) $this->redirect(array(view,id=>$model->id)); } $this->render(create,array( model=>$model, )); } /** * Updates a particular model. * If update is successful, the browser will be redirected to the view page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model=$this->loadModel($id); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model);
  41. 41. YII Framework: CRUD / Controller if(isset($_POST[Entidade])) { $model->attributes=$_POST[Entidade]; if($model->save()) $this->redirect(array(view,id=>$model->id)); } $this->render(update,array( model=>$model, )); } /** * Deletes a particular model. * If deletion is successful, the browser will be redirected to the index page. * @param integer $id the ID of the model to be deleted */ public function actionDelete($id) { if(Yii::app()->request->isPostRequest) { // we only allow deletion via POST request $this->loadModel($id)->delete(); // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser if(!isset($_GET[ajax])) $this->redirect(isset($_POST[returnUrl]) ? $_POST[returnUrl] : array(admin)); } else throw new CHttpException(400,Invalid request. Please do not repeat this request again.); }
  42. 42. YII Framework: CRUD / Controller /** * Lists all models. */ public function actionIndex() { $dataProvider=new CActiveDataProvider(Entidade); $this->render(index,array( dataProvider=>$dataProvider, )); } /** * Manages all models. */ public function actionAdmin() { $model=new Entidade(search); $model->unsetAttributes(); // clear any default values if(isset($_GET[Entidade])) $model->attributes=$_GET[Entidade]; $this->render(admin,array( model=>$model, )); }
  43. 43. YII Framework: CRUD / Controller /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model=Entidade::model()->findByPk((int)$id); if($model===null) throw new CHttpException(404,The requested page does not exist.); return $model; } /** * Performs the AJAX validation. * @param CModel the model to be validated */ protected function performAjaxValidation($model) { if(isset($_POST[ajax]) && $_POST[ajax]===entidade-form) { echo CActiveForm::validate($model); Yii::app()->end(); } }
  44. 44. YII Framework: CRUD / Widgets <?php $this->breadcrumbs=array( Entidades=>array(index), Manage, ); $this->menu=array( array(label=>List Entidade, url=>array(index)), array(label=>Create Entidade, url=>array(create)), ); Yii::app()->clientScript->registerScript(search, " $(.search-button).click(function(){ $(.search-form).toggle(); return false; }); $(.search-form form).submit(function(){ $.fn.yiiGridView.update(entidade-grid, { data: $(this).serialize() }); return false; }); "); ?> <h1>Manage Entidades</h1>
  45. 45. YII Framework: CRUD / Widgets <p> You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b> or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done. </p> <?php echo CHtml::link(Advanced Search,#,array(class=>search-button)); ?> <div class="search-form" style="display:none"> <?php $this->renderPartial(_search,array( model=>$model, )); ?> </div><!-- search-form --> <?php $this->widget(zii.widgets.grid.CGridView, array( id=>entidade-grid, dataProvider=>$model->search(), filter=>$model, columns=>array( id, nome, descricao, array( class=>CButtonColumn, ), ), )); ?>
  46. 46. YII Framework: CRUD / Partial View<div class="form"><?php $form=$this->beginWidget(CActiveForm, array(id=>entidade-form,enableAjaxValidation=>false,)); ?><p class="note">Fields with <span class="required">*</span> are required.</p><?php echo $form->errorSummary($model); ?><div class="row"><?php echo $form->labelEx($model,nome); ?><?php echo $form->textField($model,nome,array(size=>60,maxlength=>255)); ?><?php echo $form->error($model,nome); ?></div><div class="row"><?php echo $form->labelEx($model,descricao); ?><?php echo $form->textField($model,descricao,array(size=>60,maxlength=>255)); ?><?php echo $form->error($model,descricao); ?></div><div class="row buttons"><?php echo CHtml::submitButton($model->isNewRecord ? Create : Save); ?></div><?php $this->endWidget(); ?></div><!-- form -->
  47. 47. YII Framework: Scripts Classe CClientScript $baseUrl = Yii::app()->baseUrl; $cs = Yii::app()->getClientScript(); $cs->registerCssFile($baseUrl . /css/calendarjs.css); $cs->registerCssFile($baseUrl . /css/drh/principal.css); $cs->registerScriptFile($baseUrl . /js/calendario/jquery.js); $cs->registerScriptFile($baseUrl . /js/calendario/mootools.js); $cs->registerScriptFile($baseUrl . /js/calendario/calendar.js);
  48. 48. www.yiiframework.com netocame@yahoo.com.bryii-framework-brasil@googlegroups.comhttp://www.yiiframework.com/doc/guide/

×