2015-12-22 33 views
1

這是我用來嘗試和使用CakePHP Form Helper的過程。這些例子是我自己和我發現的並且絕對不起作用的組合。每個例子都運行相同的數據,這是設置,應該產生一個複選框,但使用表單助手它肯定是像我所期望的。未使用Form Helper檢查CakePHP複選框

這個作品

這個工作,但我想用CakePHP的形式幫助

<input type="checkbox" name="value" <?php if(($this->data[ $alias ])){echo "checked";}?>> 

但是,這並不工作

<?php 
echo $this->Form->checkbox('value', [ 
    'checked' => ($this->data[ $alias ]) ? true : false 
]); 
?> 

不起作用

顯然這對一些人有用,因爲我發現這是許多人的解決方案,但它絕對不會使複選框被選中。

<?php 
$checked = if($this->data['alias']) ? true : false; 
echo $this->Form->checkbox('value', ['checked' => $checked]); 
?> 

不工作

無論出於何種原因,這工作,但也不是那麼我做下面的示例退而求其次非常有用的。

<?php 
echo $this->Form->checkbox('value', ['checked']); 
?> 

但是這樣不起作用???

雖然上面的例子中不工作,這並不...

<?php 
$options = []; 

if($this->data[ $alias ]) { 
    array_push($options, 'checked'); 
    // $options = ['checked']; // this didn't work either 
} 

echo $this->Form->checkbox('value', $options); 
?> 

回答

0

好吧,這是愚蠢的,我沒有嘗試這個較早,但對於那些有同樣的問題和鴿子洞自己這要求你不要使用布爾值,必須是'真'和'假'。

解決方案,工程

<?php echo $this->Form->checkbox('value', [ 
     'checked' => ($this->data[ $alias ]) ? 'true' : 'false' 
    ]); ?> 
+2

你應該從控制器傳承中的數據,並有在控制器設置默認的數據和/或向下傳遞請求數據。 你的看法應該只包含$ this-> Form->複選框('fieldname')。無需其他任何東西,請參閱[this](http://www.dereuromark.de/2010/06/23/working-with-forms/)。 – mark