laravel博客 (config)
Posted 进阶丶之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel博客 (config)相关的知识,希望对你有一定的参考价值。
对于一个项目,网站配置是相当重要的,今天记录一下,网站上线基础的配置信息
1、建立配置表,必须包含的两个字段是name,content,也就是说配置项和配置值。
但是有一种情况,对于配置信息,是多种多样的,例如说文本域,输入框,单选框,因此需要对配置值进行修饰,需要再加两个字段,field_type,field_value;(类性值只有在单选框中才有用);
2、配置信息的显示大概应该如下图。基本存在三种类型,对于内容的修饰需要在控制器中进行,根据不同的类型进行显示。
由于存在三种类型,使用switch进行判断,代码如下,在单选框的选择中稍微麻烦一点,需要先将类性值取出来.
public function index(){ $data = Config::orderBy(\'conf_order\',\'asc\')->get(); foreach ($data as $key => $value) { switch ($value->field_type) { case \'input\': $data[$key]->_html = "<input type=\'text\' class=\'lg\' name=\'conf_content[]\' value=\'".$value->conf_content."\'>"; break; case \'textarea\': $data[$key]->_html = "<textarea name=\'conf_content[]\' cols=\'30\' rows=\'10\'>".$value->conf_content."</textarea>"; break; case \'radio\': $arr = preg_split(\'/,| /\',$value->field_value); foreach ($arr as $k => $v) { $arr1 = explode(\'|\',$v); $c = $value->conf_content == $arr1[0]?\'checked\':\'\'; $data[$key]->_html .= "<input type=\'radio\' value=\'$arr1[0]\' name=\'conf_content[]\' ".$c.">$arr1[1] "; } break; } } return view(\'admin.config.index\',compact(\'data\')); }
需要注意的是:在显示之后每一条配置内容的name是相同的,这个时候如果提交修改配置信息,只能修改一条,因此在name中加上【】,使其变为数组,便可以进行多条信息的更新。
3、配置项的更新
修改配置项需在每一条的配置项上加上这个配置的id,否则不知道更新那一条内容,由于多条更新,需要把id的name也改为数组。如下
<input type="hidden" name="conf_id[]" value="{{$v->conf_id}}"> {!!$v->_html!!} #控制器中的form类型输出需要使用 {! !} 否则自动过滤
然后进行提交更新操作,提交表单得到以下结果
得到了两个数字,分别为id的和内容的数组,但是有一个共同点就是他们的key是相同的,通过这一点进行更新操作,代码如下
foreach ($input[\'conf_id\'] as $key => $value) { Config::where(\'conf_id\',$value)->update([\'conf_content\'=>$input[\'conf_content\'][$key]]); }
4、生成配置文件,随时调用配置信息
public function putFile(){ $config = Config::pluck(\'conf_content\',\'conf_name\')->all(); $url = base_path().\'\\config\\web.php\'; $confstr = "<?php return ".var_export($config,true).";"; file_put_contents($url,$confstr); }
生成配置文件以后,在全局都可以进行调用,方法如下
Config(‘web.conf_name’)
以上是关于laravel博客 (config)的主要内容,如果未能解决你的问题,请参考以下文章
需要一种有效的方法来避免使用 Laravel 5 重复代码片段
没有 Laravel 的模拟 Illuminate Config 外观