백엔드 개발 PHP 튜토리얼 laravel 프레임워크를 사용하여 작은 블로그 작성

laravel 프레임워크를 사용하여 작은 블로그 작성

Aug 15, 2017 am 09:32 AM
laravel 블로그

이 글에서는 주로 laravel을 사용하여 미니 블로그를 구축하는 방법에 대한 관련 정보를 소개합니다. 이 글은 필요한 모든 사람을 위한 특정 참조 및 학습 가치가 있는 예제 코드를 통해 단계별 구현 단계를 매우 자세히 소개합니다. 아래를 따라갈 수 있습니다. 함께 배워봅시다.

이 글은 주로 laravel을 사용하여 미니 블로그를 구축하는 방법에 대한 내용을 소개합니다. 아래에서는 자세히 설명하지 않겠습니다.

1. 디자인과 아이디어

첫 번째 코드 작성을 시작하기 전에, 작성과 수정을 피하고 불필요한 코드를 더 많이 작성하지 않도록 처음부터 끝까지 우리가 하고 싶은 제품을 디자인하도록 최선을 다해야 합니다.

  • 요구 사항 분석: 우리 미니 블로그에는 최소한 기사 추가/편집/보기/삭제 및 기사 목록 표시 기능이 포함되어야 합니다.

  • 데이터베이스 분석: 이 기능을 기반으로 기사를 저장하려면 Articles 데이터 테이블만 필요합니다.

  • 페이지 구조 분석: 헤더/기사 목록/하단 정보를 포함한 기본 템플릿을 생성하려면 템플릿 상속을 사용해야 합니다.

2. 라우팅 생성

이 블로그를 완성하려면 아마도 다음이 필요할 것입니다. 단계 경로:

| 기사 목록 페이지로 돌아가기 | | 기사 페이지 라우팅 추가 | 기사 저장 기능 | 기사 페이지 라우팅 보기 | 기능 라우팅 | 기사를 꺼내서 다시 데이터베이스에 저장 | 기사 삭제 기능 라우팅 | 데이터베이스에서 기사 삭제 | 이에 대한 거의 모든 내용을 볼 수 있습니다. 이러한 상황에서 Laravel은 매우 편리한 솔루션인 RESTful 리소스 컨트롤러 및 라우팅을 제공합니다.

routes.php를 열고 다음 코드를 추가하세요.

Route::resource('articles', 'ArticlesController');
로그인 후 복사

위와 같은 코드 한 줄은 다음 7개의 경로를 만드는 것과 같습니다. 모두 경로라는 이름을 사용할 수 있습니다. ('articles.show') 이러한 사용법.

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');
로그인 후 복사

셋. 컨트롤러 만들기
artisan을 사용하여 아티클 컨트롤러 만들기:

php artisan make:controller ArticlesController
로그인 후 복사

넷. re 출처/조회수/ 레이아웃/ art.blade.php템플릿 index.html 보기

5. 새 기사 양식

