2016-08-20 61 views
1

是否可以使用isEmpty()方法驗證空字段的輸入a?我有一個validate($request)它有一個多表格填補。我有其他形式,它不是完全必要的。

控制器:

$this->validate($request, 
[ 
    'title' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|max:255', 
    'content' => 'required', 
    'category' => 'required', 
    'approver' => 'required', 
    'recipient' => 'required', 
]);  


$document = new Document(); 
$user = Auth::user(); 
           //Request in the form 
$document->title = $request->title; 
$document->content = $request->content; 
$document->category_id = $request->category; 
$document->save(); 

foreach($request->recipient as $recipientId) 
{ 
    $document->sentToUsers()->sync([ $recipientId => ['sender_id' => $user->id]],false); 
} 

我有不需要填寫表格名稱department。我試圖檢查它是否不是空的,它會將其插入到數據庫中。如果空無一物,將會發生。

if(!$request->department->isEmpty()) 
{ 
    foreach($request->department as $departmentId) 
    { 
     foreach(Department::find($departmentId)->users()->get() as $user1) //find the users belonging to the current department 
     { 
      $document->sentToUsers()->sync([ $user1->id => ['sender_id' => $user->id]],false); 
     } 
    } 
} 
else 
{ 

} 
+1

試試看吧? – Farkie

回答

1

您可以隨時使用empty()

if(!empty($request->department)) 

我猜isEmpty()for collection only,你正在檢查Request對象的屬性:

isEmpty方法返回true,如果集合是空;否則, 返回false

2

$request->field會給你的字段的值,是一個字符串,數組,數字或其他任何東西。你可以使用PHP的empty功能來檢查它是否做某件事之前空:

if (!empty($request->department)) { 
    // ... 
} 
1

正如其他答案isEmpty方法你指的是用於收藏,而你正在檢查屬性值注意。

但是,我想添加一個關於使用empty的非常重要的注意事項。

在PHP中,empty構造在語義上與!isset($thing) || !$thing相同,使得empty($thing)!isset($thing) || !$thing都給出相同的結果。 isset構造僅用於確定變量是否不是null而不觸發任何未定義的變量錯誤。將其與布爾真值檢查相結合,我們得到empty

這可能並不總是你想要的。例如,在PHP中一個對象是總是true在真值表中。然而,諸如整數0和空字符串""或甚至空的Array的東西在真值表中被認爲是。這就是爲什麼在你決定使用哪一個之前檢查truth table總是很重要的。

例如,零長度的字符串可能對您而言爲空,但如果期望用戶提交的值爲isset($_POST['thing']) === true而不是空字符串,則該字符串可能不會爲空。

你也應該考慮像<input type="checkbox">這樣的事情,如果沒有選中,瀏覽器根本不會發送數值。或者通過HTTP,所有的值最初都是字符串。所以,你可能要使用過濾器像filter_var("false", FILTER_VALIDATE_BOOLEAN)果然字符串"false",不會評估爲empty)到布爾值false那會)。

+0

感謝您的這張備忘單。很容易找到你想要使用的方法。 – Francisunoxx

相關問題