이 글에서는 주로 laravel을 사용하여 미니 블로그를 구축하는 방법에 대한 관련 정보를 예제 코드를 통해 매우 자세하게 소개하고 있습니다. 모두를 도울 수 있습니다.
1. 디자인 및 아이디어
첫 번째 코드 작성을 시작하기 전에, 작성 및 수정을 하지 않고 불필요한 코드를 더 많이 작성하지 않도록 처음부터 끝까지 만들고 싶은 제품을 디자인하도록 최선을 다해야 합니다.
요구 사항 분석: 우리 미니 블로그에는 최소한 기사 추가/편집/보기/삭제 및 기사 목록 표시 기능이 포함되어야 합니다.
데이터베이스 분석: 이 기능을 기반으로 기사를 저장하려면 Articles 데이터 테이블만 필요합니다.
페이지 구조 분석: 헤더/기사 목록/하단 정보를 포함한 기본 템플릿을 생성하려면 템플릿 상속을 사용해야 합니다.
두 번째, 경로 생성
이 블로그를 완료하려면 다음 경로가 필요할 수 있습니다.
| 기능 | -------- | 기사 목록 페이지로 돌아가기 | 페이지 라우팅 | 기사 저장 기능 경로 | 기사 페이지 경로 편집 | | 기사를 꺼내서 업데이트한 후 다시 데이터베이스에 저장 | 기사 삭제 기능 라우팅 | 데이터베이스에서 기사 삭제 |
이러한 상황에 대해 라라벨은 거의 모든 기능을 제공하고 있는 것을 볼 수 있습니다. 매우 편리한 방법: RESTful 리소스 컨트롤러 및 라우팅.
routes.php를 열고 다음 코드를 추가하세요:
Route::resource('articles', 'ArticlesController');
위의 코드 줄만 다음 7개의 경로를 생성하는 것과 동일하며 모두 경로 이름이 지정됩니다. 용법.
Route::get('/articles', 'ArticlesController@index')->name('articles.index'); Route::get('/articles/{id}', 'ArticlesController@show')->name('articles.show'); Route::get('/articles/create', 'ArticlesController@create')->name('articles.create'); Route::post('/articles', 'ArticlesController@store')->name('articles.store'); Route::get('/articles/{id}/edit', 'ArticlesController@edit')->name('articles.edit'); Route::patch('/articles/{id}', 'ArticlesController@update')->name('articles.update'); Route::delete('/articles/{id}', 'ArticlesController@destroy')->name('articles.destroy');
3. 컨트롤러 만들기
artisan을 사용하여 기사 컨트롤러 만들기:
php artisan make:controller ArticlesController
4. 기본 보기 만들기
resources/views/layouts/art.blade.php
템플릿 index.html 보기
5. 새 기사 양식
@extends('layouts.art') @section('content') <form class="form-horizontal" method="post" action="{{route('blog.store')}}"> {{ csrf_field() }} <p class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">标题</label> <p class="col-sm-8"> <input type="title" class="form-control" id="title" name="title"> </p> </p> <p class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">内容</label> <p class="col-sm-8"> <textarea class="form-control" rows="5" id="content" name="content"></textarea> </p> </p> <p class="form-group"> <p class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">创建</button> </p> </p> </form> @endsection
6. 기사 저장
이때 새 기사 양식을 작성하고 제출을 클릭하면 빈 페이지로 이동합니다. 후속 컨트롤러 코드는 아직 작성되지 않았습니다.
기사 저장을 구현하려면 먼저 데이터베이스를 구성하고, 데이터 테이블을 생성하고, 모델을 생성한 다음 저장 로직 코드를 완성해야 합니다.
1. 데이터베이스 구성
.env 파일 수정
2. 데이터 테이블 생성
artisan 명령을 사용하여 마이그레이션 생성:
php artisan make:migration create_articles_talbe --create=articles
마이그레이션 파일 수정
public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->longText('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); }
다음을 포함하는 기사 테이블을 생성했습니다. 증가된 ID 필드, 문자열 제목 필드, 긴 텍스트 콘텐츠 필드 및 타임스탬프.
데이터베이스 마이그레이션 수행:
php artisan migrate
mysql에 로그인하고 데이터 테이블을 봅니다.
3. 모델 만들기
artisan 명령을 사용하여 모델을 만듭니다.
php artisan make:model Article
모델 파일을 열고 다음 코드를 입력합니다.
app/Article.php
namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { //对应的表 protected $table = 'articles'; //通过model可以写入的字段 protected $fillable = [ 'title', 'content', ]; }
4 로직 코드를 저장합니다. ArticlesController.php 컨트롤러를 열고 store() 메소드를 찾으세요.
public function store(Request $request) { //数据验证 错误处理 $this->validate($request,[ 'title'=>'required|max:50', 'content'=>'required|max:500', ]); // 1 orm方式写入 $article = Article::create([ 'title'=>$request->title, 'content'=>$request->content, ]); //2 或者 /* $article = new Article(); $article->title =$request->title; $article->content = $request->content; $article->save();*/ //3 db方式写入 //insert()方法返回值为true 和 false //$res = DB::table('articles')->insert(['title'=>$request->title,'content'=>$request->content]); return redirect()->route('blog.index'); }
@if (count($errors) > 0) <p class="alert alert-danger"> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </p> @endif
기사 추가 기능을 완료한 후 기사 목록 표시 페이지를 구현할 수 있습니다.
use App\Article; public function index() { $articles = Article::orderBy('created_at','asc')->get(); return view('articles.index', ['articles'=>$articles]); }
@extends('layouts.art') @section('content') <a class="btn btn-primary" href="{{route('blog.create')}}" rel="external nofollow" >添加文章</a> @foreach($articles as $article) <p class="panel panel-default"> <p class="panel-body"> {{$article->title}} <a href="{{route('blog.show',$article->id)}}" rel="external nofollow" class="btn btn-info">阅读</a> <a href="{{route('blog.edit', $article->id)}}" rel="external nofollow" class="btn btn-info">修改</a> <form action="{{ route('blog.destroy', $article->id) }}" method="post" style="display: inline-block;"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="btn btn-danger">删除</button> </form> </p> </p> @endforeach {!! $articles->render() !!} @endsection
기사 양식 편집 실제로 기존 데이터를 읽고 양식에 채워야 한다는 점을 제외하면 이전에 작성된 새 기사 양식과 매우 유사합니다.
먼저 기사 목록 페이지의 각 기사에 편집 버튼을 추가합니다.
@extends('layouts.art') @section('content') <form class="form-horizontal" method="post" action="{{route('blog.update',$article->id)}}"> {{ csrf_field() }} {{ method_field('PATCH') }} <p class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">标题</label> <p class="col-sm-10"> <input type="title" class="form-control" id="title" name="title" value="{{ $article->title }}"> </p> </p> <p class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">内容</label> <p class="col-sm-10"> <textarea class="form-control" rows="5" id="content" name="content"> {{ $article->content }}</textarea> </p> </p> <p class="form-group"> <p class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">修改</button> </p> </p> </form> @endsection
//展示修改模板 public function edit($id) { $article = Article::findOrFail($id); return view('art.edit',['article'=>$article]); } //执行修改 public function update(Request $request, $id) { $this->validate($request, [ 'title' => 'required|max:50', 'content'=>'required|max:500', ]); $article = Article::findOrFail($id); $article->update([ 'title' => $request->title, 'content' => $request->content, ]); return redirect()->route('blog.index'); }
삭제 버튼
<form action="{{ route('blog.destroy', $article->id) }}" method="post" style="display: inline-block;"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="btn btn-danger">删除</button> </form>
Controller:
public function destroy($id) { $article = Article::findOrFail($id); $article->delete(); return back(); }
V족 블로그 관리 플랫폼의 Vue+SpringBoot 개발에 대한 자세한 설명 예
LAMP PHP 모듈 기반 개인 블로그 구축에 대한 자세한 그래픽 설명
위 내용은 Laravel에서 미니 블로그 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!