백엔드 개발 PHP 튜토리얼 Laravel 5 기본 사항(9) - 양식

Laravel 5 기본 사항(9) - 양식

Aug 08, 2016 am 09:26 AM
create form

먼저 게시할 기사를 추가하도록 라우팅을 수정하겠습니다.

<code>Route::get('articles/create', 'ArticlesController@create');</code>
로그인 후 복사

그런 다음 컨트롤러를 수정하세요

<code>    public function create() {
        return view('articles.create');
    }</code>
로그인 후 복사

뷰를 반환하고 새 뷰를 만듭니다. 물론 HTML을 사용하여 직접 양식을 만들 수도 있지만 더 기능적인 방법이 있습니다. 우리는 Jeffrey Way가 개발한 Illuminatehtml이라는 오픈 소스 라이브러리를 사용합니다. 종속 라이브러리 설치:

<code>composer require illuminate/html</code>
로그인 후 복사

Laravel의 라이브러리를 사용하려면 먼저 laravel에 등록해야 합니다. config/app.php에서는 laravel에서 제공하는 provider 필드를 볼 수 있는데, 여기에는 laravel의 라이브러리 기능이 설명되어 있습니다. Laravel Framewirk Service Providers... 끝에 새로운 HtmlProvider

을 추가하세요.
<code>'Illuminate\Html\HtmlServiceProvider',</code>
로그인 후 복사

IlluminateHtmlFromFacade처럼 긴 이름을 소개하기보다는 짧은 이름을 사용하고 싶습니다. 현재 app.php에서 별칭 섹션을 찾아 끝에 별칭을 추가하세요.

<code>'Form'      => 'Illuminate\Html\FormFacade',
'Html'      => 'Illuminate\Html\HtmlFacade',</code>
로그인 후 복사

자, 이제 뷰를 만들어 보겠습니다. views/articles/create.blade.php

<code>@extends('layout')

@section('content')
    <h1>Write a New Article</h1>

    <hr/>

    {{--使用我们添加的 illuminate\html 开源库--}}
    {!! Form::open() !!}

    {!! Form::close() !!}

@stop</code>
로그인 후 복사

/articles/create에 방문하여 오류를 확인하세요. 왜 문제가 발생했는지 테스트해 보겠습니다. 컨트롤러에서 다음과 같이 변경합니다.

<code>    public function show($id) {
        dd('show');
        
        $article = Article::findOrFail($id);

        return view('articles.show', compact('article'));
    }</code>
로그인 후 복사

예, 잘 읽으셨습니다. show 메서드에 dd() 메서드를 추가하면 됩니다. 이 메서드는 단순히 메시지를 출력한 다음 종료됩니다. /articles/create를 다시 방문해보세요. show 출력이 보이나요?

create에 접속한 이유와 경로가 show을 제공한 이유는 무엇인가요?

<code>Route::get('articles', 'ArticlesController@index');
Route::get('articles/{id}', 'ArticlesController@show');
Route::get('articles/create', 'ArticlesController@create');</code>
로그인 후 복사

위는 우리의 경로입니다. articles/{id}는 이것이 와일드카드임을 의미하며 articles/ 이후의 모든 항목이 일치한다는 것을 알고 계셨습니까? 우리 /articles/create도 그와 어울렸어요. 어머나!

해결책은 순서를 조정하는 것입니다.

<code>Route::get('articles', 'ArticlesController@index');
Route::get('articles/create', 'ArticlesController@create');
Route::get('articles/{id}', 'ArticlesController@show');</code>
로그인 후 복사

즉, 특별한 것부터 평범한 것까지, 향후 라우팅 설정에서 이 문제에 항상 주의를 기울여야 합니다. 이제 우리는 articles/create을 방문하고 있으며 모든 것이 정상입니다.

브라우저에서 소스코드를 확인해보면 method, action이 생성될 뿐만 아니라 해커의 위변조 공격을 피하기 위해 서버에서 양식을 검증하면서 숨겨진 _token 필드도 생성되는 것을 확인할 수 있습니다.

뷰를 수정하고 필드를 추가해 보겠습니다.

<code>@extends('layout')

