2016-06-13 76 views
2

我有2種形式像往常一樣(edit.blade.php + create.blade.php) 我有例如具有許多關係的一個模式$產品$product->product_meta->priceLaravel:使一種形式兩個創建和編輯

對於直接價值$產品 - >名字我的表單中添加這和作品般的魅力,沒有任何類型的問題:

1-內創建我增加了以下內容:

{!! Form::text('name_ar', old('name_ar') ,['class' => 'form-control']) !!} 

2-在編輯中,我還添加了以下內容並且工作正常很好,沒有

{!! Form::text('name_ar', old('name_ar') ,['class' => 'form-control']) !!} 

當涉及到的關係,這些都沒有工作:

{!! Form::text('name_ar', old('product_meta.price') ,['class' => 'form-control']) !!} 
{!! Form::text('name_ar', old(['product_meta']['price']) ,['class' => 'form-control']) !!} 

什麼想法? !

+0

我會使用if/else來查看是否設置了關係(product_meta-> price)。如果是,傳遞它做舊(),如果沒有,只需默認爲一個空字符串。 – Dave

+0

我喜歡這種方法(與Laravel 5一起工作),它們重複使用相同的表單來編輯和創建:https://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers – herrjeh42

回答

1

我在某些模型上這樣做,但通常寧願避免它,因爲多次創建和更新的邏輯是不同的。

無論如何,如果您在視圖中沒有該字段,以下方法不起作用。

{!! Form::text('name_ar', old('product_meta.price') ,['class' => 'form-control']) !!} 

老()是指與該名稱的輸入,因此如果該字段被命名爲「name_ar」你不能得到,使用「product_meta.price」的舊值。

但old()也接受第二個參數作爲後備,因此您可以檢查舊輸入,如果不存在(未提交),請使用如下關係數據設置值:

{!! Form::text('name_ar', old('name_ar', (isset($product) ? $product->product_meta->price ,'')) ,['class' => 'form-control']) !!} 

以上將查找在最後命名爲「name_arr」老輸入提交,那麼如果它沒有找到(你還沒有提交),會看,如果變量$產品設置(所以你」重新編輯),如果它沒有設置值空''(你正在創建)

希望這個幫助

乾杯