Category Model
<?php
namespace appmodels;
use Yii;
/**
* This is the model class for table "category".
*
* @property int $id
* @property string $category_name
* @property string $water_bill
* @property string $conservancy
* @property int|null $siz_width
* @property int|null $siz_height
* @property int|null $created_by
* @property string|null $created_on
* @property int|null $updated_by
* @property string|null $updated_on
*/
class Category extends yiidbActiveRecord
{
/**
* {@inheritdoc}
*/
public static function tableName()
{
return 'category';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['category_name', 'conservancy'], 'required'],
[['siz_width', 'siz_height', 'created_by', 'updated_by'], 'integer'],
[['created_on', 'updated_on'], 'safe'],
[['category_name', 'conservancy'], 'string', 'max' => 255],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'category_name' => 'Category Name',
'conservancy' => 'Conservancy',
'siz_width' => 'Size Width',
'siz_height' => 'Size Height',
'un.username' => 'Created By',
'created_on' => 'Created On',
'name.username' => 'Updated By',
'updated_on' => 'Updated On',
];
}
public function getname()
{
return $this->hasOne(User::className(),['id' => 'updated_by']);
}
public function getun()
{
return $this->hasOne(User::className(),['id' => 'created_by']);
}
}
CategorySearch
#
<?php
namespace appmodels;
use yiiaseModel;
use yiidataActiveDataProvider;
use appmodelsCategory;
/**
* CategorySearch represents the model behind the search form of `appmodelsCategory`.
*/
class CategorySearch extends Category
{
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['id', 'siz_width', 'siz_height', 'created_by', 'updated_by'], 'integer'],
[['category_name', 'conservancy', 'created_on', 'updated_on'], 'safe'],
];
}
/**
* {@inheritdoc}
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = Category::find();
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'siz_width' => $this->siz_width,
'siz_height' => $this->siz_height,
'created_by' => $this->created_by,
'created_on' => $this->created_on,
'updated_by' => $this->updated_by,
'updated_on' => $this->updated_on,
]);
$query->andFilterWhere(['like', 'category_name', $this->category_name])
->andFilterWhere(['like', 'conservancy', $this->conservancy]);
return $dataProvider;
}
}
Index.php
<?php
use yiihelpersHtml;
use yiigridGridView;
use yiiwidgetsPjax;
use yiihelpersUrl;
/* @var $this yiiwebView */
/* @var $searchModel appmodelsCategorySearch */
/* @var $dataProvider yiidataActiveDataProvider */
$this->title = Yii::t('app', 'Categories');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="category-index">
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
<div class="card-header py-3 panel" style="">
<h6 class="m-0 font-weight-bold text-primary"><?= Html::a(Yii::t('app', '+ Add Category'), ['create'], ['class' => 'btn btn-success']) ?>
</h6>
</div>
<div class="card" style="padding:20px; border-radius: 0 0 4px 4px; ">
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'summary' => "",
'columns' => [
['class' => 'yiigridSerialColumn'],
//'id',
[
'attribute'=> 'category_name',
'value'=> 'category_name',
],
'siz_width',
'siz_height',
'conservancy',
//'created_by',
//'created_on',
//'updated_by',
//'updated_on',
['class' => 'yiigridActionColumn',
'header'=>'Action',
'headerOptions' => ['width' => '80'],
'template' => '{View}{Update}{Delete}',
'buttons'=> [
'Delete' => function ($url,$model,$key){
return html::a('<i class="fa fa-trash" style="font-size:16px;color:#F05550 "></i>' ,url::to(['/category/delete?id='.$model->id]));
},
'View' => function ($url,$model,$key){
return html::a('<i class="fa fa-eye" style="font-size:16px;color:#00cc66"></i>' ,url::to(['/category/view?id='.$model->id]));
},
'Update' => function ($url,$model,$key){
return html::a('<i class="fa fa-edit" style="font-size:16px;color:#4A94D2"></i>',url::to(['/category/update?id='.$model->id]));
}
]
],
],
]); ?>
</div>
</div>
View.php
[<?php
use yiihelpersHtml;
use yiiwidgetsDetailView;
/* @var $this yiiwebView */
/* @var $model appmodelsCategory */
$this->title = $model->category_name;
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Categories'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
yiiwebYiiAsset::register($this);
?>
<div class="category-view">
<h1><?= Html::encode($this->title) ?></h1>
<p>
<?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
<?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->id], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),
'method' => 'post',
],
]) ?>
</p>
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'category_name',
'siz_width',
'siz_height',
'conservancy',
// 'created_by',
'un.username',
'created_on',
'name.username',
// 'un.username',
'updated_on',
],
]) ?>
</div>]
Controller
<?php
namespace appcontrollers;
use Yii;
use appmodelsCategory;
use appmodelsCategorySearch;
use yiiwebController;
use yiiwebNotFoundHttpException;
use yiifiltersVerbFilter;
use yiifiltersAccessControl;
use appmodelsUser;
/**
* CategoryController implements the CRUD actions for Category model.
*/
class CategoryController extends Controller
{
/**
* {@inheritdoc}
*/
public function behaviors()
{
return [
'access' => [
'class'=>AccessControl::classname(),
'only'=>['create'],
'rules' =>[
[
'allow'=>true,
'roles'=>['@']
],
]
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
];
}
/**
* Lists all Category models.
* @return mixed
*/
public function actionIndex()
{
$searchModel = new CategorySearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single Category model.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new Category model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
$model = new Category();
if ($model->load(Yii::$app->request->post()) ) {
$model->created_by = Yii::$app->user->identity->id;
$model->created_on = date('Y-m-d H:i:s');
if($model->validate()){
if($model->save()){
return $this->redirect(['view', 'id' => $model->id]);
}else{
}
}
}
return $this->render('create', [
'model' => $model,
]);
}
/**
* Updates an existing Category model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post())){
$model->updated_by = Yii::$app->user->identity->id;
$model->updated_on = date('Y-m-d H:i:s');
if($model->validate()){
if($model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}else{
}
}
}
return $this->render('update', [
'model' => $model,
]);
}
/**
* Deletes an existing Category model.
* If deletion is successful, the browser will be redirected to the 'index' page.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function a