Я не PHP-разработчик (только Rails), но у меня есть задача в PHP-коде (thebuggenie-app), которая говорит мне, что мне нужно изменить порядок отображения параметров для выбора. Проблема может быть простой, но для меня это не так просто.
Что я видел в php проекте, у меня есть что-то вроде этого (после мини исследования):
<optgroup label="<?php echo __('Globally available roles'); ?>">
<?php foreach ($global_roles as $role): ?>
<option value="<?php echo $role->getId(); ?>">
<?php echo $role>getName(); ?></option>
<?php endforeach ;?>
</optgroup>
и (вероятно) global_roles — это массив, который будет повторяться. В Rails легко сделать индивидуальный заказ, но в этом случае я понятия не имею. Если вам нужна какая-либо информация, просто дайте мне знать.
в классе действий я нашел: $this->global_roles = TBGRole::getAll();
и этот перенаправить мой разум на:
/**
* Returns all project roles available
*
* @return array
*/
public static function getAll()
{
return TBGListTypesTable::getTable()->getAllByItemTypeAndItemdata(self::ROLE, null);
}
На данный момент у меня есть разработчик в качестве первой опции (по умолчанию), и мне нужно иметь Tester в качестве 1-й опции (по умолчанию)
Каждое решение будет правильным для меня, если код будет работать 🙂
Обновление 1)
public function getAllByItemTypeAndItemdata($itemtype, $itemdata)
{
$this->_populateItemCache();
$items = (array_key_exists($itemtype, self::$_item_cache)) ? self::$_item_cache[$itemtype] : array();
foreach ($items as $id => $item)
{
if ($item->getItemdata() != $itemdata) unset($items[$id]);
}
return $items;
}
Вы можете использовать usort ().
Эта функция сортирует, используя вторую функцию, которую вы создаете и передаете параметру.
Пример:
<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $key => $value) {
echo "$chave: $valor\n";
}
?>
Других решений пока нет …