mirror of https://gitee.com/karson/fastadmin.git
commit
524c6c63e1
|
|
@ -360,10 +360,17 @@ class Crud extends Command
|
||||||
list($validateNamespace, $validateName, $validateFile, $validateArr) = $this->getValidateData($validateModuleName, $validate, $table);
|
list($validateNamespace, $validateName, $validateFile, $validateArr) = $this->getValidateData($validateModuleName, $validate, $table);
|
||||||
|
|
||||||
$controllerUrl = strtolower(implode('/', $controllerArr));
|
$controllerUrl = strtolower(implode('/', $controllerArr));
|
||||||
$controllerBaseName = strtolower(implode(DS, $controllerArr));
|
|
||||||
|
//处理基础文件名,取消所有下划线并转换为小写
|
||||||
|
$baseNameArr = $controllerArr;
|
||||||
|
$baseFileName = Loader::parseName(array_pop($baseNameArr), 1);
|
||||||
|
array_push($baseNameArr, $baseFileName);
|
||||||
|
$controllerBaseName = strtolower(implode(DS, $baseNameArr));
|
||||||
|
|
||||||
//视图文件
|
//视图文件
|
||||||
$viewDir = $adminPath . 'view' . DS . $controllerBaseName . DS;
|
$viewArr = $controllerArr;
|
||||||
|
array_unshift($viewArr, 'view');
|
||||||
|
$viewDir = $adminPath . strtolower(implode(DS, $viewArr)) . DS;
|
||||||
|
|
||||||
//最终将生成的文件路径
|
//最终将生成的文件路径
|
||||||
$javascriptFile = ROOT_PATH . 'public' . DS . 'assets' . DS . 'js' . DS . 'backend' . DS . $controllerBaseName . '.js';
|
$javascriptFile = ROOT_PATH . 'public' . DS . 'assets' . DS . 'js' . DS . 'backend' . DS . $controllerBaseName . '.js';
|
||||||
|
|
@ -392,12 +399,20 @@ class Crud extends Command
|
||||||
unlink($v);
|
unlink($v);
|
||||||
}
|
}
|
||||||
//删除空文件夹
|
//删除空文件夹
|
||||||
if ($v == $modelFile) {
|
switch ($v) {
|
||||||
$this->removeEmptyBaseDir($v, $modelArr);
|
case $modelFile:
|
||||||
} elseif ($v == $validateFile) {
|
$this->removeEmptyBaseDir($v, $modelArr);
|
||||||
$this->removeEmptyBaseDir($v, $validateArr);
|
break;
|
||||||
} else {
|
case $validateFile:
|
||||||
$this->removeEmptyBaseDir($v, $controllerArr);
|
$this->removeEmptyBaseDir($v, $validateArr);
|
||||||
|
break;
|
||||||
|
case $addFile:
|
||||||
|
case $editFile:
|
||||||
|
case $indexFile:
|
||||||
|
$this->removeEmptyBaseDir($v, $viewArr);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$this->removeEmptyBaseDir($v, $controllerArr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -848,7 +863,6 @@ class Crud extends Command
|
||||||
$relation['relationMode'] = $relation['relationMode'] == 'hasone' ? 'hasOne' : 'belongsTo';
|
$relation['relationMode'] = $relation['relationMode'] == 'hasone' ? 'hasOne' : 'belongsTo';
|
||||||
|
|
||||||
//关联字段
|
//关联字段
|
||||||
$relation['relationForeignKey'] = $relation['relationForeignKey'];
|
|
||||||
$relation['relationPrimaryKey'] = $relation['relationPrimaryKey'] ? $relation['relationPrimaryKey'] : $priKey;
|
$relation['relationPrimaryKey'] = $relation['relationPrimaryKey'] ? $relation['relationPrimaryKey'] : $priKey;
|
||||||
|
|
||||||
//预载入的方法
|
//预载入的方法
|
||||||
|
|
@ -883,38 +897,38 @@ class Crud extends Command
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成控制器文件
|
// 生成控制器文件
|
||||||
$result = $this->writeToFile('controller', $data, $controllerFile);
|
$this->writeToFile('controller', $data, $controllerFile);
|
||||||
// 生成模型文件
|
// 生成模型文件
|
||||||
$result = $this->writeToFile('model', $data, $modelFile);
|
$this->writeToFile('model', $data, $modelFile);
|
||||||
|
|
||||||
if ($relations) {
|
if ($relations) {
|
||||||
foreach ($relations as $i => $relation) {
|
foreach ($relations as $i => $relation) {
|
||||||
$relation['modelNamespace'] = $data['modelNamespace'];
|
$relation['modelNamespace'] = $data['modelNamespace'];
|
||||||
if (!is_file($relation['relationFile'])) {
|
if (!is_file($relation['relationFile'])) {
|
||||||
// 生成关联模型文件
|
// 生成关联模型文件
|
||||||
$result = $this->writeToFile('relationmodel', $relation, $relation['relationFile']);
|
$this->writeToFile('relationmodel', $relation, $relation['relationFile']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 生成验证文件
|
// 生成验证文件
|
||||||
$result = $this->writeToFile('validate', $data, $validateFile);
|
$this->writeToFile('validate', $data, $validateFile);
|
||||||
// 生成视图文件
|
// 生成视图文件
|
||||||
$result = $this->writeToFile('add', $data, $addFile);
|
$this->writeToFile('add', $data, $addFile);
|
||||||
$result = $this->writeToFile('edit', $data, $editFile);
|
$this->writeToFile('edit', $data, $editFile);
|
||||||
$result = $this->writeToFile('index', $data, $indexFile);
|
$this->writeToFile('index', $data, $indexFile);
|
||||||
if ($recyclebinHtml) {
|
if ($recyclebinHtml) {
|
||||||
$result = $this->writeToFile('recyclebin', $data, $recyclebinFile);
|
$this->writeToFile('recyclebin', $data, $recyclebinFile);
|
||||||
$recyclebinTitle = in_array('title', $fieldArr) ? 'title' : (in_array('name', $fieldArr) ? 'name' : '');
|
$recyclebinTitle = in_array('title', $fieldArr) ? 'title' : (in_array('name', $fieldArr) ? 'name' : '');
|
||||||
$recyclebinTitleJs = $recyclebinTitle ? "\n {field: '{$recyclebinTitle}', title: __('" . (ucfirst($recyclebinTitle)) . "'), align: 'left'}," : '';
|
$recyclebinTitleJs = $recyclebinTitle ? "\n {field: '{$recyclebinTitle}', title: __('" . (ucfirst($recyclebinTitle)) . "'), align: 'left'}," : '';
|
||||||
$data['recyclebinJs'] = $this->getReplacedStub('mixins/recyclebinjs', ['recyclebinTitleJs' => $recyclebinTitleJs, 'controllerUrl' => $controllerUrl]);
|
$data['recyclebinJs'] = $this->getReplacedStub('mixins/recyclebinjs', ['recyclebinTitleJs' => $recyclebinTitleJs, 'controllerUrl' => $controllerUrl]);
|
||||||
}
|
}
|
||||||
// 生成JS文件
|
// 生成JS文件
|
||||||
$result = $this->writeToFile('javascript', $data, $javascriptFile);
|
$this->writeToFile('javascript', $data, $javascriptFile);
|
||||||
// 生成语言文件
|
// 生成语言文件
|
||||||
if ($langList) {
|
if ($langList) {
|
||||||
$result = $this->writeToFile('lang', $data, $langFile);
|
$this->writeToFile('lang', $data, $langFile);
|
||||||
}
|
}
|
||||||
} catch (\think\exception\ErrorException $e) {
|
} catch (think\exception\ErrorException $e) {
|
||||||
throw new Exception("Code: " . $e->getCode() . "\nLine: " . $e->getLine() . "\nMessage: " . $e->getMessage() . "\nFile: " . $e->getFile());
|
throw new Exception("Code: " . $e->getCode() . "\nLine: " . $e->getLine() . "\nMessage: " . $e->getMessage() . "\nFile: " . $e->getFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -999,13 +1013,17 @@ EOD;
|
||||||
if (count($parseArr) > 1) {
|
if (count($parseArr) > 1) {
|
||||||
$parentDir = dirname($parseFile);
|
$parentDir = dirname($parseFile);
|
||||||
for ($i = 0; $i < count($parseArr); $i++) {
|
for ($i = 0; $i < count($parseArr); $i++) {
|
||||||
$iterator = new \FilesystemIterator($parentDir);
|
try {
|
||||||
$isDirEmpty = !$iterator->valid();
|
$iterator = new \FilesystemIterator($parentDir);
|
||||||
if ($isDirEmpty) {
|
$isDirEmpty = !$iterator->valid();
|
||||||
rmdir($parentDir);
|
if ($isDirEmpty) {
|
||||||
$parentDir = dirname($parentDir);
|
rmdir($parentDir);
|
||||||
} else {
|
$parentDir = dirname($parentDir);
|
||||||
return true;
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (\UnexpectedValueException $e) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1050,35 +1068,36 @@ EOD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取已解析相关信息
|
* 获取已解析相关信息
|
||||||
* @param $module
|
* @param string $module 模块名称
|
||||||
* @param $name
|
* @param string $name 自定义名称
|
||||||
* @param $table
|
* @param string $table 数据表名
|
||||||
* @param $type
|
* @param string $type 解析类型,本例中为controller、model、validate
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function getParseNameData($module, $name, $table, $type)
|
protected function getParseNameData($module, $name, $table, $type)
|
||||||
{
|
{
|
||||||
$arr = [];
|
$arr = [];
|
||||||
if (!$name) {
|
if (!$name) {
|
||||||
$arr = explode('_', strtolower($table));
|
$parseName = Loader::parseName($table, 1);
|
||||||
|
$parseArr = [$table];
|
||||||
} else {
|
} else {
|
||||||
$name = str_replace(['.', '/', '\\'], '/', $name);
|
$name = str_replace(['.', '/', '\\'], '/', $name);
|
||||||
$arr = explode('/', $name);
|
$arr = explode('/', $name);
|
||||||
|
$parseName = ucfirst(array_pop($arr));
|
||||||
|
$parseArr = $arr;
|
||||||
|
array_push($parseArr, $parseName);
|
||||||
}
|
}
|
||||||
$parseName = ucfirst(array_pop($arr));
|
|
||||||
$appNamespace = Config::get('app_namespace');
|
$appNamespace = Config::get('app_namespace');
|
||||||
$parseNamespace = "{$appNamespace}\\{$module}\\{$type}" . ($arr ? "\\" . implode("\\", $arr) : "");
|
$parseNamespace = "{$appNamespace}\\{$module}\\{$type}" . ($arr ? "\\" . implode("\\", $arr) : "");
|
||||||
$moduleDir = APP_PATH . $module . DS;
|
$moduleDir = APP_PATH . $module . DS;
|
||||||
$parseFile = $moduleDir . $type . DS . ($arr ? implode(DS, $arr) . DS : '') . $parseName . '.php';
|
$parseFile = $moduleDir . $type . DS . ($arr ? implode(DS, $arr) . DS : '') . $parseName . '.php';
|
||||||
$parseArr = $arr;
|
|
||||||
$parseArr[] = $parseName;
|
|
||||||
return [$parseNamespace, $parseName, $parseFile, $parseArr];
|
return [$parseNamespace, $parseName, $parseFile, $parseArr];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入到文件
|
* 写入到文件
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @param string $pathname
|
* @param string $pathname
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
|
|
@ -1099,7 +1118,7 @@ EOD;
|
||||||
/**
|
/**
|
||||||
* 获取替换后的数据
|
* 获取替换后的数据
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getReplacedStub($name, $data)
|
protected function getReplacedStub($name, $data)
|
||||||
|
|
@ -1136,7 +1155,6 @@ EOD;
|
||||||
protected function getLangItem($field, $content)
|
protected function getLangItem($field, $content)
|
||||||
{
|
{
|
||||||
if ($content || !Lang::has($field)) {
|
if ($content || !Lang::has($field)) {
|
||||||
$itemArr = [];
|
|
||||||
$this->fieldMaxLen = strlen($field) > $this->fieldMaxLen ? strlen($field) : $this->fieldMaxLen;
|
$this->fieldMaxLen = strlen($field) > $this->fieldMaxLen ? strlen($field) : $this->fieldMaxLen;
|
||||||
$content = str_replace(',', ',', $content);
|
$content = str_replace(',', ',', $content);
|
||||||
if (stripos($content, ':') !== false && stripos($content, ',') && stripos($content, '=') !== false) {
|
if (stripos($content, ':') !== false && stripos($content, ',') && stripos($content, '=') !== false) {
|
||||||
|
|
@ -1165,7 +1183,7 @@ EOD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 读取数据和语言数组列表
|
* 读取数据和语言数组列表
|
||||||
* @param array $arr
|
* @param array $arr
|
||||||
* @param boolean $withTpl
|
* @param boolean $withTpl
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
|
|
@ -1285,8 +1303,8 @@ EOD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否符合指定后缀
|
* 判断是否符合指定后缀
|
||||||
* @param string $field 字段名称
|
* @param string $field 字段名称
|
||||||
* @param mixed $suffixArr 后缀
|
* @param mixed $suffixArr 后缀
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
protected function isMatchSuffix($field, $suffixArr)
|
protected function isMatchSuffix($field, $suffixArr)
|
||||||
|
|
@ -1353,7 +1371,7 @@ EOD;
|
||||||
* @param string $field
|
* @param string $field
|
||||||
* @param string $datatype
|
* @param string $datatype
|
||||||
* @param string $extend
|
* @param string $extend
|
||||||
* @param array $itemArr
|
* @param array $itemArr
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getJsColumn($field, $datatype = '', $extend = '', $itemArr = [])
|
protected function getJsColumn($field, $datatype = '', $extend = '', $itemArr = [])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue