cakePHP 3.0 - 在同一视图中以不同方式显示图像 - querybuilder

时间:2015-05-11 12:50:20

标签: php mysql cakephp foreach cakephp-3.0

我有一个项目表和一个图像'表。项目有许多图像,图像属于项目。在图像表中,我有一个名为image_dimensions的字段。我想要实现的是获取foreach循环,但每个image_dimensions的循环需要不同。

我可以通过以下方式显示所有图像:

<?php foreach ($project->images as $images): ?>

例如,数据库中有5个图像。 3个尺寸为2x2的图像和2个尺寸为3x3的图像。因此,在下面的代码中,它将为我提供3个带有图像和2个空div的div。那些空的div不应该在那里。

每个图像维度还需要有所不同的是div的类。有时我想使用col-lg-6,有时候使用col-lg-12,......

<?php foreach ($project->images as $images): ?>
    <div class="col-lg-6">
       <?php
         if($images->image_path && $images->image_dimensions == '2x2')
         echo $this->Html->image($images->image_path, array(
        'class' => 'img-responsive center-block project-images'));
       ?>
    </div>
<?php endforeach; ?>

我也读过cakephp中的querybuilder。我想我需要用它来解决我的问题。但似乎无法使查询生效。

$project = $this->Projects->find();
$project->matching('Images', function($q){
   return $q->where(['Images.image_dimensions' => '2x2']);
}

我想要实现的是显示所有图像,但具有2x2尺寸的图像应以不同于3x3尺寸的图像显示。所有图像都在相同的视图中。因此,对于2x2和3x3图像尺寸,图像的类和图像周围的div类应该是不同的。 是否可以在foreach循环中添加条件?

我在Projectscontroller中的视图操作

public function view($id = null)
{
    $project = $this->Projects->get($id, [
        'contain' => ['Categories', 'Users', 'Tags', 'Images'],
    ]);

    $this->set('project', $project);
    $this->set('_serialize', ['project']);
}

0 个答案:

没有答案