Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel刀片模板条件格式_Php_Oop_Laravel - Fatal编程技术网

Php Laravel刀片模板条件格式

Php Laravel刀片模板条件格式,php,oop,laravel,Php,Oop,Laravel,一般来说,我对Laravel/MVC还不熟悉,如果这是一个愚蠢的问题,我很抱歉。我正在迁移一个遗留程序应用程序,并尝试将“Title、City、State、Country”的单独数据库行(通过一个雄辩的模型获取)作为逗号分隔的值进行回显 我现在拥有的刀片模板看起来是这样的,虽然功能强大,但非常可怕 @foreach ($projects as $projects) {{ $projects->title}}{{ $projects->city? ', '.$projects->

一般来说,我对Laravel/MVC还不熟悉,如果这是一个愚蠢的问题,我很抱歉。我正在迁移一个遗留程序应用程序,并尝试将“Title、City、State、Country”的单独数据库行(通过一个雄辩的模型获取)作为逗号分隔的值进行回显

我现在拥有的刀片模板看起来是这样的,虽然功能强大,但非常可怕

@foreach ($projects as $projects) 
{{ $projects->title}}{{ $projects->city? ', '.$projects->city : ""}}{{ $projects->state?  ', '.$projects->state : "" }}{{ $projects->country? ', '.$projects->country : "" }}
@endforeach
有更好的方法吗?遗留过程代码将其推送到一个数组并像下面那样内爆,但如果我确实执行了数组推/内爆,我不太确定它是否属于雄辩的模型或控制器

$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\u filter()
,以过滤出具有“falsy”值的属性(例如空字符串或
null


更新3:意识到您希望属性按特定顺序排列。。而且还意识到代码可能要简单得多,因此删除了
数组_only()
$project->getAttributes()

。。这应该起作用:

@foreach ($projects as $project) 
    {{ implode(', ', array_filter([$project->city, $project->state, $project->country])) }}
@endforeach
更新:
$project->attributes
受保护,因此我将上面的代码调整为
$project->getAttributes()

更新2:我忽略了排除具有空字符串的属性的要点,因此我在上面的代码中添加了
array\u filter()
,以过滤出具有“falsy”值的属性(例如空字符串或
null


更新3:意识到您希望属性按特定顺序排列。。而且还意识到代码可能要简单得多,所以删除了
数组_only()
$project->getAttributes()

刚要对空字符串问题发表评论,但我看到您更新了。非常感谢你,工作起来很有魅力,比我想出的所有解决方案都优雅得多。谢谢不客气!请注意,我刚刚进行了另一次更新,这也按照您想要的顺序提供了属性,并且代码更简单。我正要对空字符串问题发表评论,但我看到您进行了更新。非常感谢你,工作起来很有魅力,比我想出的所有解决方案都优雅得多。谢谢不客气!请注意,我刚刚做了另一个更新,这也按照您想要的顺序提供了属性,代码更简单。