projet1_过程记录CMS_1

按照视频和老师讲解,实现一个简易的CMS。
软件:PHPStorm、Laragon、Google Chrome


—😄-------------😛 -------------😃-------------😄-------------😛 -------------😃-------------😛 -------------😃—


1. 利用laragon创建工程

打开laragon,开始创建一个新的架构打开laragon,开始创建一个新的
在这里插入图片描述
在这里插入图片描述

创建成功的效果在这里插入图片描述

2. 用户认证界面

2.1. 导入依赖包

composer require laravel/ui
在这里插入图片描述

首先先给更新了laravel的ui
在这里插入图片描述
将ui下载到vendor/laravel/ui中

在这里插入图片描述

2.2. 安装部署认证组件

php artisan ui vue --auth
在这里插入图片描述

2.3 安装部署npm部署组件

npm install && npm run dev
在这里插入图片描述

建立成功之后,会得到这两个文件,
在这里插入图片描述
在这里插入图片描述

2.4 配置数据库并进行数据迁移

2.4.1. 到.env中配置数据库

在这里插入图片描述

2.4.2. 到终端进行数据库迁移

php artisan migrate

将生成相关的表
将生成相关的表

2.5 效果

现在的laragon主页就会多了右上角的注册和登录的功能
在这里插入图片描述
注册界面
在这里插入图片描述
登录界面
在这里插入图片描述
登陆之后的home界面
在这里插入图片描述
登陆之后的初始界面
在这里插入图片描述

3. 帖子和分类管理

3.1 创建模型和数据库迁徙文件

3.1.1 分别创建Post(后台发布文章帖子)和Category(文章分类)的模型和迁徙方法

php artisan make :model Category -m
php artisan make :model Post -m
在这里插入图片描述在这里插入图片描述

3.1.2 更改两个迁徙文件中的内容(即表的结构)

分类表(Category)

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateCategoriesTable extends Migration
{
    public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('categories');
    }
}

文章表(Post)

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('description');
            $table->text('content');
            $table->string('image');
            $table->timestamp('published_at')->nullable();
            $table->unsignedInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories')
                ->onUpdate('cascade')->onDelete('cascade');
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

3.1.3 创建分类资源

创建控制器

php artisan make:controller CategoriesController --resource
在这里插入图片描述

在这里插入图片描述

创建分类资源路由

/* 在web.php里面创建路由 */
Route::resource('categories','CategoriesController');

在这里插入图片描述
在终端中验证一下路由是否创建成功

php artisan route:list

在这里插入图片描述

调整登录之后的内部布局

实现如下布局
在这里插入图片描述
layout代码:

<body>
    <div id="app">
        <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
            <div class="container">
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'Laravel') }}
                </a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <!-- Left Side Of Navbar -->
                    <ul class="navbar-nav mr-auto">

                    </ul>

                    <!-- Right Side Of Navbar -->
                    <ul class="navbar-nav ml-auto">
                        <!-- Authentication Links -->
                        @guest
                            <li class="nav-item">
                                <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                            </li>
                            @if (Route::has('register'))
                                <li class="nav-item">
                                    <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                                </li>
                            @endif
                        @else
                            <li class="nav-item dropdown">
                                <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                                    {{ Auth::user()->name }} <span class="caret"></span>
                                </a>

                                <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                                    <a class="dropdown-item" href="{{ route('logout') }}"
                                       onclick="event.preventDefault();
                                                     document.getElementById('logout-form').submit();">
                                        {{ __('Logout') }}
                                    </a>

                                    <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                        @csrf
                                    </form>
                                </div>
                            </li>
                        @endguest
                    </ul>
                </div>
            </div>
        </nav>

       <main class="py-4">
            @auth
                <div class="container">
                    <div class="row">
                        <div class="col-md-4">
                            <ul class="list-group">
                                <li class="list-group-item">
                                    <a href="">Posts</a>
                                </li>
                                <li class="list-group-item">
                                    <a href="">Categories</a>
                                </li>
                            </ul>
                        </div>
                        <div class="col-md-8">
                            @yield('content')
                        </div>
                    </div>
                </div>
            @else
                @yield('content')
            @endauth
        </main>
    </div>
