2015-05-11 34 views
0

我有一個項目表和一個圖像表。一個項目有很多圖像,一個圖像屬於一個項目。在圖像表中,我有一個名爲image_dimensions的字段。我想要實現的是獲得foreach循環,但是對於每個image_dimensions,這些循環需要不同。cakePHP 3.0 - 在同一視圖中以不同方式顯示圖像 - querybuilder

我可以通過執行該顯示的所有圖像:

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

例如,有在數據庫5倍的圖像。 3張尺寸爲2x2和2張圖像尺寸爲3x3的圖像。所以在下面的代碼中,它會給我3個div的圖像和2個空的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尺寸的圖像不同,然後用3×3尺寸的圖像。所有的圖像都在相同的視野中。因此,對於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']); 
} 
+1

你的代碼,你的解釋是有點矛盾的,是它,你只是想顯示的尺寸分組_all_相關圖像,在_one和同一視圖模板中? – ndm

+0

我想要實現的是顯示所有圖像,但具有2x2尺寸的圖像應以不同的方式顯示,然後使用3x3尺寸的圖像。所有的圖像都在相同的視野中。因此,對於2x2和3x3圖像尺寸,圖像的類和圖像周圍div的類應該不同。 – Gilko

+1

這真的就是這一切嗎?聽起來有點太簡單,因爲你需要做的就是像輸出圖像一樣有條件地輸出HTML。 – ndm

回答

0

解決方案

<?php if($images->image_dimensions == '2x2') 
     echo $this->Html->div(array('class' => 'col-lg-6') 
    ); 
     elseif($images->image_dimensions == '3x3') 
     echo $this->Html->div(array('class' => 'col-lg-12') 
    ); 
?> 
相關問題