web-dev-qa-db-ja.com

Laravel blade "古い入力またはデフォルト変数"?

入力値に古い入力を表示したい。古い入力がない場合は、他の変数を表示するよりも:

value="{{ old('salary_' . $employee->id) or 'Default' }}"

しかし、古い入力がない場合、デフォルト値の代わりに1が返されます!

問題は連結と関係があると思いますが、それを修正する方法がわかりません!?

26
Jeton Thaçi

orはPHPの比較演算子であるため、コードはtrueまたは1に評価されます。必要なのは3項のifステートメントです。

前述のように、orは、三項ifステートメントの省略形としてブレードで使用できます。

ただし、次のように、デフォルト値を関数の2番目の引数として渡すことができます(そうする必要があります)。

value="{{ old('salary_' . $employee->id, 'Default') }}"
53
Adunahay

Laravel doc: "Bladeテンプレート内に古い入力を表示している場合、古いヘルパーを使用する方が便利です:"。したがって、データフォームを追加/編集する必要がある場合(編集モードでの追加と編集に編集フォームを使用する必要がある場合、モデル(データベース)から読み込んだデータを使用して、モデルからの値を(コントローラーを介して)表示する必要があります。次を使用できます。

name="some_value" value="{{ $some_value or old('some_value', $the_value) }}"

ここで、ビュー配列の「some_value_from_model」変数名です。この場合、最初は$ some_valueを使用して「値」を設定し、そうでない場合は古い(「some_value」という名前の要求からの値)を使用しようとし、古くない場合は ''にする必要があります中古。

コメントしてくださったWoodyDRNに感謝します。

1
Alex