Ait olmak CakePHP'de ve html seçeneğini sorun, ben nasıl anlayamıyorum ki

2 Cevap php

Cakephp çaylak tarafından basit bir sveyau:

i iki model, oyuncu ve takım var.

Takım bir id (içindet) ve bir cool_name (varchar) sahiptir.

Oyuncu bir id (içindet), bir cool_name (varchar) ve ekibi tablo içiçinde bir referans, team_id (içindet) sahiptir.

I içindegilizce tablolar yok çünkü yeriçindee adı Cool_name, bu yüzden alan 'isim' kullanamazsınız.

Yani, bir takım hasMany oyuncu ve bir oyuncu belongsTo ekip.

Benim Oyuncu model:

class Player extends AppModel {
    var $name = 'Player';
    var $belongsTo = array('Team');
}

(Takım modeli içerideki adı dışında hiçbir ilgisi yoktur)

PlayersController:

class PlayersController extends AppController {
    var $name = 'Players';

    function add() {
          $this->set('teams', $this->Player->Team->fiçinded('list'));
   //then save... 
    }

Oyuncunun eklenti görünümünde:

//...
echo $fveyam->içindeput('squadra_id');
//...

Tamam bu yüzden içeride ekip kimlikleri ile bir seçme var; i id istemiyveyaum, ancak takımın adını ve ardından id kaydediçinde: (html) gibi bir şey

<select name="data[Player][team_id]" id="PlayerTeamId">
<option value="1">Cool Name 1</option>

<option value="2">Cool Name 2</option>
<!-- -->
<option value="{team id}">{team cool name}</option>
</select>

I nasıl yapabilirim?

  • Solution -

yeriçindee

$this->set('teams', $this->Player->Team->fiçinded('list'));

Bu koymak

$this->set('teams', $this->Player->Team->fiçinded('list', array('fields' => array('cool name') ) ) );

2 Cevap

Eğer Team modeli ve o modele karşı find( 'list' ) yapıyoruz çünkü (CakePHP varsayılan bir görüntü alanı olarak tanır) bir name özelliği vardır, ne geri almak gerekir anahtar takım kimliği ve değer takım ismi bir ilişkisel dizidir. Eğer teams ve Kek adlı değişken içinde bu diziyi kuruyoruz gerçeği ile sizin için işi yapacak çift.

Lütfen formda, ben 'squadra_id' geldi emin değilim, ama 'teams' bu değiştirmek ve seçim listesi güzel doldurmak görmelisiniz:

echo $form->input( 'teams' );

Ben doğru anlamak, sizin görünümünde giriş tanımı haricinde bu "sihirli" etkinleştirmek için doğru her şey var. Sen find( 'list' ) automagically http://book.cakephp.org/view/189/Automagic-Form-Elements de seçme kutularını doldurmak için nasıl kullanılacağı hakkında daha fazla bilgi edinebilirsiniz.

Umarım bu yardımcı olur.

Veri belongsTo modeli ile doğrulanmış almıyor! Ben kullanımı ve team_id ve çalışıyor olabilir!