簡體   English   中英

Laravel Blade模板條件格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM