From 1dc9f0da91d23cfb50c7617508d6a113afec5458 Mon Sep 17 00:00:00 2001 From: devlike Date: Thu, 8 Feb 2018 11:06:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/seven/Seven.php | 72 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 extend/seven/Seven.php diff --git a/extend/seven/Seven.php b/extend/seven/Seven.php new file mode 100644 index 00000000..61d80b46 --- /dev/null +++ b/extend/seven/Seven.php @@ -0,0 +1,72 @@ + + * @Since: 2018/1/25 22:40 + */ + +namespace seven; + +use fast\Form; +use app\admin\model\Sites; + +class Seven +{ + /** + * 生成多国语言版本的选择项 + * @param string $name input名称 + * @param string $type input类型(radio|checkbox) + * @param null $selected 选定项 + * @param array $options 扩展选项 + * @return string + */ + public static function build_langs($name, $selected=null, $options=[]) + { + $request = request(); + $MultiLanguages = include EXTEND_PATH.'seven/multilanguage.php'; + $list = []; + + $siteid = isset($options['siteid'])?$options['siteid'] : ''; + $type = isset($options['type'])? $options['type'] : 'radio'; + + //从站点后台进入,只显示当前站点允许的语言版本 + if (!empty($siteid) || !empty($request->param('domain'))) { + if(!empty($siteid)) { + $domain = Sites::get(['id' => $siteid]); + }else{ + $domain = Sites::get(['domain' => $request->param('domain')]); + } + $langs = explode(',', $domain['lang']); + foreach ($langs as $k => $v) { + $list[$v] = $MultiLanguages[$v]; + } + } else { + foreach ($MultiLanguages as $k => $v) { + $list[$k] = $v; + } + } + + $html=[]; + $selected = empty($selected) ? 'zh-cn' : $selected; + //$class = empty($class)? $type.'-inline' : $class; + if ($type == "checkbox") { + $name .= substr($name, -2) != '[]' ? '[]' : ''; + $selected = is_null($selected) ? [] : $selected; + $selected = is_array($selected) ? $selected : explode(',', $selected); + foreach ($list as $k => $v) + { + $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::checkbox($name, $k, in_array($k, $selected), ['id' => "{$name}-{$k}"])); + } + return '
' . implode(' ', $html) . '
'; + + } else { + $selected = is_null($selected) ? key($list) : $selected; + $selected = is_array($selected) ? $selected : explode(',', $selected); + foreach ($list as $k => $v) + { + $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::radio($name, $k, in_array($k, $selected), ['id' => "{$name}-{$k}"])); + } + return '
' . implode(' ', $html) . '
'; + } + } +} \ No newline at end of file