1. #1
    Ext User
    Join Date
    Jun 2010
    Posts
    7
    Vote Rating
    0
    ericw is on a distinguished road

      0  

    Default CRUD problem using extjs and Yii framework


    Hi.. I'm trying to work on how to use extjs and Yii framework together to perfrom CRUD, but I am not sure how to do that. I believe proxy should be used to accomplish the process... but I am not sure how to call Yii methods in javascript..

    Could you help me with this? i have pasted some of the codes here..


    thanks!!

    here is the javascript for grid


    var jsonstore=new Ext.data.JsonStore({
    //root: 'results',
    //totalProperty: 'total',
    //id:table,
    //reader: new Ext.data.JsonReader(),
    proxy: new Ext.data.HttpProxy({
    api: {
    read: '../source/web/index.php/table/display',
    create: '../source/web/index.php/table/create',
    update: '../source/web/index.php/table/update',
    destroy: '../source/web/index.php/table/delete'
    }
    }),
    method:'POST',
    autoLoad: true,
    //reader: new Ext.data.JsonReader(),
    //writer:writer,




    fields: [
    {name: 'id',type: 'string'},
    {name: 'first_name',type: 'string'},
    {name: 'last_name',type: 'string'},
    {name: 'phone',type: 'string'},
    {name: 'address',type: 'string'},
    ]




    });
    var colM=new Ext.grid.ColumnModel([
    {header: "id",dataIndex: 'id',width: 50,sortable:true},
    {header: "First Name",dataIndex: 'first_name',width: 50,sortable:true},
    {header: "Last Name",dataIndex: 'last_name',width: 50,sortable:true},
    {header: "phone",dataIndex: 'phone',width: 50,sortable:true},
    {header: "address",dataIndex: 'address',width: 70,sortable:true}
    ]);


    var tablegrid = new Ext.grid.GridPanel({
    //title:"table",
    height:500,
    width:600,


    cm:colM,
    store:jsonstore,
    autoExpandColumn:1
    });


    tablegrid.load();







    here is the code for layout code..


    /****************
    * table Fit layout
    *
    ****************/




    var tablelayout = new Ext.Panel({
    title: 'tablelayout',
    layout:'fit',
    autoHeight:true,


    tbar: [
    {
    xtype: 'tbbutton',
    text: 'Delete',
    handler: function doDel(){
    Ext.Msg.alert('Boo', 'delete?')}


    },
    {
    xtype: 'tbbutton',
    text: 'update',
    handler: function(){
    Ext.Msg.alert('Boo', 'update?');
    }
    //handeler:addh
    },
    /*
    {
    text: 'Save Changes',
    iconCls: 'btn-save',
    handler: function(){
    jsonstore.save();
    jsonstore.load();
    tablegrid.getView().refresh();
    }
    }
    */
    ],
    items:tablegrid //table.js
    //items:rowgrid
    })




    i am not sure how to write the CRUD code in the handler to perform those actions...



    here is the Yii controller code..


    <?php


    class tableController extends Controller
    {
    /**
    * @var string the default layout for the views. Defaults to 'column2', meaning
    * using two-column layout. See 'protected/views/layouts/column2.php'.
    */
    public $layout='column2';


    /**
    * @var CActiveRecord the currently loaded data model instance.
    */
    private $_model;


    /**
    * @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','display'),
    'users'=>array('*'),
    ),
    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.
    */
    public function actionView()
    {
    $this->render('view',array(
    'model'=>$this->loadModel(),
    ));
    }


    /**
    * Creates a new model.
    * If creation is successful, the browser will be redirected to the 'view' page.
    */
    public function actionCreate()
    {
    $model=new table;


    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);


    if(isset($_POST['table']))
    {
    $model->attributes=$_POST['table'];
    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.
    */
    public function actionUpdate()
    {
    $model=$this->loadModel();


    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);


    if(isset($_POST['table']))
    {
    $model->attributes=$_POST['table'];
    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.
    */
    public function actionDelete()
    {
    if(Yii::app()->request->isPostRequest)
    {
    // we only allow deletion via POST request
    $this->loadModel()->delete();


    // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
    if(!isset($_GET['ajax']))
    $this->redirect(array('index'));
    }
    else
    throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
    }


    /**
    * Lists all models.
    */
    public function actionIndex()
    {
    $dataProvider=new CActiveDataProvider('table');
    $this->render('index',array(
    'dataProvider'=>$dataProvider,
    ));
    }


    /**
    * Manages all models.
    */
    public function actionAdmin()
    {
    $model=new table('search');
    if(isset($_GET['table']))
    $model->attributes=$_GET['table'];


    $this->render('admin',array(
    'model'=>$model,
    ));
    }


    /**
    * 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.
    */
    public function loadModel()
    {
    if($this->_model===null)
    {
    if(isset($_GET['id']))
    $this->_model=table::model()->findbyPk($_GET['id']);
    if($this->_model===null)
    throw new CHttpException(404,'The requested page does not exist.');
    }
    return $this->_model;
    }




    /**
    * Performs the AJAX validation.
    * @param CModel the model to be validated
    */
    protected function performAjaxValidation($model)
    {
    if(isset($_POST['ajax']) && $_POST['ajax']==='table-form')
    {
    echo CActiveForm::validate($model);
    Yii::app()->end();
    }
    }


    public function actionDisplay()
    {
    $tableModel = new table();
    if(isset($_GET['table'])){


    $model->attributes=$_GET['table'];
    }
    //Echo CJSON::encode($userModel->findAll());
    $table = table::model()->findall();
    Echo CJSON::encode($table);
    }


    }




    I think what i need to do is to link the controller with the layout code...
    but i just don't know how...


    thanks in advance for your help!!

  2. #2
    Sencha User
    Join Date
    Jun 2008
    Posts
    3
    Vote Rating
    0
    bluejedi is on a distinguished road

      0  

    Default hello try use my extension

    please try this http://www.yiiframework.com/extension/e-xgen/ it creates crud based on table and relation

Similar Threads

  1. ExtJS and Spring MVC Framework: CRUD DataGrid Example
    By loiane in forum Community Discussion
    Replies: 7
    Last Post: 18 Mar 2015, 5:29 AM
  2. how to perform CRUD using Yii framework
    By ericw in forum Ext 3.x: Help & Discussion
    Replies: 6
    Last Post: 17 Nov 2011, 7:42 PM
  3. ExtJS extension for PHP Yii Framework (UPDATE)
    By gevik in forum Community Discussion
    Replies: 13
    Last Post: 21 Jan 2010, 11:41 AM
  4. Use of Remote Combobox with CRUD Framework
    By keithcortis in forum Ext 3.x: Help & Discussion
    Replies: 44
    Last Post: 30 Sep 2009, 3:01 AM

Thread Participants: 1