CakePHP displayField kullanım

2 Cevap php

nasıl CakePHP'nin displayField yönergesini kullanmak için bana yardımcı olabilir, bunu nasıl kullanılacağını bilemiyorum ...

yani, bir model dosyasında i kod şu var ...

<?php

sınıf Görev AppModel {uzanır

var $name = 'Task';
var $displayField = 'projectName';

//The Associations below have been created with all possible keys, those that are not needed can be removed
var $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''

vs ..

nasıl i seçin form alanında ğı ProjectName görüntülemek için, bu kullanabilir miyim?

şimdiden teşekkür ederim!

2 Cevap

(: Project_id FK) Yani, Task belongsTo Project var. Ekleyebilir ve görevler / düzenle views / görevleri bir proje seçme kutusunu yapmak istiyorum.

Sorun projeler tablo name veya title adında bir alan yok yani seçme kutusu boş olmasıdır. Bir name veya title alan varsa herhangi bir sorun yok, doğru değil mi?

İşte çözüm bu eklemek Projesi modelinde bulunuyor:

var $displayField = 'projectName';

http://book.cakephp.org/view/71/Model-Attributes

Yani sadece modellere biraz berbat, doğru yönde gittiğini. Ben şimdi bunu anlamak umut;]

Bu temelde (kontrolör) yapabilirsiniz:

$this->set('tasks', $this->Task->find('list'));

Ve adı task_id ile bir giriş yapmak, ve (görünümlerinde) bir seçme kutusu, böyle olmaya zorlamak için emin olun:

echo $form->input('task_id', array('label' => 'youLabelHere', 'type' => 'select'));

displayField size bu komut 'isim' veya 'başlığı' arar model sağlanan değilse, seçin kutusunda görüntülenen seçenek (biri) olarak kullanılacak olan alan seçmek için bir şans verir.

Eğer kullanıcıların formlara (edit seçeneği eklemek) projeleri görüntülemek için wan't sonra dernekler doğru değildir. Eğer bir seçim kutusu yapmak istiyorum her zaman iki model arasında (iyi, geleneksel masa ve anahtarlar adları ile) bir ilişki olduğundan emin olun, Kek onu alır olabildiğince o kadar kolay hale getirir.