SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Iniciando com YII Framework
   Volmar Machado da Silva Neto
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
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%
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
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.
http://nomedoservidor/caminho/do/yii/requirements/index.php
YII Framework: Estrutura
YII Framework: Logica
YII Framework: MVC


Modelo-Visão-Controle

O 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ógica
de negócio da interface com o usuário, assim os programadores podem mudar
facilmente cada parte, sem afetar as outras. No padrão MVC, o modelo
representa as informações (os dados) e as regras de negócio, a visão contém
elemento de interface com o usuário, como textos, formulários, e o controle
gerencia a comunicação entre o modelo e a visão. Além MVC, o Yii também
introduz um controle de frente, chamado aplicação (application), que representa
o contexto de execução dos processos requisitados. A aplicação recebe a
solicitação do usuário e a envia para um controlador adequado para ser
processada.
YII Framework: Logica
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
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
       ...
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
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'
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.*',
    ),
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',
      ),
      */
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
',
     ),
);
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();
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);
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) {
            $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');
    }

    }
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',
     ),
     );
     }
     */
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';
   }
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(
      );
      }
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,
 ));
 }
 }
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>
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>
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>
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 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('*'),
 ),
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),
  ));
  }
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);
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.');
 }
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,
   ));
   }
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();
  }
  }
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>
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',
 ),
 ),
 )); ?>
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 -->
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');
www.yiiframework.com
        netocame@yahoo.com.br
yii-framework-brasil@googlegroups.com
http://www.yiiframework.com/doc/guide/

Más contenido relacionado

La actualidad más candente

Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPressLeandrinho Vieira
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
CakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsCakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsEmerson Soares
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntDenis L Presciliano
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Thyago Maia
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 

La actualidad más candente (20)

Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
O framework spring
O framework springO framework spring
O framework spring
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
CakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no WindowsCakePHP - Configurando o ambiente de desenvolvimento no Windows
CakePHP - Configurando o ambiente de desenvolvimento no Windows
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 

Destacado

Yii2
Yii2Yii2
Yii2Noveo
 
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIDETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIEder Nogueira
 
Yii framework 2 exemplo de uma aplicação-parte2
Yii framework 2 exemplo de uma aplicação-parte2Yii framework 2 exemplo de uma aplicação-parte2
Yii framework 2 exemplo de uma aplicação-parte2Marcelo Menezes
 
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux UruguaianaSegurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux UruguaianaTchelinux
 
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsitoO uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsitoGeorge Silva
 
Yii framework 2 exemplo de uma aplicação-parte1
Yii framework 2 exemplo de uma aplicação-parte1Yii framework 2 exemplo de uma aplicação-parte1
Yii framework 2 exemplo de uma aplicação-parte1Marcelo Menezes
 
Arquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry PiArquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry PiJuliane Silva
 
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...Filipe Aguilar Santana
 
Entendendo Scrum, Kanban e Programação Extrema
Entendendo Scrum, Kanban e Programação ExtremaEntendendo Scrum, Kanban e Programação Extrema
Entendendo Scrum, Kanban e Programação ExtremaDairton Bassi
 
Exemplo / Modelo de um Plano de Negócios (Template Business Case)
Exemplo / Modelo de um Plano de Negócios (Template Business Case)Exemplo / Modelo de um Plano de Negócios (Template Business Case)
Exemplo / Modelo de um Plano de Negócios (Template Business Case)Fernando Palma
 
Gerenciamento Ágil de Projetos
Gerenciamento Ágil de ProjetosGerenciamento Ágil de Projetos
Gerenciamento Ágil de ProjetosDaniel de Amaral
 
The Canvas of Business Case (Modelo de Caso de Negócio)
The Canvas of Business Case (Modelo de Caso de Negócio)The Canvas of Business Case (Modelo de Caso de Negócio)
The Canvas of Business Case (Modelo de Caso de Negócio)Rildo (@rildosan) Santos
 
Metodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosMetodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosDaniel de Amaral
 
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - KanbanMetodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - KanbanMatheus Costa
 
Creating applications with Grails, Angular JS and Spring Security
Creating applications with Grails, Angular JS and Spring SecurityCreating applications with Grails, Angular JS and Spring Security
Creating applications with Grails, Angular JS and Spring SecurityAlvaro Sanchez-Mariscal
 

Destacado (20)

Introducción a Yii2
Introducción a Yii2Introducción a Yii2
Introducción a Yii2
 
