Estou tentando implementar uma selecao em checkbox para categorias de posts de um blog em CakePHP.
Em resumo, acho que o Cake está escrevendo o valor de cada check box um em cima do outro porque o resultado final na array fornece apenas 1 elemento que os valores variam em 0 e 2, os valores do último checkbox. =´)
Se alguém já passou por algo parecido e tiver alguma dica, será de graaaaaande ajuda.
Abaixo trechos dos códigos do Cake que ajudam a entender o que está acontecendo:
Abracos,
Three®
pr($categories) answer:
Array
(
[1] => automotive
[4] => banking and finance
[5] => construction
[6] => consulting
[7] => energy
[3] => study case
[2] => telecom
)
-----------------------------------------------------------------------------
Trecho do código no View/news_posts/manage
<table>
<tr>
<td>Categories:</td>
<td><? foreach ($categories as $id=>$name)
{
echo $name;
echo $html->checkbox('CategoriesNewsPost/category_id', $name, array('value'=> $id, 'id' => $name.'_'), true);
echo '<br />';
} ?>
</td>
</tr>
</table>
-----------------------------------------------------------------------------
Código retirado do script
<table>
<tr>
<td>Categories:</td>
<td>
automotive<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="automotive__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="1" id="automotive_" /><br />
banking and finance<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="banking and finance__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="4" id="banking and finance_" /><br />
construction<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="construction__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="5" id="construction_" /><br />
consulting<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="consulting__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="6" id="consulting_" /><br />
energy<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="energy__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="7" id="energy_" /><br />
study case<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="study case__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="3" id="study case_" /><br />
telecom<input type="hidden" name="data[CategoriesNewsPost][category_id]" value="0" id="telecom__" /><input class="input_checkbox" type="checkbox" name="data[CategoriesNewsPost][category_id]" value="2" id="telecom_" /><br />
</td>
</tr>
</table>
-----------------------------------------------------------------------------
parte do código no controller:
<?php
if(!empty($this->data))
{
pr($this->data);
if($this->NewsPost->validates($this->data))
{
if ($this->NewsPost->save($this->data))
{
// if Save and Continue Button
$this->set('done', 'true');
$this->set('newspost_id', $this->NewsPost->getID());
$this->NewsPost->saveField('user_id', $userlogged['id']);
foreach ( $this->data['CategoriesNewsPost'] as $data)
{
if ($data['category_id'] != 0)
{
$this->CategoriesNewsPost->id = null;
$this->CategoriesNewsPost->saveField('news_post_id',$this->NewsPost->getLastInsertID());
$this->CategoriesNewsPost->saveField('category_id',$this->data['CategoriesNewsPost']['category_id']);
}
}
// if Save Button +
$this->redirect('/news_posts/index');
// if Publish Button +
//$this->NewsPost->saveField('draft', '0');
}
}
else
{
$this->validateErrors($this->Comments); //set the values for the tagErrorMsg
}
?>
-----------------------------------------------------------------------------
pr($this->data) answer:
Array
(
[NewsPost] => Array
(
[title] => Test 6
[resume] =>
[message] =>
Test 6
[attached_path] =>
[allow_comment] => 1
[publish] => 0
)
[CategoriesNewsPost] => Array
(
[category_id] => 2
)
)
Pergunta
three
Hallo Leute!
Estou tentando implementar uma selecao em checkbox para categorias de posts de um blog em CakePHP.
Em resumo, acho que o Cake está escrevendo o valor de cada check box um em cima do outro porque o resultado final na array fornece apenas 1 elemento que os valores variam em 0 e 2, os valores do último checkbox. =´)
Se alguém já passou por algo parecido e tiver alguma dica, será de graaaaaande ajuda.
Abaixo trechos dos códigos do Cake que ajudam a entender o que está acontecendo:
Abracos,
Three®
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.