Eu preciso de uma lista de funcionários, mas, a informação da idade também (coluna), em outras palavras:
<option value="id" data-age="age">Name</option>
Como posso fazer isso no CakePHP? Apenas com um foreach? Por exemplo:
foreach ($employees as $emp) { ?>
<option
value="<?php echo $emp["Employee"]["id"] ?>"
data-age="<?php echo $emp["Employee"]["age"] ?>">
<?php echo $emp["Employee"]["name"] ?>
</option>
<?php } ?>
E como posso fazer isso mantendo o name/id
gerar pelo CakePHP?
Respostas:
6 para resposta № 1Caso você esteja usando o Cake 2.x, então você pode deixar o FormHelper
fazer isso para você, você só precisa formatar os dados de opções corretamente, e por corretamente eu quero dizer um array segurando matrizes com pelo menos name
e value
teclas para o option
elemento texto e o id
atributo, todas as entradas adicionais serão mapeadas como atributos em que a chave é usada como o nome do atributo e o valor como o valor do atributo.
https://github.com/cakephp/cakephp/blob/2.0.2/lib/Cake/View/Helper/FormHelper.php#L2325
Aqui está um exemplo não testado. Os dados das opções devem ficar assim:
$options = array
(
array
(
"name" => "employee-a",
"value" => 1,
"data-age" => 20,
),
array
(
"name" => "employee-b",
"value" => 2,
"data-age" => 30,
),
array
(
"name" => "employee-c",
"value" => 3,
"data-age" => 40,
),
);
E, em seguida, basta passá-lo para o auxiliar de formulário que cria um select
elemento:
echo $this->Form->input("employee_id", array("type" => "select", "options" => $options));
Isso deve gerar o seguinte HTML:
<select id="ModelEmployeeId" name="data[Model][employee_id]">
<option value="1" data-age="20">employee-a</option>
<option value="2" data-age="30">employee-b</option>
<option value="3" data-age="40">employee-c</option>
</select>