2012-09-04 35 views
0

我正在研究現有項目。有許多形式是這樣的:如何在cakephp中使用自定義名稱創建表單元素?

<?php echo $form->create('MyForm', array('id' => 'MyFormId')); ?> 

    <?php echo $form->input('User.0.username', array('label' => false,)); ?> 
    <?php echo $form->input('User.0.location', array('label' => false,)); ?> 

<?php echo $form->end(); ?> 

它生成表單元素是這樣的:

<input type="text" id="User0Username" name="data[User][0][username]"> 
<input type="text" id="User0Location" name="data[User][0][location]"> 

卜我想他們是這個樣子:

<input type="text" id="User0Username" name="User_0_username"> 
<input type="text" id="User0Location" name="User_0_location"> 

是否有任何$form->create();函數選項來獲得這個HTML而不是改變我的表單元素?

感謝

+0

你的觀點是什麼?有一個原因,爲什麼蛋糕這樣做。你的方式發佈的數據在控制器中不如可用。驗證和其他事情都是一團糟,無效的表單很可能會中斷。 -1從我這裏。 – mark

+1

是的,我知道發佈的數據不會有幫助,但我需要這個,因爲我通過'jQuery.ajax()'提交它並且'serialize()'函數沒有正確地提交post數組。請檢閱這個問題http://stackoverflow.com/questions/12247457/post-associative-array-using-jquery-ajax –

+0

我回答了一種方法如何正確使用ajax發佈和蛋糕,而不必打破蛋糕編碼風格。 – mark

回答

0

我總是使用支架版本 - 即使jQuery的AJAX提交。順便說一下:

var ids = new Array(); 
var myCheckboxes = new Array(); 
$("#ProductCalculation input:checked").each(function() { 
    ids.push($(this).val()); 
}); 
... 
$.ajax({ 
    dataType: 'json', 
    type: "post", 
    data: { 
     'data[Product][product_calculation_id]': ids, 
     'data[Product][brand_id]': brands, 
     'data[Category][Category]': categories, 
     'data[Form][connect]': c 
    }, 
    url: targeturl, 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    }, 
    success: function(html) { 
     ... 
    } 
}); 

你可以手動抓取表單元素。不理想,但它不會破壞蛋糕風格編碼

我也確信可以編寫一個jQuery插件以某種方式自動完成此操作。這實際上是一件很有趣的事情。

0
The Form helper is pretty smart. Whenever you specify a field name with the form helper methods, it'll automatically use the current model name to build an input with a format like the following: 

    <input type="text" id="ModelnameFieldname" name="data[Modelname][fieldname]"> 

,您可以手動在Modelname.fieldname傳遞作爲第一個參數指定型號名稱。

echo $this->Form->input('Modelname.fieldname'); 

如果需要使用相同的字段名稱,從而產生可與白水(被保存在一杆)的數組指定多個字段,請使用以下約定:

<?php 
echo $this->Form->input('Modelname.0.fieldname'); 
echo $this->Form->input('Modelname.1.fieldname'); 
?> 

<input type="text" id="Modelname0Fieldname" name="data[Modelname][0][fieldname]"> 
<input type="text" id="Modelname1Fieldname" name="data[Modelname][1][fieldname]"> 
+0

感謝您的答案,但我不想在元素名稱中有括號。 –

+0

手動創建輸入 – Ross

+0

如果這是客觀的,那麼我沒有提交問題。無論如何,謝謝 –

相關問題