2013-12-11 75 views
2

是否可以使用自定義Form::macro()Form::model()功能?Laravel 4:Form :: macro with Form :: model

當我第一眼看到它時,我無法將模型數據傳遞給宏方法。

+0

你是說你試圖製作一個Form :: macro()函數來調用它內部的Form :: model嗎? – TonyArra

+0

不,如果我使用'Form :: model()'編輯表單,但表單內部是一個自定義的'Form :: macro()'。在宏函數內部時,我無法訪問模型中的數據。除非我錯過了某些東西...... – cmfolio

+0

如果您在宏內部所做的只是輸出純HTML,那麼該領域實際上無法與模型進行交互。 HTML按原樣打印。對於模型屬性的請求是在Form :: input函數內部完成的,每次調用Form :: text函數時都會調用它。因此,在您的Macro內部,基本上只是一個自定義函數,您需要自己請求模型屬性。 – TonyArra

回答

8

只有Form :: text這樣的函數會自動尋找表單模型。在你的宏裏面,你可以通過幾種方法做到這一點。最簡單的就是使用Form::getValueAttribute($name)。例如:

Form::macro('myField', function() { 
    $value = Form::getValueAttribute('username'); 
    return "<input type='text' name='username' value=$value >"; 
}); 

然後你會在刀片模板像這樣使用它:

<?php 
    $user = new User; 
    $user->username = "bob"; 
    echo Form::model($user); 
    echo Form::myField(); 
    echo Form::close(); 
?> 

你可以找到所有可用的形式功能的源代碼在這裏:​​

+0

太棒了。正是我在找的東西。謝謝託尼。 – cmfolio