Blog → Yii: convenient CRUD on dialogs
Update/delete model with CJuiDialog (works in CGridView) เก็บไว้ก่อน
Update/delete model with CJuiDialog (works in CGridView)
gridview view in modal popup Yii เก็บไว้ก่อน
In view
‘type’=>’bordered’,
‘dataProvider’=>$model->search(),
‘filter’=>$model,
‘template’=>”{items}”,
‘columns’=>array(
‘id’,
‘firstName’,
‘lastName’,
‘language’,
‘hours’,
array(
‘header’=>’Options’,
‘class’=>’bootstrap.widgets.TbButtonColumn’,
‘buttons’=>array(
‘view’=>
array(
‘url’=>’Yii::app()->createUrl(“person/view”, array(“id”=>$data->id))’,
‘options’=>array(
‘ajax’=>array(
‘type’=>’POST’,
‘url’=>”js:$(this).attr(‘href’)”,
‘success’=>’function(data) { $(“#viewModal .modal-body p”).html(data); $(“#viewModal”).modal(); }’
),
),
),
),
)
)));
?>
<!– View Popup –>
<?php $this->beginWidget(‘bootstrap.widgets.TbModal’, array(‘id’=>’viewModal’)); ?>
<!– Popup Header –>
<div class=”modal-header”>
<h4>View Employee Details</h4>
</div>
<!– Popup Content –>
<div class=”modal-body”>
<p>Employee Details</p>
</div>
<!– Popup Footer –>
<div class=”modal-footer”>
<!– close button –>
<?php $this->widget(‘bootstrap.widgets.TbButton’, array(
‘label’=>’Close’,
‘url’=>’#’,
‘htmlOptions’=>array(‘data-dismiss’=>’modal’),
)); ?>
<!– close button ends–>
</div>
<?php $this->endWidget(); ?>
<!– View Popup ends –>
And in Controller
public function actionView($id)
{
if( Yii::app()->request->isAjaxRequest )
{
$this->renderPartial(‘view’,array(
‘model’=>$this->loadModel($id),
), false, true);
}
else
{
$this->render(‘view’,array(
‘model’=>$this->loadModel($id),
));
}
}
การปรับแต่ง II CGridView pagination,summary,table positions
YII CGridView featured with 'template' option, which makes grid to easy customization. //YII CGridView with top & bottom pagination with summary. $this->widget('zii.widgets.grid.CGridView', array( 'template' => "{pager}\n{summary}\n{items}\n{pager}", );
//YII CGridView with top pagination with summary. $this->widget('zii.widgets.grid.CGridView', array( 'template' => "{pager}\n{summary}\n{items}", );
//YII CGridView with top & bottom pagination without summary. $this->widget('zii.widgets.grid.CGridView', array( 'template' => "
{pager}\n{summary}\n{items}\n{pager}", );
การใส่ Target Link ใน CGridView โดยใช้ Class CLinkColumn
'linkHtmlOptions'=>array('target'=>'_blank')
array( 'class'=>'CLinkColumn', 'header'=>'Print', 'linkHtmlOptions'=>array('target'=>'_blank') ),
การใช้ CDbCriteria Between กับ NOT IN Between สไตล์ littleboy
Between By Date
$startDate = $_POST[‘startDate’];
$endDate = $_POST[‘endDate’];
$criteria = new CDbCriteria();
$criteria->addBetweenCondition(‘create_date’, $startDate, $endDate);
Not In Between By Date
$startDate = $_POST[‘startDate’];
$endDate = $_POST[‘endDate’];
$criteria = new CDbCriteria();
$criteria->addCondition(‘create_date < :startDate OR create_date > :endDate’);
$criteria->params = array(‘:startDate’ => $startDate, ‘:endDate’ => $endDate);
Yii Framework: example LIKE query.
<?php $c = new CDbCriteria(); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` $c = new CDbCriteria(); $c->addSearchCondition('t.fuga', null); // null, false, ''ใชใฉใฏ็ก่ฆ–ใ•ใใใใใงใ Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` $c = new CDbCriteria(); $c->addSearchCondition('t.fuga', 'a'); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` WHERE t.fuga LIKE :ycp0. Bound with :ycp0='%a%' $c = new CDbCriteria(); $c->addSearchCondition('t.fuga', 'a%', false); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` WHERE t.fuga LIKE :ycp0. Bound with :ycp0='a%'
$c = new CDbCriteria(); $c->addSearchCondition('t.fuga', 'a'); $c->addSearchCondition('t.piyo', 'd'); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` WHERE (t.fuga LIKE :ycp0) AND (t.piyo LIKE :ycp1). Bound with :ycp0='%a%', :ycp1='%d%' $c = new CDbCriteria(); $c->addSearchCondition('t.fuga', 'a', true, 'OR'); $c->addSearchCondition('t.piyo', 'd', true, 'OR'); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` WHERE (t.fuga LIKE :ycp0) OR (t.piyo LIKE :ycp1). Bound with :ycp0='%a%', :ycp1='%d%' $c = new CDbCriteria(); $c->compare('t.fuga', 'a', true, 'OR'); $c->compare('t.piyo', 'b', true, 'OR'); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` WHERE (t.fuga LIKE :ycp0) OR (t.piyo LIKE :ycp1). Bound with :ycp0='%a%', :ycp1='%b%' Hoge::model()->findAll('t.fuga LIKE :fuga', array(':fuga' => '%a%')); // SELECT * FROM `hoge` `t` WHERE t.fuga LIKE :fuga. Bound with :fuga='%a%' Hoge::model()->findAll(array( 'condition' => 't.fuga LIKE :fuga', 'params' => array(':fuga' => '%a%'), )); // SELECT * FROM `hoge` `t` WHERE t.fuga LIKE :fuga. Bound with :fuga='%a%' $c = new CDbCriteria(); $c->condition = 't.fuga LIKE :fuga'; $c->params = array(':fuga' => '%a%'); Hoge::model()->findAll($c); // SELECT * FROM `hoge` `t` WHERE t.fuga LIKE :fuga. Bound with :fuga='%a%'
Yii row number in CGridView
$this->widget('zii.widgets.grid.CGridView', array( 'columns' => array( array( 'header' => 'No.', 'value' => '$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)', ), ), ) );
Yii – CSqlDataProvider
$sql = "SELECT mis_item_uom.* FROM mis_item_uom WHERE item_code='$model->itemCode' "; $dataProvider=new CSqlDataProvider($sql, array( 'sort'=>array( 'attributes'=>array( 'uom', 'item_code', 'rate', ), ), 'pagination'=>array( 'pageSize'=>10, ), )); $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, 'columns'=>array( 'uom','item_code','rate', ) ));