Laravel的create頁面和edit頁面共用表單,
但是edit的view頁面有變數,就是從控制器中把查詢出來的內容,然後return到view,
而create的控制器,是沒有資料返回的,
這樣,共用表單就會在create時報錯,說有未定義的變數,
怎麼破?
回複內容:
Laravel的create頁面和edit頁面共用表單,
但是edit的view頁面有變數,就是從控制器中把查詢出來的內容,然後return到view,
而create的控制器,是沒有資料返回的,
這樣,共用表單就會在create時報錯,說有未定義的變數,
怎麼破?
直接一份就可以了
假設你返回給blade模板引擎一個模型變數$post
,同時使用了web
中介軟體(session
支援),你可以這樣共用一個form.blade.php
,:
一、保留舊的輸入項目(使用old方法),比如提交表單,但驗證失敗,頁面在提交重新整理後,保留上次提交資料
二、不需要保留舊的輸入項目
寫兩份或者在需要的地方檢查變數是否存在
不需要寫兩份,
建立一個form.blade.php,儲存表單選項,用isset判斷是否存在再輸出,或者你用Forms & HTML builder更容易
如果是自己寫的input表單,那麼這樣寫:
如果使用了laravel的Form ,那麼將更加簡潔:
在 create.blade.php中:
{!! Form::open(['url'=>'article']) !!} @include('article._form', ['submitButton'=>'添加文章']){!! Form::close() !!}
在edit.blade.php中
{!! Form::model($article, ['method'=>'PATCH', 'url'=>['article', $article->id]]) !!} @include('article._form', ['submitButton'=> '修改文章']){!! Form::close() !!}
那麼,需要一個公用的表單部分:_form.blade.php,就是表單部分
我覺得不要為了使用一個架構而使用一個架構,laravel為我們提供了很多的便捷的操作,如果在使用這款架構,就應該試著去接受他們