搜尋
首頁php教程php手册Laravel 5框架学习之子视图和表单复用,laravel框架

Laravel 5框架学习之子视图和表单复用,laravel框架

我们需要处理编辑文章的问题。当然我们可以手工添加新的路由,就像这样:

复制代码 代码如下:
Route::get('/articles/{id}/edit', 'ArticleController@edit');

让我们在命令行下使用 artisan 的 route:list 来查看我们当前的路由:

复制代码 代码如下:
php artisan route:list

在符合 RESTful 的情况下,可能直接使用 laravel 的 resource 路由是一种好的选择,然我们将所有的路由都去掉,只添加唯一的一个:

复制代码 代码如下:
Route::resource('articles', 'ArticlesController');

再次使用 php artisan route:list 查看路由,哇,一堆的符合我们期望的路由产生了。每一项都仔细查看一下。

现在在控制器中添加方法:

  public function edit($id) {
    $article = Article::findOrFail($id);

    return view('articles.edit', compact('article'));
  }

现在创建视图

@extends('layout')

@section('content')
  <h1 id="Edit-article-title">Edit: {!! $article->title !!} </h1>

  <hr/>

  ...

好吧,我承认这些代码都是从 create.blade.php 中拷贝出来的,修改了一下,问题是我们需要重复吗?后面我们会处理这个问题,现在来看一下表单的提交问题。在路由中 php artisan route:list ,再看一遍,修改使用了 PATCH 方法,我们来修改视图:

复制代码 代码如下:
{!! Form::open(['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}

在浏览器中访问 /articles/1/edit ,查看一下源代码,发现laravel自动生成了 _method=PATCH 的隐藏字段。

一问题是,我们编辑文章,但是文章的信息并没有显示出来,我们修改一下视图:

复制代码 代码如下:
 {!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}

OK,everything's ok,除了 published_on 字段仍然设置为当前日期,后面我们来处理。

现在在控制器中添加方法:

  public function update($id, \Illuminate\Http\Request $request) {
    $article = Article::findOrFail($id);
    $article->update($request->all());

    return redirect('articles');
  }

我们在修改的过程中也需要验证,让我们复用我们的 Request 类,将 CreateArticleRequest 更名为更通用的 ArticleRequest,别忘了修改 store 方法中的参数。

  public function update($id, Requests\ArticleRequest $request) {
    $article = Article::findOrFail($id);
    $article->update($request->all());

    return redirect('articles');
  }

现在剩下的问题是我们的新建和编辑使用了大部分相同的代码,比如显示错误,但他们存在两份,我们来修改这个问题。

我们直接在 views/articles 下面新建文件 list.blade.php,并把错误处理代码从 create.blade.php 中拷贝出来:

@if ($errors->any())
  <ul class="alert alert-danger">
    @foreach($errors->all() as $error)
      <li>{{ $error }}</li>
    @endforeach
  </ul>
@endif

在 create.blade.php 只需用下面语句替换错误处理代码即可:

复制代码 代码如下:
@include('articles.list')

让我们再来处理表单代码,表单代码中除了 form 不大一样和提交按钮有区别,其他都差不多。我们创建一个视图 articles/form_partial.blade.php,将代码拷贝出来

<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::label('published_at', 'Publish On:') !!}
  {!! Form::input('date', 'published_at', date('Y-m-d'), ['class' => 'form-control']) !!}
</div>

<div class="form-group">
  {{--这里要设置变量,依据是编辑还是修改来改变,当然也可以不放置在partial中--}}
  {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!}
</div>

修改 create.blade.php

@extends('layout')

@section('content')
  <h1 id="Write-a-New-Article">Write a New Article</h1>

  <hr/>

  @include('articles.list')

  {{--使用我们添加的 illuminate\html 开源库--}}
  {!! Form::open(['url' => 'articles']) !!}
    @include('articles.form_partial', ['submitButtonText' => 'Add Article'])
  {!! Form::close() !!}

@stop

修改 edit.blade.php

@extends('layout')

@section('content')
  <h1 id="Edit-article-title">Edit: {!! $article->title !!} </h1>

  <hr/>

  @include('articles.list')
  {{--使用我们添加的 illuminate\html 开源库--}}
  {!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}
  @include('articles.form_partial', ['submitButtonText' => 'Update Article'])

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

@stop

以上就是本文给大家介绍的全部内容了,希望能够对大家熟练掌握Laravel5框架有所帮助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
iOS 17 的待机模式将正在充电的 iPhone 变成家庭集线器iOS 17 的待机模式将正在充电的 iPhone 变成家庭集线器Jun 06, 2023 am 08:20 AM

iOS17中的Apple正在引入待机模式,这是一种新的显示体验,专为水平方向的充电iPhone而设计。处于这个位置的iPhone能够显示一系列全屏小部件,将其变成一个有用的家庭中心。待机模式会在水平放置在充电器上运行iOS17的iPhone上自动激活。您可以查看时间、天气、日历、音乐控制、照片等信息。您可以通过可用的待机选项向左或向右滑动,然后长按或向上/向下滑动以进行自定义。例如,随着时间的流逝,您可以从模拟视图、数字视图、气泡字体和日光视图中进行选择,其中背景颜色会根据时间而变化。有一些选项

如何在Vue中实现可编辑的表格如何在Vue中实现可编辑的表格Nov 08, 2023 pm 12:51 PM

在许多Web应用程序中,表格是必不可少的一个组件。表格通常具有大量数据,因此表格需要一些特定的功能来提高用户体验。其中一个重要的功能是可编辑性。在本文中,我们将探讨如何使用Vue.js实现可编辑的表格,并提供具体的代码示例。步骤1:准备数据首先,我们需要为表格准备数据。我们可以使用JSON对象来存储表格的数据,并将其存储在Vue实例的data属性中。在本例中

理解SpringBoot和SpringMVC之间的差异及比较理解SpringBoot和SpringMVC之间的差异及比较Dec 29, 2023 am 09:20 AM

对比SpringBoot与SpringMVC,了解它们的差异随着Java开发的不断发展,Spring框架已经成为了许多开发人员和企业的首选。在Spring的生态系统中,SpringBoot和SpringMVC是两个非常重要的组件。虽然它们都是基于Spring框架的,但在功能和使用方式上却有一些区别。本文将重点对比一下SpringBoot与Sprin

php如何使用CodeIgniter4框架?php如何使用CodeIgniter4框架?May 31, 2023 pm 02:51 PM

PHP是一种非常流行的编程语言,而CodeIgniter4是一种常用的PHP框架。在开发Web应用程序时,使用框架是非常有帮助的,它可以加速开发过程、提高代码质量、降低维护成本。本文将介绍如何使用CodeIgniter4框架。安装CodeIgniter4框架CodeIgniter4框架可以从官方网站(https://codeigniter.com/)下载。下

Laravel开发:如何使用Laravel View生成视图?Laravel开发:如何使用Laravel View生成视图?Jun 14, 2023 pm 03:28 PM

Laravel是目前最流行的PHP框架之一,其强大的视图生成能力是让人印象深刻的一点。视图是Web应用程序中展示给用户的页面或视觉元素,其中包含HTML、CSS和JavaScript等代码。LaravelView允许开发者使用结构化的模板语言来构建网页,同时通过控制器和路由生成相应的视图。在本文中,我们将探讨如何使用LaravelView生成视图。一、什

Word视图有哪几种Word视图有哪几种Mar 19, 2024 pm 06:10 PM

我猜想,很多同学都想学习word的排版技巧,但小编偷偷告诉大家,在学习排版技巧之前需要先了解清楚word视图,在Word2007中提供了5种视图供用户选择,这5种视图包括页面视图、阅读版式视图、Web版式视图、大纲视图和普通视图,今天和小编了解一下这5种word视图吧。1.页面视图页面视图可以显示Word2007文档的打印结果外观,主要包括页眉、页脚、图形对象、分栏设置、页面边距等元素,是最接近打印结果的页面视图。2.阅读版式视图阅读版式视图以图书的分栏样式显示Word2007文档,Office

Django框架中的视图详解Django框架中的视图详解Jun 17, 2023 am 10:18 AM

Django是一个高度可定制的Web框架,它提供了许多方便的工具和库,来帮助开发者快速创建高性能的、可扩展的Web应用程序。其中,视图是Django框架中最重要的组成部分之一。视图负责处理来自客户端的请求,并返回相应的响应。在本文中,我们将深入探讨Django框架中的视图,并介绍如何使用它来创建高性能、可定制的Web应用程序。一、视图的基本概念在Django

微软更新 Visual Studio Code 1.80微软更新 Visual Studio Code 1.80Jul 10, 2023 pm 08:13 PM

微软近日推出了VisualStudioCode1.80,虽然本次更新于7月发布,官方依然将其称之为6月更新。用户安装本次更新之后,内置终端可以直接显示图片,此外还优化了辅助功能。VisualStudioCode此前发布的预览版中,已支持在终端中支持图像,而在新的1.80版本中默认为启用状态。为了能够在终端中可以显示图像,图像像素数据再通过特殊的转义序列转换为文本,最终写入终端。如果要将典型的PNG,GIF或JPEG文件传递到终端,则需要安装imgcatpython软件包,然后在终端中运行imgc

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器