</body>

效果:
在这里插入图片描述

创建分类列表视图

1.在resource/view/categories中建立index.blade.php
在这里插入图片描述
在这里插入图片描述
2.在控制器中设置返回的路由名称
在这里插入图片描述
效果:
在这里插入图片描述

处理分类的提交

1.在resource/view/categories中建立create.blade.php
在这里插入图片描述在这里插入图片描述
2.控制器中返回视图
在这里插入图片描述
3.完善一下,创建输入出错时的提示信息
在这里插入图片描述
4.处理分类的提交
在这里插入图片描述
5.在category路由中指定可以被post的代码
在这里插入图片描述
6. 在app.blade.php中加入消息处理的反馈
在这里插入图片描述
效果
1.ADD视图在这里插入图片描述
2.提交之后,返回一个消息
在这里插入图片描述
数据库中也新加了一个消息
在这里插入图片描述
3.再次提交NO.1,则返回错误
在这里插入图片描述
4.名字太短
在这里插入图片描述
5.名字太长
在这里插入图片描述
6.名字为空
在这里插入图片描述


第一课 完成~
—😄-------------😛 -------------😃-------------😄-------------😛 -------------😃-------------😛 -------------😃—

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMS源码 framework 总特点: 1、简洁轻快。整个框架,除了jquery,没有依赖其他第三方类库; 2、绝不过度设计。简单、易学、易上手是这套框架对自己的定位。 3、从实战出发,提供了 cms/sns/forum 等大型系统的示例,经过了全面的实战检验;不像其他一些框架只提供一个 blog 的粗糙 demo。 wojilu framework 希望自己是一个真正从实战中来,到实战中去的框架。 4、从整体上考虑各子框架的设计,比如前端 ajax 部分和 mvc 框架的结合;比如IOC依赖注入和mvc中控制器的结合等; 5、使用 apache 开源协议,可以免费应用于商业环境。 6、对 dotnet 的版本要求低,支持dotnet 2.0,当然也支持更高版本。 7、没有多个框架整合的问题。作为全栈式(fullstack) 框架,各子框架之间已经无缝集成了。 各个子框架也有各自的特点: wojilu ORM 1、简单易用,支持 sqlserver/mysql/access 三种数据库; 2、以实用为目的,比如直接集成数据分页方案; 3、以领域模型为中心,自动根据领域模型建立数据表; 4、支持数据库垂直划分(多数据库支持),配置简单; 5、和 mvc 框架配合,支持数据库事务; 6、内置数据验证方案,可扩展。 wojilu IOC 配置简单,相当的轻量级 wojilu MVC 1、支持命名空间(让代码文件更加整洁易览;让页面layout和权限控制更加简单易用); 2、默认将静态文件(js/css/图片等)单独存放,可以轻松切换到二级域名(分离应用服务器和静态服务器); 3、视图逻辑和视图模板彻底分离; 4、控制器可轻松依赖注入;控制器本身也可以通过配置自定义; 5、不对 html 封装,可以让前端开发彻底工作在html和css层面,对html拥有完全控制的自由; 6、多国语言支持(i18n),并且简洁易用; 其他 mvc 框架都会带的功能,比如路由、过滤器、RESTfull风格的Url、无页面后缀名、约定优于配置的风格等都是不可缺少的;另 外,对页面生命周期中各事件的扩展也提供了完善的支持。 wojilu template 简单易用,只有两种语法。 wojilu logger 专为我记录框架定做的日志系统,简单易用 wojilu json 我记录的缓存组件和配置组件,全部使用 json 进行持久化,是系统的重要组成部分。 wojilu ajax 1、提供了最常用的弹窗、表单验证、菜单等内容; 2、基本上“零js书写”,不需要js基础就能使用,上手非常容易; 3、和视图完全分离; 4、和 mvc 后端 controller 无缝集成。 wojilu editor 轻量级,在 mvc 中直接使用,无须配置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值