@section('content')
    <h1>Write a New Article</h1>

    <hr/>

    {{--使用我们添加的 illuminate\html 开源库--}}
    {!! Form::open() !!}
        <div class="form-group">
            {!! Form::label('title', 'Title:') !!}
            {!! Form::text('title', null, ['class' => 'form-control']) !!}
        </div>

        <div class="form-group">
            {!! Form::label('body', 'Body:') !!}
            {!! Form::textarea('body', null, ['class' => 'form-control']) !!}
        </div>

        <div class="form-group">
            {!! Form::submit('Add Article', ['class' => 'btn btn-primary form-control']) !!}
        </div>

    {!! Form::close() !!}

@stop</code>
로그인 후 복사

폼이 제출되면 실제로는 post 메소드를 사용하여 articles/create에 제출됩니다. 하지만 RESTful 습관에 따라 post로 이동하여 폼을 수정해 보겠습니다. 뷰의 메소드에서 제출 경로를 설정합니다. /articles

<code>{!! Form::open(['url' => 'articles']) !!}</code>
로그인 후 복사
그런 다음 경로에서 양식 제출 이벤트를 처리합니다.

<code>Route::post('/articles', 'ArticlesController@store');</code>
로그인 후 복사
컨트롤러를 다루자

<code>
//注意:将下面的 use 语句删除,我们使用 facade 接口中的 Request
//use App\Http\Requests\Request;

//引入下面的命名空间中的 Request
use Illuminate\Support\Facades\Request;

    public function store() {
        //使用 Illuminate\Html\Request 来返回全部的表单输入字段
        $input = Request::all();

        //我们直接返回$input,来看一下
        return $input;
    }</code>
로그인 후 복사
입력 폼의 json 결과를 직접 확인할 수 있습니다.

필드의 값만 필요한 경우 title 을 사용할 수 있습니다. Request::get('titel')

데이터베이스에 어떻게 추가하나요? 모델의 도움으로 다음 방법을 직접 채택할 수 있습니다.

<code>Article::create($input);</code>
로그인 후 복사
그렇게 단순하고 그렇게 의지가 깊습니까

대량 할당을 잊지 않으셨다면,

에서 직접 채울 수 있는 필드를 정의하기 위해 모델에 $fillable 배열을 정의했습니다. create

컨트롤러를 수정하고 모델에 추가한 후 데이터베이스에 저장합니다.

<code>    public function store() {
        $input = Request::all();
        Article::create($input);

        return redirect('articles');
    }</code>
로그인 후 복사
기록을 추가해 보세요. 훌륭합니다. 하지만 잊지 마세요.

라는 필드도 있습니다. 이를 다루겠습니다. published_at

<code>    public function store() {
        $input = Request::all();
        $input['published_at'] = Carbon::now();

        Article::create($input);
        
        return redirect('articles');
    }</code>
로그인 후 복사
새 레코드를 추가하고 테스트해 보세요.

또 다른 문제가 있는데, 새로 추가된 것이 전면에 표시되어야 하는데, 다음 컨트롤러를 수정해 보겠습니다.

<code>	public function index() {
        //倒序获取文章
        //可以这样
        //$articles = Article::orderBy('published_at', 'desc')->get();
        //简单方式,当然还有 oldest()
        $articles = Article::latest('published_at')->get();

        return view('articles.index', compact('articles'));
    }</code>
로그인 후 복사
위에서 Laravel 5 Basics (9) - Form에 대한 내용을 소개했습니다. 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Binaryx는 다시 이름이 바뀌고, 4 개는 커뮤니티에주는 4 개가 급증하려고합니까? Binaryx는 다시 이름이 바뀌고, 4 개는 커뮤니티에주는 4 개가 급증하려고합니까? Mar 04, 2025 pm 12:00 PM

Binaryx의 토큰 이름 변경 : BNX에서 4로, 그리고 형성하기 위해, 전략적 조정 뒤에 깊은 의미는 최근 토큰 기호를 4 달러에서 $ 양식으로 변경하여 업계의 광범위한 관심을 끌었습니다. Binaryx가 이름을 변경 한 것은 이번이 처음이 아니며 토큰 기호가 BNX에서 4로 전환되었습니다. 이 기사는이 일련의 이름 변경에 대한 전략적 의도를 심층적으로 탐구 할 것입니다. 1. 토큰 이름 변경 프로세스 및 전략적 고려 사항 BinaryX는 처음에 2021 년 BNB 체인을 기반으로 $ BNX 토큰을 출시하여 P2E (Play-to-Earn) 게임 생태계를 지원했습니다. 2024 년 초, 경제 모델을 최적화하기 위해 Binaryx는 $ bnx를 나누고 Gamef로 점차 확장

