diff --git a/application/admin/command/Crud.php b/application/admin/command/Crud.php index 8ce00df9f8dc6327c5078cd77735d6cbbdc4df24..8cd6d4647d649e7c588aded5eb96367566af3d2e 100755 --- a/application/admin/command/Crud.php +++ b/application/admin/command/Crud.php @@ -359,11 +359,12 @@ class Crud extends Command //验证器 list($validateNamespace, $validateName, $validateFile, $validateArr) = $this->getValidateData($validateModuleName, $validate, $table); - $controllerUrl = strtolower(implode('/', $controllerArr)); + //如果控制器名为双驼峰形式,链接则需转为下划线与一键生成菜单保持一致 + $controllerUrl = strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', implode('/', $controllerArr))); $controllerBaseName = strtolower(implode(DS, $controllerArr)); - //视图文件 - $viewDir = $adminPath . 'view' . DS . $controllerBaseName . DS; + //视图文件 -- 如果控制器名为双驼峰形式,视图目录名则需转为下划线 + $viewDir = $adminPath . 'view' . DS . strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', implode(DS, $controllerArr))) . DS; //最终将生成的文件路径 $javascriptFile = ROOT_PATH . 'public' . DS . 'assets' . DS . 'js' . DS . 'backend' . DS . $controllerBaseName . '.js'; @@ -523,6 +524,7 @@ class Crud extends Command //循环所有字段,开始构造视图的HTML和JS信息 foreach ($columnList as $k => $v) { $field = $v['COLUMN_NAME']; + $langField = mb_ucfirst($field); $itemArr = []; // 这里构建Enum和Set类型的列表数据 if (in_array($v['DATA_TYPE'], ['enum', 'set', 'tinyint'])) { @@ -580,6 +582,7 @@ class Crud extends Command $formEditElement = $this->getReplacedStub('html/select', ['field' => $field, 'fieldName' => $fieldName, 'fieldList' => $this->getFieldListName($field), 'attrStr' => Form::attributes($attrArr), 'selectedValue' => "\$row.{$field}"]); } elseif ($inputType == 'datetime') { $cssClassArr[] = 'datetimepicker'; + $attrArr['placeholder'] = "{:__('Please select')}{:__('{$langField}')}"; $attrArr['class'] = implode(' ', $cssClassArr); $format = "YYYY-MM-DD HH:mm:ss"; $phpFormat = "Y-m-d H:i:s"; @@ -636,6 +639,7 @@ class Crud extends Command $formEditElement = $this->getReplacedStub('html/' . $inputType, ['field' => $field, 'fieldName' => $fieldName, 'fieldList' => $this->getFieldListName($field), 'attrStr' => Form::attributes($attrArr), 'selectedValue' => "\$row.{$field}"]); } elseif ($inputType == 'textarea') { $cssClassArr[] = $this->isMatchSuffix($field, $this->editorSuffix) ? $this->editorClass : ''; + $attrArr['placeholder'] = "{:__('Please input')}{:__('{$langField}')}"; $attrArr['class'] = implode(' ', $cssClassArr); $attrArr['rows'] = 5; $formAddElement = Form::textarea($fieldName, $defaultValue, $attrArr); @@ -656,17 +660,20 @@ class Crud extends Command $formAddElement = $this->getReplacedStub('html/' . $inputType, ['field' => $field, 'fieldName' => $fieldName, 'fieldYes' => $yes, 'fieldNo' => $no, 'attrStr' => Form::attributes($attrArr), 'fieldValue' => $defaultValue, 'fieldSwitchClass' => $defaultValue == $no ? $stateNoClass : '']); $formEditElement = $this->getReplacedStub('html/' . $inputType, ['field' => $field, 'fieldName' => $fieldName, 'fieldYes' => $yes, 'fieldNo' => $no, 'attrStr' => Form::attributes($attrArr), 'fieldValue' => "{\$row.{$field}}", 'fieldSwitchClass' => "{eq name=\"\$row.{$field}\" value=\"{$no}\"}fa-flip-horizontal text-gray{/eq}"]); } elseif ($inputType == 'citypicker') { + $attrArr['placeholder'] = "{:__('Please select')}{:__('{$langField}')}"; $attrArr['class'] = implode(' ', $cssClassArr); $attrArr['data-toggle'] = "city-picker"; $formAddElement = sprintf("