后台文章分类页Ajax异步修改分类排序的详细步骤
在路由文件routes.php
中配置修改文章分类排序的路由,代码如下
// 修改文章分类排序路由
Route::post('cate/changeorder', 'CategoryController@changeOrder');
在CategoryController.php
文件中编写修改文章分类排序的方法changeOrder
,具体代码如下
// 修改文章分类排序
public function changeOrder()
{
$input = Input::all();
$cate = Category::find($input['cate_id']);
$cate->cate_order = $input['cate_order'];
$res = $cate->update();
if ($res) {
$data = [
'status' => 0,
'msg' => '分类排序更新成功!',
];
} else {
$data = [
'status' => 1,
'msg' => '分类排序更新失败,请稍后重试!',
];
}
return $data;
}
将layer
文件拷贝到resources
下的org
下
将layer
文件下的layer.js
引入到视图模板views
下的layouts
下的公共php文件admin.blade.php
中,具体代码如下
将视图模板下的admin
下的category
下的index.blade.php
中的展示分类排序的行改为
在视图模板下的admin
下的category
下的index.blade.php
中添加如下js代码
* 在`Category.php`模型文件中修改获取分类列表数据的方法(按照排序的升序进行获取数据),具体代码如下
objc /* * 获取分类列表数据 */ public function tree() { $categorys = $this->orderBy('cate_order','asc')->get(); return $this->getTree($categorys,'cate_name','cate_id','cate_pid'); } ```
后台文章分类添加模板分配的详细步骤
将视图模板中的add.html
拷贝到category
下并修改名称为add.blade.php
,并利用admin.blade.php
重新调整代码结构
根据数据库中blog_category
表的字段设计页面的内容
修改导航栏的链接
在CategoryController.php
的create
方法中返回add.blade.php
视图
后台文章父级分类嵌入的详细步骤
修改CategoryController.php
的create
方法,具体代码如下
//get.admin/category/create 添加分类
public function create()
{
$data = Category::where('cate_pid',0)->get();
return view('admin.category.add',compact('data'));
}
编写CategoryController.php
的store
方法,具体代码如下
//post.admin/category 添加分类提交
public function store()
{
$input = Input::all();
dd($input);
}
在add.blade.php
文件中修改父级分类选项的代码,具体如下
==顶级分类==
@foreach($data as $d)
{{$d->cate_name}}
@endforeach
后台文章分类添加数据Validation验证的详细步骤
在CategoryController.php
文件中的添加分类提交的方法store
中,进行后台文章分类添加数据Validation验证,具体代码如下
//post.admin/category 添加分类提交
public function store()
{
$input = Input::except('_token');
$rules = [
'cate_name' => 'required',
];
$message = [
'cate_name.required' => '分类名称不能为空!',
];
// 表单输入验证
$validator = Validator::make($input,$rules,$message);
if ($validator->passes()) {
return redirect('admin/category');
} else {
return back()->withErrors($validator);
}
}
在add.blade.php
文件写上验证错误信息提示的代码,具体如下
后台文章分类编辑的详细步骤
在CategoryController.php
文件中编写edit
方法,具体代码如下
//get.admin/category/{category}/edit 编辑分类
public function edit($cate_id)
{
$field = Category::find($cate_id);
$data = Category::where('cate_pid',0)->get();
return view('admin.category.edit',compact('field','data'));
}
拷贝add.blade.php
到当前文件并修改名称为edit.blade.php
,并修改编辑选项的value
值
修改edit.blade.php
文件中的顶级分类
代码如下
==顶级分类==
@foreach($data as $d)
cate_id==$field->cate_pid) selected @endif
>{{$d->cate_name}}
@endforeach
* 修改`category`下的`index.blade.php`中的修改选项的链接为`修改 `
后台文章分类模拟PUT方法提交表单的象征步骤
在CategoryController.php
文件中编写update
方法,具体代码如下
//put.admin/category/{category} 更新分类
public function update($cate_id)
{
$input = Input::except('_token','_method');
$re = Category::where('cate_id',$cate_id)->update($input);
if($re){
return redirect('admin/category');
}else{
return back()->with('errors','分类信息更新失败,请稍后重试!');
}
}
在edit.blade.php
文件中的
标签中添加如下代码
{{csrf_field()}}
后台文章分类删除及Ajax异步模拟DELETE方法的详细步骤
在CategoryController.php
的destory
方法中添加如下代码
//delete.admin/category/{category} 删除单个分类
public function destroy($cate_id)
{
$res = Category::where('cate_id',$cate_id)->delete();
// 删除顶级分类时,底下的分类变成顶级分类
Category::where('cate_pid',$cate_id)->update(['cate_pid'=>0]);
if ($res) {
$data = [
'status' => 0,
'msg' => '分类删除成功!',
];
} else {
$data = [
'status' => 1,
'msg' => '分类删除失败,请稍后重试!',
];
}
return $data;
}
在category
下的index.blade.php
文件中修改删除的链接为删除
,并添加删除分类的JS代码,具体代码如下
// 删除分类
function delCate(cate_id) {
layer.confirm('您确定要删除这个分类吗?', {
btn:['确定', '取消']
}, function(){
$.post("{{url('admin/category')}}/"+cate_id,{'_method':'delete','_token':"{{csrf_token()}}"}, function (data) {
if(data.status == 0) {
location.href = location.href;
layer.msg(data.msg, {icon:6});
} else {
layer.msg(data.msg, {icon:5});
}
})
});
}
文章
数据库文章表的创建及添加文章模板导入的详细步骤
新建数据表blog_article
使用命令php artisan make:controller ArticleController
创建文章控制器
在route.php
文件中配置文章的资源路由,具体代码如下
// 文章资源路由
Route::resource('article', 'ArticleController');
在ArticleController
控制器中添加全部文章列表index
方法,具体代码如下
//get.admin/article 全部文章列表
public function index()
{
echo '全部文章列表';
}
在resources
下的views
下的admin
下新建文件article
,并拷贝category
下的add.blade.php
到该文件下,做文字显示的修改工作
在ArticleController
控制器中添加文章create
方法,具体代码如下
//get.admin/article 全部文章列表
//get.admin/article/create 添加文章
public function create()
{
$data = [];
return view('admin.article.add',compact('data'));
}
后台文章添加及百度编辑器Ueditor嵌入的详细步骤
将下载好的编辑器的文件夹拷贝到resources
下的org
下,并重新命名为ueditor
修改resources
下的views
下的admin
下的article
下的add.blade.php
文件中的
里面的代码,具体代码如下
在数据表blog_article
中添加cate_id
文章分类字段
在ArticleController
控制器中修改添加文章create
方法,具体代码如下
//get.admin/article/create 添加文章
public function create()
{
$data = (new Category)->tree();
return view('admin.article.add',compact('data'));
}
后台文章添加缩略图上传之uploadify插件引入的详细步骤
将下载好的uploadify插件的文件夹拷贝到resources
下的org
下
修改resources
下的views
下的admin
下的article
下的add.blade.php
文件中的缩略图部分的代码,具体代码如下
缩略图:
后台文章添加缩略图上传之文件存储的详步骤
修改commonController.php
中的upload
方法,具体代码如下
//图片上传
public function upload()
{
$file = Input::file('Filedata');
if ($file -> isValid()) {
$entension = $file -> getClientOriginalExtension();
// 上传文件的后缀
$newName = date('YmdHis').mt_rand(100,999).'.'.$entension;
// 上传文件的路径
$path = $file -> move(base_path().'/uploads',$newName);
$filepath = 'uploads/'.$newName;
return $filepath;
}
}
修改resources
下的views
下的admin
下的article
下的add.blade.php
文件中的缩略图部分的代码,具体代码如下
缩略图:
后台文章添加数据及Validation验证的详细步骤
使用命令php artisan make:mode Article
创建文章模型
修改文章模型的命名空间并添加相应的属性
在ArticleController.php
文章控制器中添加添加文章提交的方法store
,具体代码如下
//post.admin/article 添加文章提交
public function store()
{
$input = Input::except('_token');
$input['art_time'] = time();
$rules = [
'art_title'=>'required',
'art_content'=>'required',
];
$message = [
'art_title.required'=>'文章名称不能为空!',
'art_content.required'=>'文章内容不能为空!',
];
$validator = Validator::make($input,$rules,$message);
if($validator->passes()){
$re = Article::create($input);
if($re){
return redirect('admin/article');
}else{
return back()->with('errors','数据填充失败,请稍后重试!');
}
}else{
return back()->withErrors($validator);
}
}
后台文章页列表展示及分页功能实现的详细步骤
在ArticleController.php
文章控制器中修改全部文章列表的方法index
,具体代码如下
//get.admin/article 全部文章列表
public function index()
{
$data = Article::orderBy('art_id','desc')->paginate(1);
return view('admin.article.index',compact('data'));
}
将视图模板中的list.html
拷贝到article
下并重新命名为为index.blade.php
,并利用admin.blade.php
重新调整代码结构,其中form
表单中和样式布局的具体代码如下
后台文章编辑的详细步骤
在ArticleController.php
文章控制器中添加编辑文章列表的方法edit
,具体代码如下
//get.admin/article/{article}/edit 编辑文章
public function edit($art_id)
{
$data = (new Category)->tree();
$field = Article::find($art_id);
return view('admin.article.edit',compact('data','field'));
}
拷贝视图模板article
下的add.blade.php
并重新命名为为edit.blade.php
,并利用admin.blade.php
重新调整代码结构,其中form
表单中和样式布局的具体代码如下
```
* 将视图模板`article`下的`index.blade.php`中修改的链接改为`修改 `
* 在`ArticleController.php`文章控制器中添加编辑文章列表的方法`update`,具体代码如下
```objc
//put.admin/article/{article} 更新文章
public function update($art_id)
{
$input = Input::except('_token','_method');
$re = Article::where('art_id',$art_id)->update($input);
if($re){
return redirect('admin/article');
}else{
return back()->with('errors','文章更新失败,请稍后重试!');
}
}
```
后台文章删除的详细步骤
在ArticleController.php
文章控制器中添加编辑文章列表的方法destroy
,具体代码如下
//delete.admin/article/{article} 删除单个文章
public function destroy($art_id)
{
$re = Article::where('art_id',$art_id)->delete();
if($re){
$data = [
'status' => 0,
'msg' => '文章删除成功!',
];
}else{
$data = [
'status' => 1,
'msg' => '文章删除失败,请稍后重试!',
];
}
return $data;
}
在视图模板article
下的index.blade.php
添加删除确认的弹框,具体代码如下
```
* 将视图模板`article`下的`index.blade.php`中删除的链接改为`删除 `
* 修改视图模板`style`下的`index.blade.php`中左侧列表,具体代码如下
```objc
```
友情链接模块
友情链接模块使用Migrations数据迁移创建数据表的详细步骤
使用命令php artisan make:migration create_links_table
创建数据库迁移文件
数据库迁移文件中的代码如下所示
public function up()
{
Schema::create('links', function (Blueprint $table) {
$table->engine = 'MyISAM';
$table->increments('link_id');
$table->string('link_name')->default('')->comment('//名称');
$table->string('link_title')->default('')->comment('//标题');
$table->string('link_url')->default('')->comment('//链接');
$table->integer('link_order')->default('')->comment('//排序');
});
}
public function down()
{
Schema::drop('links');
}
使用命令php artisan migrate
执行创建数据库迁移文件
友情链接模块使用Seeding填充测试数据的详细步骤
使用php artisan make:seeder LinksTableSeeder
命令创建种子文件
在php artisan make:seeder LinksTableSeeder
文件中添加如下代码
public function run()
{
$data = [
[
'link_name' => '后盾网',
'link_title' => '国内口碑最好',
'link_url' => 'http://www.houdunwang.com',
'link_order' => 1,
],
[
'link_name' => '后盾论坛',
'link_title' => '人人做后盾',
'link_url' => 'http://bbs.houdunwang.com',
'link_order' => 2,
]
];
DB::table('links')->insert($data);
}
在DatabaseSeeder.php
中修改代码,具体如下
public function run()
{
$this->call(LinksTableSeeder::class);
}
使用php artisan db:seed
命令执行种子文件,填充测试数据
友情链接模块列表页面展示的详细步骤
在routes.php
中配置友情链接的资源路由,具体代码是Route::resource('links', 'LinksController');
使用命令php artisan make:controller LinksController
创建友情链接控制器
使用命令php artisan make:mode Links
创建友情链接模型
在LinksController.php
文章控制器中添加全部友情链接列表的方法index
,具体代码如下
//get.admin/links 全部友情链接列表
public function index()
{
$data = Links::orderBy('link_order','asc')->get();
return view('admin.links.index',compact('data'));
}
拷贝resources
文件下的views
下的category
到当前文件并重新命名为links
修改links
下的index.blade.php
文件中的代码
友情链接模块Ajax异步修改排序的详细步骤
在routes.php
中配置修改友情链接排序的路由,具体代码是Route::post('links/changeorder', 'LinksController@changeOrder');
在LinksController.php
文章控制器中添加修改友情链接排序的方法changeOrder
,具体代码如下
public function changeOrder()
{
$input = Input::all();
$links = Links::find($input['link_id']);
$links->link_order = $input['link_order'];
$re = $links->update();
if($re){
$data = [
'status' => 0,
'msg' => '友情链接排序更新成功!',
];
}else{
$data = [
'status' => 1,
'msg' => '友情链接排序更新失败,请稍后重试!',
];
}
return $data;
}
在LinksController.php
文章控制器中添加修改友情链接排序的方法show
,具体代码如下
//get.admin/category/{category} 显示单个分类信息
public function show()
{
}
修改links
下的index.blade.php
文件中的代码
友情链接模块之友情链接添加的详细步骤
在LinksController.php
文章控制器中添加全部友情链接列表的方法create
,具体代码如下
//get.admin/links/create 添加友情链接
public function create()
{
return view('admin.links.add');
}
修改links
下的add.blade.php
文件中的代码
在LinksController.php
文章控制器中添加全部友情链接列表的方法store
,具体代码如下
//post.admin/links 添加友情链接提交
public function store()
{
$input = Input::except('_token');
$rules = [
'link_name'=>'required',
'link_url'=>'required',
];
$message = [
'link_name.required'=>'友情链接名称不能为空!',
'link_url.required'=>'友情链接URL不能为空!',
];
$validator = Validator::make($input,$rules,$message);
if($validator->passes()){
$re = Links::create($input);
if($re){
return redirect('admin/links');
}else{
return back()->with('errors','友情链接失败,请稍后重试!');
}
}else{
return back()->withErrors($validator);
}
}
友情链接模块之友情链接修改的详细步骤
在LinksController.php
友情链接控制器中添加全部友情链接列表的方法edit
,具体代码如下
//get.admin/links/{links}/edit 编辑友情链接
public function edit($link_id)
{
$field = Links::find($link_id);
return view('admin.links.edit',compact('field'));
}
修改links
下的edit.blade.php
文件中的代码
在LinksController.php
友情链接控制器中添加全部友情链接列表的方法destroy
,具体代码如下
//delete.admin/links/{links} 删除友情链接
public function destroy($link_id)
{
$re = Links::where('link_id',$link_id)->delete();
if($re){
$data = [
'status' => 0,
'msg' => '友情链接删除成功!',
];
}else{
$data = [
'status' => 1,
'msg' => '友情链接删除失败,请稍后重试!',
];
}
return $data;
}
在links
下的index.blade.php
文件中添加如下的代码
//删除友情链接
function delLinks(link_id) {
layer.confirm('您确定要删除这个链接吗?', {
btn: ['确定','取消'] //按钮
}, function(){
$.post("{{url('admin/links/')}}/"+link_id,{'_method':'delete','_token':"{{csrf_token()}}"},function (data) {
if(data.status==0){
location.href = location.href;
layer.msg(data.msg, {icon: 6});
}else{
layer.msg(data.msg, {icon: 5});
}
});
// layer.msg('的确很重要', {icon: 1}); }, function(){
});
}
```
在style
下的index.blade.php
文件中修改系统设置下的代码具体的代码如下
自定义导航模块
在友情链接模块基础上完成自定义导航模块的详细步骤
创建数据表blog_liks
分别在对应的控制器,模型和视图文件下进行拷贝,并做相应的修改
网站配置模块
数据表创建
创建数据表名为blog_config
,并添加相应的数据表字段
添加网站配置项
// 网站配置的资源路由
Route::resource('config', 'ConfigController');
拷贝LinksController.php
友情链接控制器到当前文件内并重新命名为ConfigController.php
,并修改网站配置控制器中的代码
拷贝Links.php
友情链接模型到当前文件内并重新命名为Config.php
,并修改网站配置模型中的代码
拷贝resources
下的views
下的links
友情链接到当前文件内并重新命名为config
修改resources
下的views
下的config
文件下的add.blade.php
中的代码
网站配置项列表以及异步修改排序
修改resources
下的views
下的config
文件下的index.blade.php
中的代码
在route.php
文件中配置网站配置的资源路由
// 修改网站配置排序路由
Route::post('config/changeorder', 'ConfigController@changeOrder');
网站配置项修改
修改resources
下的views
下的config
文件下的edit.blade.php
中的代码
网站配置值分类类型显示
修改ConfigController.php
项目配置控制器的全部配置列表方法index
,具体代码如下
//get.admin/config 全部配置项列表
public function index()
{
$data = Config::orderBy('conf_order','asc')->get();
foreach ($data as $k=>$v){
switch ($v->field_type){
case 'input':
$data[$k]->_html = ' ';
break;
case 'textarea':
$data[$k]->_html = ''.$v->conf_content.' ';
break;
case 'radio':
//1|开启,0|关闭
$arr = explode(',',$v->field_value);
$str = '';
foreach($arr as $m=>$n){
//1|开启
$r = explode('|',$n);
$c = $v->conf_content==$r[0]?' checked ':'';
$str .= ' '.$r[1].' ';
}
$data[$k]->_html = $str;
break;
}
}
return view('admin.config.index',compact('data'));
}
修改resources
下的views
下的config
文件下的index.blade.php
中的代码,增加配置内容的显示项,在
标签中添加如下代码
{!! $v->_html !!}
网站配置值修改
修改resources
下的views
下的config
文件下的index.blade.php
中的代码,添加form
表单和提交按钮
// 修改网站配置内容路由
Route::post('config/changecontent', 'ConfigController@changeContent');
在ConfigController.php
项目配置控制器添加修改网站配置内容的方法changeContent
,具体代码如下
public function changeContent()
{
$input = Input::all();
foreach($input['conf_id'] as $k=>$v){
Config::where('conf_id',$v)->update(['conf_content'=>$input['conf_content'][$k]]);
}
$this->putFile();
return back()->with('errors','配置项更新成功!');
}
修改ConfigController.php
项目配置控制器中全部配置项列表的方法index
,将name="conf_content"
改为name="conf_content[]"
修改resources
下的views
下的config
文件下的index.blade.php
中的代码,在显示网站配置内容的地方加上如下代码
生成网站配置项文件
修改ConfigController.php
项目配置控制器中添加生成配置文件的方法putFile
,具体代码如下
// 生成配置文件
public function putFile()
{
$config = Config::pluck('conf_content','conf_name')->all();
$path = base_path().'/config/web.php';
$str = '
// 生成配置文件的路由
Route::get('config/putfile', 'ConfigController@putFile');
在ConfigController.php
项目配置控制器中的方法changeContent
,destroy
,update
方法中加上代码$this->putFile();
修改resources
下的views
下的style
文件下的index.blade.php
中的代码如下
网站配置