Laravel 5 基础(十一)- 子视图和表单复用
我们需要处理编辑文章的问题。当然我们可以手工添加新的路由,就像这样:
<code>Route::get('/articles/{id}/edit', '[email protected]');</code>
让我们在命令行下使用 artisan
的 route:list
来查看我们当前的路由:
<code>php artisan route:list</code>
在符合 RESTful 的情况下,可能直接使用 laravel 的 resource
路由是一种好的选择,然我们将所有的路由都去掉,只添加唯一的一个:
<code>Route::resource('articles', 'ArticlesController');</code>
再次使用 <code>php artisan route:list</code> 查看路由,哇,一堆的符合我们期望的路由产生了。每一项都仔细查看一下。
现在在控制器中添加方法:
<code> public function edit($id) { $article = Article::findOrFail($id); return view('articles.edit', compact('article')); }</code>
现在创建视图
<code>@extends('layout')@section('content') <h1 id="Edit-article-title">Edit: {!! $article->title !!} </h1> <hr/> ...</code>
好吧,我承认这些代码都是从 create.blade.php
中拷贝出来的,修改了一下,问题是我们需要重复吗?后面我们会处理这个问题,现在来看一下表单的提交问题。在路由中 <code>php artisan route:list</code> ,再看一遍,修改使用了 PATCH
方法,我们来修改视图:
<code>{!! Form::open(['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!} </code>
在浏览器中访问 /articles/1/edit
,查看一下源代码,发现laravel自动生成了 _method=PATCH
的隐藏字段。
一问题是,我们编辑文章,但是文章的信息并没有显示出来,我们修改一下视图:
<code> {!! Form::model($article, ['method' => 'PATCH', 'url' => 'articles/' . $article->id]) !!}</code>
OK,everything's ok,除了 published_on
字段仍然设置为当前日期,后面我们来处理。
现在在控制器中添加方法:
<code> public function update($id, \Illuminate\Http\Request $request) { $article = Article::findOrFail($id); $article->update($request->all()); return redirect('articles'); }</code>
我们在修改的过程中也需要验证,让我们复用我们的 Request 类,将 CreateArticleRequest
更名为更通用的 ArticleRequest
,别忘了修改 store
方法中的参数。
<code> public function update($id, Requests\ArticleRequest $request) { $article = Article::findOrFail($id); $article->update($request->all()); return redirect('articles'); }</code>
现在剩下的问题是我们的新建和编辑使用了大部分相同的代码,比如显示错误,但他们存在两份,我们来修改这个问题。
我们直接在 views/articles
下面新建文件 list.blade.php
,并把错误处理代码从 create.blade.php
中拷贝出来:
<code>@if ($errors->any()) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul>@endif</code>
在 create.blade.php
只需用下面语句替换错误处理代码即可:
<code>@include('articles.list')</code>
让我们再来处理表单代码,表单代码中除了 form
不大一样和提交按钮有区别,其他都差不多。我们创建一个视图 articles/form_partial.blade.php
,将代码拷贝出来
<code><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></code>
修改 create.blade.php
<code>@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</code>
修改 edit.blade.php
<code>@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</code>

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

Dalam PHP, sifat sesuai untuk situasi di mana penggunaan semula kaedah diperlukan tetapi tidak sesuai untuk warisan. 1) Ciri membolehkan kaedah multiplexing dalam kelas untuk mengelakkan pelbagai kerumitan warisan. 2) Apabila menggunakan sifat, anda perlu memberi perhatian kepada konflik kaedah, yang dapat diselesaikan melalui alternatif dan sebagai kata kunci. 3) Tua yang berlebihan harus dielakkan dan tanggungjawab tunggalnya harus dikekalkan untuk mengoptimumkan prestasi dan meningkatkan pemeliharaan kod.

Kontena Suntikan Ketergantungan (DIC) adalah alat yang menguruskan dan menyediakan kebergantungan objek untuk digunakan dalam projek PHP. Manfaat utama DIC termasuk: 1. Decoupling, membuat komponen bebas, dan kod itu mudah dikekalkan dan diuji; 2. Fleksibiliti, mudah untuk menggantikan atau mengubah suai kebergantungan; 3. Keseluruhan, mudah untuk menyuntik objek mengejek untuk ujian unit.

SplfixedArray adalah pelbagai saiz tetap dalam PHP, sesuai untuk senario di mana prestasi tinggi dan penggunaan memori yang rendah diperlukan. 1) Ia perlu menentukan saiz apabila membuat untuk mengelakkan overhead yang disebabkan oleh pelarasan dinamik. 2) Berdasarkan pelbagai bahasa C, secara langsung mengendalikan memori dan kelajuan akses cepat. 3) Sesuai untuk pemprosesan data berskala besar dan persekitaran sensitif memori, tetapi ia perlu digunakan dengan berhati-hati kerana saiznya tetap.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Dalam JavaScript, anda boleh menggunakan NullcoalescingOperator (??) dan NullcoalescingAssignmentOperator (?? =). 1.? Menerapkan semula operan pertama yang tidak berselisih atau tidak ditentukan. 2.?? Pengendali ini memudahkan logik kod, meningkatkan kebolehbacaan dan prestasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.