我是新蛋糕并使用版本2.
我有模特
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_cylinders表中保存hg_key_gase_id字段的值,而是在此字段中存储null。
第二,我想知道有必要传递变量名称来自控制器,与表中的字段完全相同。
答案 0 :(得分:0)
尝试坚持惯例。
所以
$hgKeyGases = $this->HgCylinder->HgKeyGase->find('list');
$this->set(compact('hgKeyGases'));
复数形式将能够填充您的选择框(如烹饪书中所述)
也使用$ this-&gt; Form-&gt; input()(注意大写字母F)。 $ name不是必需的。 不要使用read(),而是使用find(first)代替。不要设置动作(默认情况下表单会自动发布)。
最重要的是。始终尊重文件系统中的文件大小。特别是如果您计划在NIX系统上部署(区分大小写)。 所以它是HgCylinder.php和HgKeyGase.php作为Model类文件。
最后提示:使用烘焙(通过shell控制台烘烤蛋糕)来烘焙您的crud文件。这样你就可以了解它是如何以正确的方式完成的。顺便说一句,它本身也会回答你的问题。
可以在此处找到文档:http://book.cakephp.org/2.0/en/index.html 也许你发现了一个旧的过时版本,2.x是你应该使用的版本。