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

      0  

    Default how to perform CRUD using Yii framework

    how to perform CRUD using Yii framework


    Hi..I am trying to use extjs and Yii framework to perform database control.. but I am not sure how to do that.. Could anyone give me some instructions about it?

    I now could only view grid using extjs from database..

    Thanks very much!

  2. #2

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

      0  

    Default


    Quote Originally Posted by mankz View Post
    Hi mankz.. Thanks for the quick reply!!

    I have check the website.. but I still don't know how to do it...

    here is the code to generate a grid..
    Code:
    var jsonstore=new Ext.data.JsonStore({
    
            //reader: new Ext.data.JsonReader(),
            proxy: new Ext.data.HttpProxy({
    	            api: {
    	                read: '../index.php/table/display',
    	                create: '../index.php/table/create',
    	                update: '../index.php/table/update',
    	                destroy: '../index.php/table/delete'
    	            }
    	        }),
                    method:'POST',
            autoLoad: true,
            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({
            height:500,
            width:600,
    
            cm:colM,
            store:jsonstore,
            autoExpandColumn:1
        });
    
    table.load();
    here is the layout of above grid

    Code:
    var tablelayout = new Ext.Panel({
    
        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?');
                }
            },
    
            {
                text: 'Save Changes',
                iconCls: 'btn-save',
                handler: function(){
                    Ext.Msg.alert('QQ', 'save?');
                }
    
                }
            }
    
        ],
        items:tablegrid 
    });
    as you can see that i didn't write any of the handler function .. cause I don't know how to do it...



    and 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);
            }
    
    }
    The controller is generated by yiic and it works fine under php, but i am not sure how to link extjs with it....

    could you help me with that?


    Thanks!!!

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

      0  

    Default


    Quote Originally Posted by mankz View Post
    Hi mankz..

    thanks for your quick reply..
    i am new to programming. I have viewed the website, but still couldn't solve the problem..
    Could you help me with it? thanks!

    here is the javascript for grid
    Code:
    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..
    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..

    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... right?
    but I am just don't know how...

    thanks in advance for your help!!

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

      0  

    Default


    Quote Originally Posted by mankz View Post
    Hi mankz..

    thanks for your quick reply..
    i am new to programming. I have viewed the website, but still couldn't solve the problem..
    Could you help me with it? thanks!

    here is the javascript for grid
    HTML Code:
    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..
    HTML 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..

    HTML 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... right?
    but i just don't know how...

    thanks in advance for your help!!

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

      0  

    Default


    Quote Originally Posted by mankz View Post
    Quote Originally Posted by mankz View Post


    Hi mankz..


    thanks for your quick reply..
    i am new to programming. I have viewed the website, but still couldn't solve the problem..
    Could you help me with it? 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... right?
    but i just don't know how...


    thanks in advance for your help!!

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

      0  

Similar Threads

  1. ExtJS extension for PHP Yii Framework (UPDATE)
    By gevik in forum Community Discussion
    Replies: 13
    Last Post: 21 Jan 2010, 11:41 AM
  2. 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
  3. How to integrate remote combobox with CRUD framework
    By jdaum in forum Ext 2.x: Help & Discussion
    Replies: 12
    Last Post: 27 Aug 2008, 2:42 PM
  4. integration with data dictionary/ crud framework
    By jdaum in forum Ext 1.x: Help & Discussion
    Replies: 1
    Last Post: 2 Jun 2007, 10:01 AM

Thread Participants: 2