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

    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

    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: 6
    Last Post: 15 Aug 2014, 5:45 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

Turkiyenin en sevilen filmlerinin yer aldigi xnxx internet sitemiz olan ve porn sex tarzi bir site olan mobil porno izle sitemiz gercekten dillere destan bir durumda herkesin sevdigi bir site olarak tarihe gececege benziyor. Sitenin en belirgin ozelliklerinden birisi de Turkiyede gercekten kaliteli ve muntazam, duzenli porno izle siteleri olmamasidir. Bu yuzden iste. Ayrica en net goruntu kalitesine sahip adresinde yayinlanmaktadir. Mesela diğer sitelerimizden bahsedecek olursak, en iyi hd porno video arşivine sahip bir siteyiz. "The Best anal porn videos and slut anus, big asses movies set..."