@extends('layouts.art')
@section('content')

 <form class="form-horizontal" method="post" action="{{route(&#39;blog.store&#39;)}}">
   {{ 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(&#39;articles&#39;, function (Blueprint $table) {
   $table->increments(&#39;id&#39;);
   $table->string(&#39;title&#39;);
   $table->longText(&#39;content&#39;);
   $table->timestamps();
  });
 }
public function down() 
 {
  Schema::dropIfExists(&#39;articles&#39;);
 }
로그인 후 복사

we create 증분 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 = &#39;articles&#39;;
 //通过model可以写入的字段
 protected $fillable = [
  &#39;title&#39;, &#39;content&#39;,
 ];
}
로그인 후 복사

4. 논리 코드 저장


ArticlesController.php 컨트롤러를 열고 store() 메소드를 찾으세요.

app/Http/Controllers/ArticlesController.php

 public function store(Request $request)
 {
  //数据验证 错误处理
  $this->validate($request,[
   &#39;title&#39;=>&#39;required|max:50&#39;,
   &#39;content&#39;=>&#39;required|max:500&#39;,
   ]);
  // 1 orm方式写入
  $article = Article::create([
   &#39;title&#39;=>$request->title,
   &#39;content&#39;=>$request->content,
   ]);
  //2 或者
  /* $article = new Article();
   $article->title =$request->title;
   $article->content = $request->content;
   $article->save();*/

   //3 db方式写入
   //insert()方法返回值为true 和 false
   //$res = DB::table(&#39;articles&#39;)->insert([&#39;title&#39;=>$request->title,&#39;content&#39;=>$request->content]);
  return redirect()->route(&#39;blog.index&#39;);
 }
로그인 후 복사

검증 오류 표시


@if (count($errors) > 0)
 <p class="alert alert-danger">
  <ul>
   @foreach($errors->all() as $error)
   <li>{{ $error }}</li>
   @endforeach
  </ul>
 </p>
@endif
로그인 후 복사

7. 기사 목록 표시


기사 추가 기능을 완료한 후 구현하면 됩니다. 이제 기사 목록 표시 페이지를 사용할 수 있습니다. ArticlesController.php를 열고 메소드를 찾아 다음 코드를 추가하세요:

app/Http/Controllers/ArticlesController.php

index()

use App\Article;

public function index() 
 {
  $articles = Article::orderBy(&#39;created_at&#39;,&#39;asc&#39;)->get();

  return view(&#39;articles.index&#39;, [&#39;articles&#39;=>$articles]);
 }
로그인 후 복사

View index.blade.php


@extends(&#39;layouts.art&#39;)
@section(&#39;content&#39;)

 <a class="btn btn-primary" href="{{route(&#39;blog.create&#39;)}}" rel="external nofollow" >添加文章</a>


 @foreach($articles as $article)
 <p class="panel panel-default">
 <p class="panel-body">
 {{$article->title}}
 <a href="{{route(&#39;blog.show&#39;,$article->id)}}" rel="external nofollow" class="btn btn-info">阅读</a>
 <a href="{{route(&#39;blog.edit&#39;, $article->id)}}" rel="external nofollow" class="btn btn-info">修改</a>

  <form action="{{ route(&#39;blog.destroy&#39;, $article->id) }}" method="post" style="display: inline-block;">
   {{ csrf_field() }}
   {{ method_field(&#39;DELETE&#39;) }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
 </p>
 </p>
 @endforeach

 {!! $articles->render() !!}
 @endsection
로그인 후 복사

8. 기사 편집 양식


기사 편집 양식은 실제로 기존 데이터를 읽고 양식에 입력해야 한다는 점을 제외하면 이전에 작성된 새 기사 양식과 매우 유사합니다. 먼저 기사 목록 페이지의 각 기사에 편집 버튼을 추가합니다:
보기:

@extends(&#39;layouts.art&#39;)
@section(&#39;content&#39;)

 <form class="form-horizontal" method="post" action="{{route(&#39;blog.update&#39;,$article->id)}}">
   {{ csrf_field() }}
  {{ method_field(&#39;PATCH&#39;) }}
 <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
로그인 후 복사

注意这段代码中的 {{ method_field(&#39;PATCH&#39;) }} ,这是跨站方法伪造,HTML 表单没有支持 PUT、PATCH 或 DELETE 动作。所以在从 HTML 表单中调用被定义的 PUT、PATCH 或 DELETE 路由时,你将需要在表单中增加隐藏的 _method 字段来伪造该方法,详情参考 官方文档。

控制器


//展示修改模板
public function edit($id) 
 {
  $article = Article::findOrFail($id);
  return view(&#39;art.edit&#39;,[&#39;article&#39;=>$article]);
 }
//执行修改
public function update(Request $request, $id) 
 {
  $this->validate($request, [
   &#39;title&#39; => &#39;required|max:50&#39;,
   &#39;content&#39;=>&#39;required|max:500&#39;,
  ]);

  $article = Article::findOrFail($id);
  $article->update([
   &#39;title&#39; => $request->title,
   &#39;content&#39; => $request->content,
  ]);

   return redirect()->route(&#39;blog.index&#39;);
 }
로그인 후 복사

九、删除文章

删除按钮


 <form action="{{ route(&#39;blog.destroy&#39;, $article->id) }}" method="post" style="display: inline-block;">
   {{ csrf_field() }}
   {{ method_field(&#39;DELETE&#39;) }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
로그인 후 복사

控制器:


public function destroy($id) 
 {
  $article = Article::findOrFail($id);
  $article->delete();
  return back();
 }
로그인 후 복사

十、结语

本次实验通过一个很简单的迷你博客对 Laravel RESTful 资源控制器和路由,视图,orm进行了强化练习。

위 내용은 laravel 프레임워크를 사용하여 작은 블로그 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel - 장인 명령 Laravel - 장인 명령 Aug 27, 2024 am 10:51 AM

Laravel - Artisan Commands - Laravel 5.7은 새로운 명령을 처리하고 테스트하는 새로운 방법을 제공합니다. 여기에는 장인 명령을 테스트하는 새로운 기능이 포함되어 있으며 데모는 아래에 언급되어 있습니다.

Laravel - 장인 콘솔 Laravel - 장인 콘솔 Aug 27, 2024 am 10:51 AM

Laravel - Artisan Console - Laravel 프레임워크는 명령줄을 통한 상호 작용을 위한 세 가지 기본 도구인 Artisan, Ticker 및 REPL을 제공합니다. 이번 장에서는 Artisan에 대해 자세히 설명합니다.

Laravel - 페이지 매김 사용자 정의 Laravel - 페이지 매김 사용자 정의 Aug 27, 2024 am 10:51 AM

Laravel - 페이지 매김 사용자 정의 - Laravel에는 사용자나 개발자가 페이지 매김 기능을 포함하는 데 도움이 되는 페이지 매김 기능이 포함되어 있습니다. Laravel 페이지네이터는 쿼리 빌더 및 Eloquent ORM과 통합되어 있습니다. 자동 페이지 매김 방법

Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Apr 01, 2025 pm 02:45 PM

Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

laravel 일정 작업이 실행되지 않습니다 : 스케줄 후 작업이 실행되지 않으면 어떻게해야합니까? laravel 일정 작업이 실행되지 않습니다 : 스케줄 후 작업이 실행되지 않으면 어떻게해야합니까? Mar 31, 2025 pm 11:24 PM

laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Mar 31, 2025 pm 11:48 PM

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

DCAT 관리자에서 데이터를 추가하기 위해 클릭하는 사용자 정의 테이블 기능을 구현하는 방법은 무엇입니까? DCAT 관리자에서 데이터를 추가하기 위해 클릭하는 사용자 정의 테이블 기능을 구현하는 방법은 무엇입니까? Apr 01, 2025 am 07:09 AM

DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

Laravel - 덤프 서버 Laravel - 덤프 서버 Aug 27, 2024 am 10:51 AM

Laravel - 덤프 서버 - Laravel 덤프 서버는 Laravel 5.7 버전과 함께 제공됩니다. 이전 버전에는 덤프 서버가 포함되어 있지 않습니다. 덤프 서버는 laravel/laravel 작곡가 파일의 개발 종속성이 됩니다.

See all articles