html5에 여러 양식이 있을 수 있나요? html5에 여러 양식이 있을 수 있나요? Aug 01, 2022 pm 05:28 PM

html5에는 여러 형태가 있을 수 있습니다. 규칙은 동일한 HTML 페이지에서 여러 양식 태그를 사용할 수 있도록 허용하지만 제출 시 백엔드가 이를 인식하지 못하도록 하려면 양식에 다른 ID 또는 클래스를 추가해야 합니다. 구문은 "<from action=입니다. "url" id=" id value 1">양식 요소</from><from action="url" id="id value 2">양식 요소</from>.....".

create 문을 사용하여 테이블 구조를 만들고 새 레코드를 추가할 수 있나요? create 문을 사용하여 테이블 구조를 만들고 새 레코드를 추가할 수 있나요? Jul 25, 2022 am 11:25 AM

할 수 없습니다. CREATE 문의 기능은 테이블 구조를 생성하는 것이지만 새 레코드를 추가할 수는 없습니다. INSERT 문을 사용하여 새 레코드를 추가할 수 있습니다. CREATE 문을 사용하여 데이터베이스에 새 테이블을 만들고 데이터 열의 속성과 제약 조건을 지정할 수 있습니다. 그러나 새로 만든 테이블은 빈 테이블이므로 새 레코드를 추가하려면 INSERT 문을 사용해야 합니다. INSERT 문은 데이터베이스의 기존 테이블에 하나 이상의 튜플 데이터 행을 삽입하는 데 사용됩니다.

html5에서 양식을 정의하는 태그는 무엇입니까? html5에서 양식을 정의하는 태그는 무엇입니까? Jul 26, 2022 pm 04:26 PM

HTML5에서 양식을 정의하는 태그는 "<form>"입니다. 양식 태그는 사용자 정보를 수집하고 전송하기 위한 사용자 입력용 HTML 양식(양식 필드)을 생성하는 데 사용됩니다. "<form action="Submit Address" method=" 제출 방법 " name="form name">form control</form>". 양식에는 입력, 선택 및 텍스트 영역과 같은 하나 이상의 양식 요소가 포함될 수 있습니다.

서식과 관련된 요소를 종합적으로 정리! 서식과 관련된 요소를 종합적으로 정리! Aug 05, 2022 am 11:45 AM

이 기사는 HTML의 양식 요소와 관련된 지식 포인트에 대한 자세한 요약을 제공합니다. 도움이 되기를 바랍니다.

React 앱을 생성하는데 오류가 발생하면 어떻게 해야 하나요? React 앱을 생성하는데 오류가 발생하면 어떻게 해야 하나요? Dec 27, 2022 am 11:29 AM

반응 앱 오류 생성 해결 방법: 1. "npm config set Registry https://registry.npm.taobao.org"를 통해 Taobao 미러 소스를 전환합니다. 2. "E:\workspace\demo\p4>npx create-react를 실행합니다. -app todolist" 명령을 사용하여 다시 설치하세요.

양식을 PHP로 제출할 수 없으면 어떻게 해야 합니까? 양식을 PHP로 제출할 수 없으면 어떻게 해야 합니까? Dec 01, 2022 am 09:08 AM

양식 양식에 대한 솔루션을 PHP에 제출할 수 없습니다. 1. 해당 코드 파일을 엽니다. 2. "onload="javascript:document.form1.submit();" 문을 수정합니다. 3. 제출 이름을 변경합니다.

php记录搜索引擎蜘蛛爬行记录代码 php记录搜索引擎蜘蛛爬行记录代码 Jun 13, 2016 am 10:08 AM

php记录搜索引擎蜘蛛爬行记录代码。php教程记录搜索引擎蜘蛛爬行记录代码 center form action=setup.php method=post table align=center tr td服务器:/tdtdinput value=localhost name=server //td /tr tr td用

See all articles