Palestra yii2
Palestra yii2Palestra yii2
Palestra yii2
 
Yii2
Yii2Yii2
Yii2
 
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIDETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
 
Yii framework 2 exemplo de uma aplicação-parte2
Yii framework 2 exemplo de uma aplicação-parte2Yii framework 2 exemplo de uma aplicação-parte2
Yii framework 2 exemplo de uma aplicação-parte2
 
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux UruguaianaSegurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
Segurança cibernética e software livre - Lourival Araujo - TchêLinux Uruguaiana
 
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsitoO uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
O uso do PostgreSQL e PostGIS no cadastro geocodificado de acidentes de trânsito
 
Yii framework 2 exemplo de uma aplicação-parte1
Yii framework 2 exemplo de uma aplicação-parte1Yii framework 2 exemplo de uma aplicação-parte1
Yii framework 2 exemplo de uma aplicação-parte1
 
Arquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry PiArquitetura ARM - Raspberry Pi
Arquitetura ARM - Raspberry Pi
 
Framework Yii
Framework YiiFramework Yii
Framework Yii
 
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
Desenvolvimento de um protótipo de um sistema de informaçãO web para cadastro...
 
6. SCRUM e Kanban
6. SCRUM e Kanban6. SCRUM e Kanban
6. SCRUM e Kanban
 
Entendendo Scrum, Kanban e Programação Extrema
Entendendo Scrum, Kanban e Programação ExtremaEntendendo Scrum, Kanban e Programação Extrema
Entendendo Scrum, Kanban e Programação Extrema
 
Introdução ao PostGIS
Introdução ao PostGISIntrodução ao PostGIS
Introdução ao PostGIS
 
Exemplo / Modelo de um Plano de Negócios (Template Business Case)
Exemplo / Modelo de um Plano de Negócios (Template Business Case)Exemplo / Modelo de um Plano de Negócios (Template Business Case)
Exemplo / Modelo de um Plano de Negócios (Template Business Case)
 
Gerenciamento Ágil de Projetos
Gerenciamento Ágil de ProjetosGerenciamento Ágil de Projetos
Gerenciamento Ágil de Projetos
 
The Canvas of Business Case (Modelo de Caso de Negócio)
The Canvas of Business Case (Modelo de Caso de Negócio)The Canvas of Business Case (Modelo de Caso de Negócio)
The Canvas of Business Case (Modelo de Caso de Negócio)
 
Metodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosMetodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de Projetos
 
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - KanbanMetodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
Metodologias Ágeis para Gestão e Planejamento de Projetos Scrum - XP - Kanban
 
Creating applications with Grails, Angular JS and Spring Security
Creating applications with Grails, Angular JS and Spring SecurityCreating applications with Grails, Angular JS and Spring Security
Creating applications with Grails, Angular JS and Spring Security
 

Similar a PHP YII Framework

Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Emerson Saito
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 

Similar a PHP YII Framework (20)

Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Cake Php
Cake PhpCake Php
Cake Php
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
CakePHP
CakePHPCakePHP
CakePHP
 
Tutorial.yii
Tutorial.yiiTutorial.yii
Tutorial.yii
 
Python 08
Python 08Python 08
Python 08
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL Palestra Demoiselle V1.x no 11 FISL
Palestra Demoiselle V1.x no 11 FISL
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 

Más de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Más de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

PHP YII Framework

  • 1. Iniciando com YII Framework Volmar Machado da Silva Neto
  • 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. 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. 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. 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.
  • 9. YII Framework: MVC Modelo-Visão-Controle O 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ógica de negócio da interface com o usuário, assim os programadores podem mudar facilmente cada parte, sem afetar as outras. No padrão MVC, o modelo representa as informações (os dados) e as regras de negócio, a visão contém elemento de interface com o usuário, como textos, formulários, e o controle gerencia a comunicação entre o modelo e a visão. Além MVC, o Yii também introduz um controle de frente, chamado aplicação (application), que representa o contexto de execução dos processos requisitados. A aplicação recebe a solicitação do usuário e a envia para um controlador adequado para ser processada.
  • 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. 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. 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. 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. 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. 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. 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. 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. 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);
  • 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. 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. 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. 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. 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. 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. 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. 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>
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. www.yiiframework.com netocame@yahoo.com.br yii-framework-brasil@googlegroups.com http://www.yiiframework.com/doc/guide/