-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from boscobass/master
Source code commit
- Loading branch information
Showing
12 changed files
with
906 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
<?php | ||
/** | ||
* This is the template for generating a CRUD controller class file. | ||
*/ | ||
|
||
use yii\db\ActiveRecordInterface; | ||
use yii\helpers\StringHelper; | ||
|
||
|
||
/* @var $this yii\web\View */ | ||
/* @var $generator yii\gii\generators\crud\Generator */ | ||
|
||
$controllerClass = StringHelper::basename($generator->controllerClass); | ||
$modelClass = StringHelper::basename($generator->modelClass); | ||
$searchModelClass = StringHelper::basename($generator->searchModelClass); | ||
if ($modelClass === $searchModelClass) { | ||
$searchModelAlias = $searchModelClass . 'Search'; | ||
} | ||
|
||
/* @var $class ActiveRecordInterface */ | ||
$class = $generator->modelClass; | ||
$pks = $class::primaryKey(); | ||
$urlParams = $generator->generateUrlParams(); | ||
$actionParams = $generator->generateActionParams(); | ||
$actionParamComments = $generator->generateActionParamComments(); | ||
|
||
echo "<?php\n"; | ||
?> | ||
|
||
namespace <?= StringHelper::dirname(ltrim($generator->controllerClass, '\\')) ?>; | ||
|
||
use Yii; | ||
use <?= ltrim($generator->modelClass, '\\') ?>; | ||
<?php if (!empty($generator->searchModelClass)): ?> | ||
use <?= ltrim($generator->searchModelClass, '\\') . (isset($searchModelAlias) ? " as $searchModelAlias" : "") ?>; | ||
<?php else: ?> | ||
use yii\data\ActiveDataProvider; | ||
<?php endif; ?> | ||
use <?= ltrim($generator->baseControllerClass, '\\') ?>; | ||
use yii\web\NotFoundHttpException; | ||
use yii\filters\VerbFilter; | ||
|
||
/** | ||
* <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model. | ||
*/ | ||
class <?= $controllerClass ?> extends <?= StringHelper::basename($generator->baseControllerClass) . "\n" ?> | ||
{ | ||
public function behaviors() | ||
{ | ||
return [ | ||
'verbs' => [ | ||
'class' => VerbFilter::className(), | ||
'actions' => [ | ||
'delete' => ['post'], | ||
], | ||
], | ||
]; | ||
} | ||
|
||
/** | ||
* Lists all <?= $modelClass ?> models. | ||
* @return mixed | ||
*/ | ||
public function actionIndex() | ||
{ | ||
<?php if (!empty($generator->searchModelClass)): ?> | ||
$searchModel = new <?= isset($searchModelAlias) ? $searchModelAlias : $searchModelClass ?>(); | ||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); | ||
|
||
return $this->render('index', [ | ||
'searchModel' => $searchModel, | ||
'dataProvider' => $dataProvider, | ||
]); | ||
<?php else: ?> | ||
$dataProvider = new ActiveDataProvider([ | ||
'query' => <?= $modelClass ?>::find(), | ||
]); | ||
|
||
return $this->render('index', [ | ||
'dataProvider' => $dataProvider, | ||
]); | ||
<?php endif; ?> | ||
} | ||
|
||
/** | ||
* Displays a single <?= $modelClass ?> model. | ||
* <?= implode("\n * ", $actionParamComments) . "\n" ?> | ||
* @return mixed | ||
*/ | ||
public function actionView(<?= $actionParams ?>) | ||
{ | ||
return $this->render('view', [ | ||
'model' => $this->findModel(<?= $actionParams ?>), | ||
]); | ||
} | ||
|
||
/** | ||
* Creates a new <?= $modelClass ?> model. | ||
* If creation is successful, the browser will be redirected to the 'view' page. | ||
* @return mixed | ||
*/ | ||
public function actionCreate() | ||
{ | ||
$model = new <?= $modelClass ?>(); | ||
|
||
if ($model->loadAndSave(Yii::$app->request->post())) { | ||
Yii::$app->session->setFlash('success',<?= $generator->generateString('Saved successfully!') ?>); | ||
return $this->redirect(['view', <?= $urlParams ?>]); | ||
} else { | ||
return $this->render('create', [ | ||
'model' => $model, | ||
]); | ||
} | ||
} | ||
|
||
/** | ||
* Updates an existing <?= $modelClass ?> model. | ||
* If update is successful, the browser will be redirected to the 'view' page. | ||
* <?= implode("\n * ", $actionParamComments) . "\n" ?> | ||
* @return mixed | ||
*/ | ||
public function actionUpdate(<?= $actionParams ?>) | ||
{ | ||
$model = $this->findModel(<?= $actionParams ?>); | ||
|
||
if ($model->loadAndSave(Yii::$app->request->post())) { | ||
Yii::$app->session->setFlash('success',<?= $generator->generateString('Updated successfully!') ?>); | ||
return $this->redirect(['view', <?= $urlParams ?>]); | ||
} else { | ||
return $this->render('update', [ | ||
'model' => $model, | ||
]); | ||
} | ||
} | ||
|
||
/** | ||
* Deletes an existing <?= $modelClass ?> model. | ||
* If deletion is successful, the browser will be redirected to the 'index' page. | ||
* <?= implode("\n * ", $actionParamComments) . "\n" ?> | ||
* @return mixed | ||
*/ | ||
public function actionDelete(<?= $actionParams ?>) | ||
{ | ||
|
||
try { | ||
$this->findModel(<?= $actionParams ?>)->delete(); | ||
} catch (yii\db\IntegrityException $e) { | ||
if($e->getCode() == 23000){ | ||
Yii::$app->session->setFlash('danger',<?= $generator->generateString('Record can not be deleted, there is a foreign key associated with it') ?>); | ||
return $this->redirect(['index']); | ||
} | ||
} | ||
|
||
Yii::$app->session->setFlash('success',<?= $generator->generateString('deleted successfully') ?>); | ||
return $this->redirect(['index']); | ||
} | ||
|
||
/** | ||
* Finds the <?= $modelClass ?> model based on its primary key value. | ||
* If the model is not found, a 404 HTTP exception will be thrown. | ||
* <?= implode("\n * ", $actionParamComments) . "\n" ?> | ||
* @return <?= $modelClass ?> the loaded model | ||
* @throws NotFoundHttpException if the model cannot be found | ||
*/ | ||
protected function findModel(<?= $actionParams ?>) | ||
{ | ||
<?php | ||
if (count($pks) === 1) { | ||
$condition = '$id'; | ||
} else { | ||
$condition = []; | ||
foreach ($pks as $pk) { | ||
$condition[] = "'$pk' => \$$pk"; | ||
} | ||
$condition = '[' . implode(', ', $condition) . ']'; | ||
} | ||
?> | ||
if (($model = <?= $modelClass ?>::findOne(<?= $condition ?>)) !== null) { | ||
return $model; | ||
} else { | ||
throw new NotFoundHttpException('The requested page does not exist.'); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
<?php | ||
/** | ||
* This is the template for generating CRUD search class of the specified model. | ||
*/ | ||
|
||
use yii\helpers\StringHelper; | ||
|
||
|
||
/* @var $this yii\web\View */ | ||
/* @var $generator yii\gii\generators\crud\Generator */ | ||
|
||
$modelClass = StringHelper::basename($generator->modelClass); | ||
$searchModelClass = StringHelper::basename($generator->searchModelClass); | ||
if ($modelClass === $searchModelClass) { | ||
$modelAlias = $modelClass . 'Model'; | ||
} | ||
$rules = $generator->generateSearchRules(); | ||
$labels = $generator->generateSearchLabels(); | ||
$searchAttributes = $generator->getSearchAttributes(); | ||
$searchConditions = $generator->generateSearchConditions(); | ||
|
||
echo "<?php\n"; | ||
?> | ||
|
||
namespace <?= StringHelper::dirname(ltrim($generator->searchModelClass, '\\')) ?>; | ||
|
||
use Yii; | ||
use yii\base\Model; | ||
use yii\data\ActiveDataProvider; | ||
use <?= ltrim($generator->modelClass, '\\') . (isset($modelAlias) ? " as $modelAlias" : "") ?>; | ||
|
||
/** | ||
* <?= $searchModelClass ?> represents the model behind the search form about `<?= $generator->modelClass ?>`. | ||
*/ | ||
class <?= $searchModelClass ?> extends <?= isset($modelAlias) ? $modelAlias : $modelClass ?> | ||
|
||
{ | ||
/** | ||
* @inheritdoc | ||
*/ | ||
public function rules() | ||
{ | ||
return [ | ||
<?= implode(",\n ", $rules) ?>, | ||
]; | ||
} | ||
|
||
/** | ||
* @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 = <?= isset($modelAlias) ? $modelAlias : $modelClass ?>::find(); | ||
|
||
$dataProvider = new ActiveDataProvider([ | ||
'query' => $query, | ||
]); | ||
|
||
if (!($this->load($params) && $this->validate())) { | ||
return $dataProvider; | ||
} | ||
|
||
<?= implode("\n ", $searchConditions) ?> | ||
|
||
return $dataProvider; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
<?php | ||
|
||
use yii\helpers\Inflector; | ||
use yii\helpers\StringHelper; | ||
|
||
/* @var $this yii\web\View */ | ||
/* @var $generator yii\gii\generators\crud\Generator */ | ||
|
||
/* @var $model \yii\db\ActiveRecord */ | ||
$model = new $generator->modelClass(); | ||
$safeAttributes = $model->safeAttributes(); | ||
if (empty($safeAttributes)) { | ||
$safeAttributes = $model->attributes(); | ||
} | ||
|
||
echo "<?php\n"; | ||
?> | ||
|
||
use yii\helpers\Html; | ||
use yii\widgets\ActiveForm; | ||
|
||
/* @var $this yii\web\View */ | ||
/* @var $model <?= ltrim($generator->modelClass, '\\') ?> */ | ||
/* @var $form yii\widgets\ActiveForm */ | ||
?> | ||
|
||
<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-form form-create"> | ||
|
||
<?= "<?php " ?>$form = ActiveForm::begin(); ?> | ||
|
||
<?php | ||
function is_fkey2($attribute, $schema){ | ||
foreach($schema->foreignKeys as $key => $value){ | ||
foreach($value as $k => $v){ | ||
if ( strtolower($attribute) == strtolower($k) ){ | ||
return true; | ||
} | ||
} | ||
} | ||
return false; | ||
} | ||
|
||
foreach ($generator->getColumnNames() as $attribute) { | ||
|
||
|
||
|
||
if (in_array($attribute, $safeAttributes)) { | ||
|
||
|
||
if ( is_fkey2($attribute, $generator->getTableSchema()) ){ | ||
|
||
|
||
|
||
|
||
echo " <?php\n"; | ||
?> | ||
$relData[''] = ''; | ||
$relData[Yii::t('app', 'Select')] = $model->getAllDataList<?php echo Inflector::id2camel(str_replace('_id','',strtolower($attribute)), '_')?>(); | ||
echo $form->field($model, '<?=$attribute?>')->dropDownList($relData); | ||
<?php | ||
echo "?>\n\n"; | ||
|
||
}else{ | ||
|
||
echo " <?= " . $generator->generateActiveField($attribute) . " ?>\n\n"; | ||
|
||
} | ||
|
||
} | ||
} | ||
?> | ||
<?php echo "<?php\n"; ?> | ||
/* | ||
*************************************************************************************************** | ||
* * Legba Yii Advanced SAMPLE USAGE (Hey! Change remind <<nameOfYourPorpertyRelations>>) | ||
* [NOTE] if you need show n:n (n:m special) based em Yii2 hasMany()->viaTable() use this sample code: | ||
*************************************************************************************************** | ||
* $relModel = $model->getAllDataListNameOfYourPorpertyRelations(); | ||
* echo $form->field($model, 'nameOfYourPorpertyRelations')->checkboxList($relModel) | ||
*/ | ||
<?php echo "?>\n"; ?> | ||
<div class="form-group"> | ||
<?= "<?= " ?>Html::submitButton($model->isNewRecord ? <?= $generator->generateString('Create') ?> : <?= $generator->generateString('Update') ?>, ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
</div> | ||
|
||
<?= "<?php " ?>ActiveForm::end(); ?> | ||
|
||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
<?php | ||
|
||
use yii\helpers\Inflector; | ||
use yii\helpers\StringHelper; | ||
|
||
/* @var $this yii\web\View */ | ||
/* @var $generator yii\gii\generators\crud\Generator */ | ||
|
||
echo "<?php\n"; | ||
?> | ||
|
||
use yii\helpers\Html; | ||
use yii\widgets\ActiveForm; | ||
|
||
/* @var $this yii\web\View */ | ||
/* @var $model <?= ltrim($generator->searchModelClass, '\\') ?> */ | ||
/* @var $form yii\widgets\ActiveForm */ | ||
?> | ||
|
||
<div class="panel-search <?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-search"> | ||
|
||
<?= "<?php " ?>$form = ActiveForm::begin([ | ||
'action' => ['index'], | ||
'method' => 'get', | ||
]); ?> | ||
|
||
<?php | ||
$count = 0; | ||
foreach ($generator->getColumnNames() as $attribute) { | ||
if (++$count < 6) { | ||
echo " <?= " . $generator->generateActiveSearchField($attribute) . " ?>\n\n"; | ||
} else { | ||
echo " <?php // echo " . $generator->generateActiveSearchField($attribute) . " ?>\n\n"; | ||
} | ||
} | ||
?> | ||
<div class="form-group"> | ||
<?= "<?= " ?>Html::submitButton(<?= $generator->generateString('Search') ?>, ['class' => 'btn btn-primary']) ?> | ||
<?= "<?= " ?>Html::resetButton(<?= $generator->generateString('Reset') ?>, ['class' => 'btn btn-default']) ?> | ||
</div> | ||
|
||
<?= "<?php " ?>ActiveForm::end(); ?> | ||
|
||
</div> |
Oops, something went wrong.