[英]Laravel Blade templating conditional formatting
我一般來說是Laravel / MVC的新手,如果這是一個愚蠢的問題,非常抱歉。 我正在遷移舊的程序應用程序,並試圖以逗號分隔的值回顯“標題,城市,州,國家/地區”的單獨的數據庫行(通過Eloquent模型獲取)。
我現在擁有的Blade模板看起來像這樣,雖然功能正常但很丑陋。
@foreach ($projects as $projects)
{{ $projects->title}}{{ $projects->city? ', '.$projects->city : ""}}{{ $projects->state? ', '.$projects->state : "" }}{{ $projects->country? ', '.$projects->country : "" }}
@endforeach
有一個更好的方法嗎? 遺留的過程代碼將其推入數組並像下面那樣進行內推,但是如果我確實進行了數組推入/內推,則我不太確定它是否屬於Eloquent模型或控制器。
$tempArray = array();
if($row["city"]) array_push($tempArray, convert_text($row["city"]));
if($row["state"]) array_push($tempArray, convert_text($row["state"]));
if($row["country"]) array_push($tempArray, convert_text($row["country"]));
echo implode(", ", $tempArray);
echo (count($tempArray) > 0)?", ":"";
好吧..這應該工作:
@foreach ($projects as $project)
{{ implode(', ', array_filter([$project->city, $project->state, $project->country])) }}
@endforeach
更新: $project->attributes
受保護,因此我將上面的代碼調整為$project->getAttributes()
。
更新2:我錯過了排除具有空字符串的屬性的意義,因此我在上面的代碼中添加了array_filter()
來過濾出具有“假”值的屬性(例如,空字符串或null
)。
更新3:意識到您想要按特定順序array_only()
屬性。並且還意識到代碼可能要簡單得多,因此刪除了array_only()
和$project->getAttributes()
array_only()
$project->getAttributes()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.