Laravel的create页面和edit页面共用表单,但是edit页面有变量,create页面没有变量,能否共用?

WBOY
リリース: 2016-06-06 20:11:41
オリジナル
1028 人が閲覧しました

Laravel的create页面和edit页面共用表单,
但是edit的view页面有变量,就是从控制器中把查询出来的内容,然后return到view,
而create的控制器,是没有数据返回的,
这样,共用表单就会在create时报错,说有未定义的变量,
怎么破?

回复内容:

Laravel的create页面和edit页面共用表单,
但是edit的view页面有变量,就是从控制器中把查询出来的内容,然后return到view,
而create的控制器,是没有数据返回的,
这样,共用表单就会在create时报错,说有未定义的变量,
怎么破?

直接一份就可以了

<code><input name="end" value="{{isset($data['end'])?$data['end']:''}}" type="text" id="end_time" placeholder=""></code>
ログイン後にコピー

假设你返回给blade模板引擎一个模型变量$post,同时使用了web中间件(session支持),你可以这样共用一个form.blade.php,:

一、保留旧的输入项目(使用old方法),比如提交表单,但验证失败,页面在提交刷新后,保留上次提交数据

<code><input type="text" name="title" id="title" value="{{ ! empty(old('title')) ? old('title') : (isset($post) ? $post->title : '') }}"></code>
ログイン後にコピー

二、不需要保留旧的输入项目

<code><input type="text" name="title" id="title" value="{{ isset($post) ? $post->title : '' }}"></code>
ログイン後にコピー

写两份或者在需要的地方检查变量是否存在

不需要写两份,
新建一个form.blade.php,存储表单选项,用isset判断是否存在再输出,或者你用Forms & HTML builder更容易

如果是自己写的input表单,那么这样写:

<code><input type="text" value="{{$s or ''}}">
</code>
ログイン後にコピー

如果使用了laravel的Form ,那么将更加简洁:
create.blade.php中:

<code>{!! Form::open(['url'=>'article']) !!}
        @include('article._form', ['submitButton'=>'添加文章'])
{!! Form::close() !!}</code>
ログイン後にコピー

edit.blade.php

<code>{!! Form::model($article, ['method'=>'PATCH', 'url'=>['article', $article->id]]) !!}
        @include('article._form', ['submitButton'=> '修改文章'])
{!! Form::close() !!}</code>
ログイン後にコピー

那么,需要一个公共的表单部分:_form.blade.php,就是表单部分

我觉得不要为了使用一个框架而使用一个框架,laravel为我们提供了很多的便捷的操作,如果在使用这款框架,就应该试着去接受他们

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!