<?php
$fGetSelectOptions = function ($fGetSelectOptions, array $data, $parentId = 0, $level = 0) {
$return = '';
foreach ($data as $d) {
if($d['parent_id'] == $parentId) {
$prefix = str_repeat('- ', $level);
$return .= '<option value="' . $d['id'] . '">' . $prefix . $d['title'] . '</option>';
} else {
$return .= $fGetSelectOptions($fGetSelectOptions, $data, $d['id'], ++$level);
}
}
return $return;
};
$selectData = [
[
'id' => 1,
'title' => 'odin',
'parent_id' => 0,
],
[
'id' => 2,
'title' => 'dva',
'parent_id' => 1,
],
];
?>
<select id="category-parent_id" class="form-control" name="Category[parent_id]">
<?= $fGetSelectOptions($fGetSelectOptions, $selectData) ?>
</select>
[
// обязательный, указывает, какие атрибуты должны быть проверены по этому правилу.
// Для одного атрибута, вы можете использовать имя атрибута не создавая массив
['attribute1', 'attribute2', ...],
// обязательный, указывает тип правила.
// Это может быть имя класса, псевдоним валидатора, или метод для проверки
'validator',
// необязательный, указывает, в каком случае(ях) это правило должно применяться
// если не указан, это означает, что правило применяется ко всем сценариям
// Вы также можете настроить "except" этот вариант применяет правило ко всем
// сценариям кроме перечисленных
'on' => ['scenario1', 'scenario2', ...],
// необязательный, задает дополнительные конфигурации для объекта validator
'property1' => 'value1', 'property2' => 'value2', ...
]
/media
*
!.gitignore
class Payment
{
//...
public function getCustomerFirstname()
{
return $this->customer ? $this->customer->firstname : null;
}
}
echo ($c = $payment->getCustomer()) ? $c->getFirstname() : '[удален]';
if (!$work->category) {
print_r($work);
}
if ($work->category && $work->category->type == Category::TYPE_URGENT_WORK) {
// ...
}
$query = "INSERT INTO `usr`.`rtm` (`lol`) VALUES ('".$a."')";
return $this->redirect('site/signup-step-two', 302, false);