2012-11-08 55 views
1

我是新來的蛋糕,並使用版本2選擇列表關聯CakePHP中

我有機型

hgcylinder.php 

class HgCylinder extends AppModel { 
    //put your code here 
    var $name= "HgCylinder"; 

    var $belongsTo = array('HgKeyGase'); 
} 

hgkeygase.php 
class HgKeyGase extends AppModel { 
    //put your code here 
    var $name= "HgKeyGase"; 


    public $belongsTo = array(
     'HgKeyColor' => array(
      'className' => 'HgKeyColor', 
      'foreignKey' => 'hg_key_color_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ) 
     ); 

} 

Controller HgCylindersController.php 

<?php 

class HgCylindersController extends AppController 
{ 
    var $name = "HgCylinders"; 
    // var $scaffold; 
    function index() 
    { 
     $this->set('hey',$this->HgCylinder->find('all')); 
    } 


    public function edit($id = null) { 
     $this->HgCylinder->id = $id; 
     if ($this->request->is('post')) { 
     var_dump($this->request->data); 
     exit; 
      if ($this->HgCylinder->save($this->request->data)) { 
       $this->Session->setFlash(__('Cylinder has been updated successfull')); 
       $this->redirect(array('action' => 'index')); 
      } else { 
       $this->Session->setFlash(__('The cylinder could not be saved. Please, try again.')); 
      } 
     } else { 
      $this->request->data = $this->HgCylinder->read(null, $id); 
     } 
     $hg_key_gase_id = $this->HgCylinder->HgKeyGase->find('list'); 

     $this->set(compact('hg_key_gase_id')); 
    } 

} 

?> 

View : edit.ctp 
<?php 

echo $this->form->create('HgCylinder',array('action'=>'edit')); 
echo $this->form->input('hg_key_gase_id',); 
echo $this->form->input("capacityM3"); 
echo $this->form->input("weightEmpty"); 
echo $this->form->input("weightFilled"); 
echo $this->form->input("isFilled"); 
echo $this->form->end('Add'); 
?> 

我的問題是hg_key_gase_id更是成爲選擇列表中不帶任何選項。如果我在視圖和控制器中將名稱更改爲「hgKeyGas」,它將顯示hg_key_gases表中的選項。但是在保存時不會將hg_key_gase_id字段的值保存在hg_cylinders表中,而是在此字段中存儲空值。

秒我想知道,有必要有變量名稱傳遞從控制器查看完全相同的表中字段。

回答

0

儘量遵守慣例。

所以其

$hgKeyGases = $this->HgCylinder->HgKeyGase->find('list'); 

$this->set(compact('hgKeyGases')); 

的多元化的形式將能夠填充您的選擇框(如在烹飪書中記載)

也使用$這 - >形式 - >輸入()(注大寫字母F)。 $名稱不是必需的。 不使用read(),而是使用find(first)。不要設置動作(表單將默認發佈到自己)。

並且最重要的是。始終尊重文件系統中文件的大小寫。特別是如果您計劃在NIX系統上進行部署(區分大小寫)。 所以它會是HgCylinder.php和HgKeyGase.php作爲Model類文件。

最後提示:使用烘烤(通過外殼控制檯烘烤蛋糕)烘烤你的crud文件。通過這種方式你可以瞭解它如何以正確的方式完成順便說一下,它也會回答你的問題。

該文檔可以在這裏找到:http://book.cakephp.org/2.0/en/index.html 也許你找到了一箇舊的過時版本,2.x是你應該使用的一個。

+0

先生我還有一個問題,請看我的其他問題@mark –

+0

「複數形式將能夠填充您的選擇框」在我的答案 – mark