Neden CakePHP yerine benim formunda bir metin kutusuna bir damla aşağı render edilir?

2 Cevap php

Ben veritabanından alınan vales kullanarak bir metin kutusu oluşturmak için çalışıyorum. Ama bunun yerine bir metin kutusu, bir seçme kutusu (aşağı kutusu açılır) oluşturulur. Ben neden anlamıyorum. Metin yalnızca, o zaman neden bir seçme kutusu yaratılıyor gibi türünü verdik?

echo $form->input($r['Attribute']['label'], 
                  array('label' => $r['Attribute']['label'].'  * ',
                        'class' => 'required',
                        'id'    => $r['Attribute']['id'],
                        'name'  => $r['Attribute']['label'],
                        'type'  => 'text',
                        'style' => 'width:' . $r['Attribute']['size'] . 'px'));

Bu birkaç kayıtları ile Özellikler tablodur.

id  form_id  label  type    size  sequence_no  required
2   1        Name   text    200   1            true
3   1        Age    number  200   2            true

$ Form-> giriş çıkışı

<div class="input select">
<label for="4">Name * </label>
<select id="4" class="required" style="width: 200px;" name="data[Name]"> </select>
</div>

yerine

<div class="input text">
<label for="4">Name * </label>
<input id="4" class="required" style="width: 200px;" name="data[Name]"> </input>
</div>

Nasıl giriş tipi açıkça "metin" olarak söz bile "seçmek" olarak kaydedilmiş olsun demek?

2 Cevap

Attribute.label değeri harfle olduğundan, CakePHP bir belongsTo ilişkinin çizgisinde başka bir model için bir referans olduğunu düşünüyor, ve bu yüzden otomatik olarak listeyi vermeye çalışır.

Değiştirmeyi deneyin:

$form->input($r['Attribute']['label'],

ile gibi bir şey:

$form->input('Attribute.'.$r['Attribute']['id'].'.label',

hangi gereken çıktı:

<div class="input text">
<label for="4">Name * </label>
<input id="4" class="required" style="width: 200px;" name="data[Attribute][2][label]" />
</div>

Bu size CakePHP tanıyacak bir yapı içinde ihtiyacınız olan tüm bilgileri verecektir.

Düzenleme: Oh, ve bu sadece saçma HTML özelliklerini oluşturmak için gidiyor çünkü 'id' => $r['Attribute']['id'], sahip satırı değiştirin. Gibi bir şey 'id' => 'Attribute'.$r['Attribute']['id'] daha yararlı olmalıdır.

Eğer "isim", diyelim ki, adında bir alan var, ve aynı zamanda "$names" adında sizin görünümünde bir değişken var ve bu değişken adlandırma kuralı ile, bir dizi olup olmadığını, bir isimli düşünebildiğim tek şey Kek bu arada ait düşünebilir.

FormHelper bakarak, bu kod parçası aslında var:

$types = array('text', 'checkbox', 'radio', 'select');
if (!isset($options['options']) && in_array($options['type'], $types)) {
    // ... looks for corresponding variable in the view ...
    $options['type'] = 'select';

Bu Kek kendisi tarafından giriş türünü değiştirmek olabilir, özel durum gibi görünüyor.

'options' => null $form->input() argümanlar yardımcı olmalıdır ayarı gibi görünüyor.