У меня есть два массива, один содержит все возможные параметры выбора, а другие выбранные параметры, которые должны быть «красными», как мне это сделать? - PullRequest
0 голосов
/ 24 ноября 2011

Контроллер:

    $params = array(
        'fields' => array('Course.id', 'Course.weekstart'),
        'conditions' => array(
            'Course.program_id' => $program_id
        )
    );    
    $paramsflagged = array(
        'conditions' => array(
            'Course.course_full' => 1,
            'Course.program_id'  => $program_id         
         ),
         'fields' => array('Course.id', 'Course.weekstart')
    );
    $flaggedcourses = $this->Course->find('list', $paramsflagged);
    $courses = $this->Course->find('list', $params);
    $this->set('courses', $courses);
    $this->set('flaggedcourses', $flaggedcourses);

Представление, генерирующее список выбора для всех вариантов (с использованием массива курсов):

<select>
    <?php foreach ($courses as $key => $course): ?> 
        <option id="<?php echo $key;?>">        
            <?php echo $course; ?>
        </option>
    <?php endforeach;?> 
</select>

Массив курсов =>

Array
(
   [2836] => 4 16:40:00
   [2835] => 3 13:20:00
)

Массив FlaggedCourses =>

Array
(
    [2835] => 3 13:20:00
)

Итак, как лучше всего создать новый массив опций выбора в этом представлении, который может «добавить класс» к опциям, которые были в массиве flaggedcourses?

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011
<select>
<?php foreach ($courses as $key=>$course): ?> 
    <?php
        if (array_key_exists($key, $flaggedcourses)) {
            $class = ' class="flagged"';
        } else {
            $class = '';
        }
    ?>  
    <option id="<?= $key;?>"<?= $class; ?>>
        <?php echo $course; ?>
    </option>
<?php endforeach;?> 
</select>
0 голосов
/ 24 ноября 2011

Попробуйте это

foreach ($courses as $key=>$course):
    if (isset($flaggedcourses[$key])):
        $color = ' style="color:red"';
    else:
        $color = '';
    endif;

    echo <<<option
    <option id="{$key}"{$color}>{$course}</option>
    option;

endforeach;
0 голосов
/ 24 ноября 2011

использовать многомерный массив

Array
(
   [2836] => array('value'=> '4 16:40:00', 'flagged' => '')
   [2835] => array('value'=> '3 13:20:00', 'flagged' => 'selected')
)

<select>
<?php foreach ($courses as $key => $course): ?>   
<option id="'.$key.'" selected="'.$course['flagged'].'">        
    <?php echo $course['value']; ?>
</option>
<?php endforeach;?> 
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...