Laravel Blade模板条件格式

nephenee245

我一般来说是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)?", ":"";
杰罗恩·诺顿(Jeroen Noten)

好吧..这应该工作:

@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()$project->getAttributes()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章