Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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)

11,419 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/

×