Cakephp 蛋糕填充模型的下拉列表
我正在尝试用一些选项填充dropdpwn。我正在尝试为我的输入表单提供一个带有姓名标题和国家列表的下拉列表 例如: 我需要“先生”、“太太”、“小姐” 我尝试了以下方法: 模型 控制器Cakephp 蛋糕填充模型的下拉列表,cakephp,Cakephp,我正在尝试用一些选项填充dropdpwn。我正在尝试为我的输入表单提供一个带有姓名标题和国家列表的下拉列表 例如: 我需要“先生”、“太太”、“小姐” 我尝试了以下方法: 模型 控制器 public function add() { if ($this->request->is('post')) { $this->Member->create(); if ($this->Member->save($this->re
public function add() {
if ($this->request->is('post')) {
$this->Member->create();
if ($this->Member->save($this->request->data)) {
$this->Session->setFlash(__('The member has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The member could not be saved. Please, try again.'));
}
}
}
看法
对于较长的列表(如国家/地区),我缺少的是什么,最好的解决方案是什么,它只在表单上,所以我认为我不需要标题和国家/地区表以及链接ID?我发现非常奇怪的是,您必须在下拉列表的模型结构中创建一个变量。特别是如果你只打算用一次的话 但首先要做的是。您得到该错误是因为您没有将变量设置为视图。在控制器中,需要有如下内容:
public function add() {
$this->set('titles', $your_titles_array);
if ($this->request->is('post')) {
//etc
现在,请把下拉列表从那里拿开。有两个可能更好的地方可以这样说。我不会挑三拣四地说,您需要在数据库中将这些值作为一个表。如果你说这只是为了一个地方,你想把它硬编码,那就这样吧
一种选择是将其放在一个模型中,如
class YourModel extends AppModel {
//all your other definitions
public function getTitles() {
return array(
0 => __('Mr', true),
1 => __('Mrs', true),
2 => __('Miss', true));
}
}
在控制器中执行以下操作:
public function add() {
$this->set('titles', $this->YourModel->getTitles());
if ($this->request->is('post')) {
//etc
但是,我认为您没有合适的模型来添加该函数。你打算在哪里添加它?也许是用户模型?比如说,它不能像后期模型那样,那没有任何意义。。。所以,想一想,如果模型中有一个合乎逻辑的地方,你可以把这个函数放进去,然后继续
否则,如果只是一个地方的一个表单,那么为什么不将其硬编码到视图或控制器
对于更大的列表,我的建议是在我展示的模型中进行(但我坚持,将它放在具有逻辑性的模型中)。嗯,我宁愿有一个表并引用值,但这不是强制性的(尽管考虑一下,这真的没有那么多工作,是吗?我的意思是,对于更大的列表)。我发现你必须在下拉列表的模型结构中创建一个变量,这真的很奇怪。特别是如果你只打算用一次的话 但首先要做的是。您得到该错误是因为您没有将变量设置为视图。在控制器中,需要有如下内容:
public function add() {
$this->set('titles', $your_titles_array);
if ($this->request->is('post')) {
//etc
现在,请把下拉列表从那里拿开。有两个可能更好的地方可以这样说。我不会挑三拣四地说,您需要在数据库中将这些值作为一个表。如果你说这只是为了一个地方,你想把它硬编码,那就这样吧
一种选择是将其放在一个模型中,如
class YourModel extends AppModel {
//all your other definitions
public function getTitles() {
return array(
0 => __('Mr', true),
1 => __('Mrs', true),
2 => __('Miss', true));
}
}
在控制器中执行以下操作:
public function add() {
$this->set('titles', $this->YourModel->getTitles());
if ($this->request->is('post')) {
//etc
但是,我认为您没有合适的模型来添加该函数。你打算在哪里添加它?也许是用户模型?比如说,它不能像后期模型那样,那没有任何意义。。。所以,想一想,如果模型中有一个合乎逻辑的地方,你可以把这个函数放进去,然后继续
否则,如果只是一个地方的一个表单,那么为什么不将其硬编码到视图或控制器
对于更大的列表,我的建议是在我展示的模型中进行(但我坚持,将它放在具有逻辑性的模型中)。好吧,我宁愿有一个表并引用这些值,但这不是强制性的(尽管想一想,这真的没那么多工作,是吗?我的意思是,对于更大的列表)。哇,好的教育!我总是喜欢听到不同的人喜欢用CakePHP进行结构化。回答得好。是的,谢谢你的详细回复。我真的很感激。下拉列表将用于名为members(非常像用户)的模型中。我看过一个youtube视频和一个使用模型构造器的教程,但没有完全解释它。从我的观点来看,这是一个奇怪的方法,也许如果我看到教程,我会看到光明,发现他们有世界上所有的理由。但是你描述你的问题的方式,我认为在构造器中有这样的东西是过分的,如果它只被使用一次的话。哇,好的教育!我总是喜欢听到不同的人喜欢用CakePHP进行结构化。回答得好。是的,谢谢你的详细回复。我真的很感激。下拉列表将用于名为members(非常像用户)的模型中。我看过一个youtube视频和一个使用模型构造器的教程,但没有完全解释它。从我的观点来看,这是一个奇怪的方法,也许如果我看到教程,我会看到光明,发现他们有世界上所有的理由。但是你描述你的问题的方式,我认为在构造器中有这样的东西是过分的,如果它只被使用一次的话。