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

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..." hd porno faketaxi