2012-11-16 63 views
0

我正在嘗試創建一個複選框,其中沒有附加到輸入的標籤以及控制實際輸入的複選框之後的標籤。它應該是這樣的網頁上:CakePHP - 更改標籤的「for」屬性

Account Suspended: [X] Prevent the user from logging in 

view.ctp

$this->Form->label('Account Suspended'); 
$this->Form->input('account_suspended', array(
    'type' => 'checkbox', 
    'label' => 'Prevent the user from logging in' 
)); 

我目前遇到的問題是,第一個標籤正在使用自動生成的for屬性創建它與輸入的ID相匹配,因此如果您點擊它們,兩個標籤都會切換複選框。

第一個標籤

CakePHP的生成的標記看起來像這樣,因爲它的標籤值自動轉換成駱駝情況下的ID爲for屬性:

<label for="CustomerAccountSuspended">Account Suspended:</label> 

我想的第一個標籤到僅僅是:

<label>Account Suspended:</label> 

我該如何使用cakePHP FormHelper來做到這一點,而不是訴諸手動輸入標籤HTML?

回答

2

這是可能的:

echo $this->Form->label('Account Suspended', null, array('for' => false)); 

不要忘記用翻譯:P幾乎每一個代碼的每一個部分是可重複使用。如果你現在不需要它,你也許不遺餘力在其他項目一段時間;)

問候 func0der

+0

謝謝,我沒有使用'null'作爲第二個參數,它不工作。 – BadHorsie

+0

沒問題。有時候可以看看cakephp的源文件。您可以看到事情正在發生,並且比文檔中的功能更快。有時你會發現沒有完整記錄或缺少功能的功能。 這是PHP或Javascript等編程語言的最大優勢。你可以隨時查看原始代碼;) – func0der

1

什麼不會輸入純HTML?如果您不需要自動生成的for屬性,則不需要調用我認爲的FormHelper。

echo '<label>Account Suspended:</label>'; 
$this->Form->input('account_suspended', array(
    'type' => 'checkbox', 
    'label' => 'Prevent the user from logging in' 
)); 

<label>Account Suspended:</label> 
<?php 
$this->Form->input('account_suspended', array(
    'type' => 'checkbox', 
    'label' => 'Prevent the user from logging in' 
)); 

將是非常有效

+0

我知道,我只是想知道你怎麼能與表單助手去做。提供'for'屬性很奇怪,該選項不會與助手中的默認選項數組合並。 – BadHorsie

+0

我只會接受,沒有辦法做到這一點。 – BadHorsie