示例#1
0
use yii\gii\plus\helpers\Helper;
use yii\helpers\Inflector;
/* @var $this yii\web\View */
/* @var $generator yii\gii\plus\generators\fixture\Generator */
/* @var $ns string */
/* @var $modelName string */
/* @var $modelClass string|yii\boost\db\ActiveRecord */
/* @var $fixtureNs string */
/* @var $fixtureName string */
/* @var $fixtureClass string|yii\boost\test\ActiveFixture */
/* @var $baseFixtureName string */
/* @var $baseFixtureClass string|yii\boost\test\ActiveFixture */
/* @var $dataFile string */
/* @var $tableSchema yii\gii\plus\db\TableSchema */
$uses = [$baseFixtureClass];
Helper::sortUses($uses);
echo '<?php

namespace ', $fixtureNs, ';

use ', implode(';' . "\n" . 'use ', $uses), ';

/**
 * ', Inflector::titleize($fixtureName), ' fixture
 * @see \\', $modelClass, '
 */
class ', $fixtureName, ' extends ', $baseFixtureName, '
{

    public $modelClass = \'', $modelClass, '\';
';
示例#2
0
    /**
     * @inheritdoc
     */
    public function render($template, $params = [])
    {
        $output = parent::render($template, $params);
        switch ($template) {
            case 'model.php':
                // fix uses
                $tableName = $params['tableName'];
                if (array_key_exists($tableName, $this->relationUses) && $this->relationUses[$tableName]) {
                    $uses = array_unique($this->relationUses[$tableName]);
                    Helper::sortUses($uses);
                    $output = str_replace('use Yii;', 'use Yii;' . "\n" . 'use ' . implode(';' . "\n" . 'use ', $uses) . ';', $output);
                }
                // fix rules
                $output = preg_replace('~\'targetClass\' \\=\\> (\\w+)Base\\:\\:className\\(\\)~', '\'targetClass\' => $1::className()', $output);
                // fix relations
                $nsClassName = $this->ns . '\\' . $params['className'];
                if (class_exists($nsClassName) && is_subclass_of($nsClassName, 'yii\\boost\\db\\ActiveRecord')) {
                    $model = new $nsClassName();
                    $output = preg_replace_callback('~@return \\\\(yii\\\\db\\\\ActiveQuery)\\s+\\*/\\s+public function ([^\\(]+)\\(\\)~', function ($match) use($model) {
                        if (method_exists($model, $match[2])) {
                            return str_replace($match[1], get_class(call_user_func([$model, $match[2]])) . '|\\' . $match[1], $match[0]);
                        } else {
                            return $match[0];
                        }
                    }, $output);
                }
                $params['relationUses'] = $this->relationUses;
                if (array_key_exists($tableName, $this->allRelations)) {
                    $params['allRelations'] = $this->allRelations[$tableName];
                } else {
                    $params['allRelations'] = [];
                }
                if (array_key_exists($tableName, $this->singularRelations)) {
                    $params['singularRelations'] = $this->singularRelations[$tableName];
                } else {
                    $params['singularRelations'] = [];
                }
                if (array_key_exists($tableName, $this->pluralRelations)) {
                    $params['pluralRelations'] = $this->pluralRelations[$tableName];
                } else {
                    $params['pluralRelations'] = [];
                }
                $output = preg_replace('~\\}(\\s*)$~', parent::render('model-part.php', $params) . '}$1', $output);
                break;
            case 'query.php':
                $code = <<<CODE
    /*public function active()
    {
        return \$this->andWhere('[[status]]=1');
    }*/

CODE;
                $output = str_replace($code, '', $output);
                $output = preg_replace('~\\}(\\s*)$~', parent::render('query-part.php', $params) . '}$1', $output);
                break;
        }
        $output = preg_replace_callback('~(@return |return new )\\\\((?:\\w+\\\\)*\\w+\\\\query)\\\\base\\\\(\\w+Query)Base~', function ($match) {
            $nsClassName = $match[2] . '\\' . $match[3];
            if (class_exists($nsClassName)) {
                return $match[1] . '\\' . $nsClassName;
            } else {
                return $match[0];
            }
        }, $output);
        $output = preg_replace_callback('~(@see | @return |\\[\\[)\\\\((?:\\w+\\\\)*\\w+)\\\\base\\\\(\\w+)Base~', function ($match) {
            $nsClassName = $match[2] . '\\' . $match[3];
            if (class_exists($nsClassName)) {
                return $match[1] . '\\' . $nsClassName;
            } else {
                return $match[0];
            }
        }, $output);
        return $output;
    }