Concrete 5.8 Express Entry Block — фильтрация результатов по атрибуту

Следуя документации для разработчиков здесь можно ли пойти дальше и отфильтровать результаты по атрибутам объекта?

Например, предположим, что у вас есть несколько лодок в гавани, у которых один и тот же владелец, и вы хотите найти в гавани только лодки этого владельца. Существует ли способ дальнейшей фильтрации данных (например, фильтр по атрибуту BoatOwner).

После длительного чтения документации Doctrine2 я понял, что это можно сделать, но я не могу понять, как расширить код C5 или какие методы я могу вызвать для этого.

<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<?php

if (isset($entry) && is_object($entry)) {

$boats = $entry->getBoats();

?>

<table class="table">
    <thead>
    <tr>
        <th>Name</th>
        <th>Year</th>
        <th>Owner</th>
        <th>Classification</th>
    </tr>
    </thead>
<tbody>
<?php if (count($boats)) {
    foreach($boats as $boat) { ?>
        <tr>
            <td><?=$boat->getBoatName()?></td>
            <td><?=$boat->getBoatYear()?></td>
            <td><?=$boat->getBoatOwner()?></td>
            <td><?=$boat->getBoatClass()?></td>
        </tr>
    <?php } ?>
<?php } else { ?>
    <tr>
        <td colspan="4">No boats found.</td>
    </tr>
<?php } ?>
</tbody>
</table>

<?php } ?>

Выше приведен код из документации C5. Можно ли каким-то образом расширить волшебный метод «get» или есть более простое решение, работающее с массивом $boats (я думаю, это массив), чтобы выбирать только лодки с определенным значением атрибута?


person Gordon    schedule 14.01.2017    source источник


Ответы (1)


Ответ заключался в том, чтобы поместить оператор if в цикл foreach.

if (count($boats)) {
    foreach($boats as $boat) { 
if($boat->getBoatOwner() == "boat owner's name here") {
?>
<tr>
        <td><?=$boat->getBoatName()?></td>
        <td><?=$boat->getBoatYear()?></td>
        <td><?=$boat->getBoatOwner()?></td>
        <td><?=$boat->getBoatClass()?></td>
    </tr>

<?php;
            } else {
                ?>

    <?php;
            } 



        ?>



        <?php } ?>
    <?php } else { ?>
        <tr>
            <td colspan="4">No boats found.</td>
        </tr>
    <?php } ?>
    </tbody>
</table>
<?php } ?>

Я думаю, что передам имя владельца лодки как переменную, вероятно, из атрибута страницы, чтобы это было полезно.

person Gordon    schedule 15.01.2017