cakePHP调用方法语法
我是cakePHP和OO编程新手,这个问题对大家来说都很明显,但我还是要问: 我有一个名为“Dossier”的模型,它从包含各种字段的SQL表中获取数据,其中有一个名为“bin_valide”的int(1)(布尔)类型 我想写一个简单的函数,只检查这个字段的值,并在视图部分(index.ctp)显示true或falsecakePHP调用方法语法,php,oop,cakephp,Php,Oop,Cakephp,我是cakePHP和OO编程新手,这个问题对大家来说都很明显,但我还是要问: 我有一个名为“Dossier”的模型,它从包含各种字段的SQL表中获取数据,其中有一个名为“bin_valide”的int(1)(布尔)类型 我想写一个简单的函数,只检查这个字段的值,并在视图部分(index.ctp)显示true或false 我应该在哪里声明这样的函数(看起来像这样,我把这段代码放在model Dossier.php页面中,但也许它应该放在DossierController.php中…(这里不确定)
- 我应该在哪里声明这样的函数(看起来像这样,我把这段代码放在model Dossier.php页面中,但也许它应该放在DossierController.php中…(这里不确定)
- 如何调用此函数?(我在index.ctp视图页面中尝试了类似的操作:
echo $dossier['Dossier']['commentaire']; echo $dossier->estClos();
我知道这看起来很简单,但我就是不知道应该在哪里使用这种方法,以及应该如何访问它。非常感谢。将变量传递给视图,您可以从此引用它
public function view_action() {
$value = false;
if ($this->Dossier->field('bin_valide')==0) { $value = true; }
$this->set('myValue', $value);
}
然后,您可以在视图中引用myValue变量。您不应该在视图中调用任何函数,控制器是准备要在视图中使用的所有数据的地方。在这种情况下,我只是将数据集中的整数转换为视图中的布尔值 首先,从
档案
表中获取所有条目(或在需要时添加条件):
然后您将得到一个数组,该数组类似于:
0 => array( // First dossier
'Dossier' => array(
'id' => 1,
'name' => 'Some dossier',
'bin_valide' => 0
)
),
1 => array( // Second dossier
'Dossier' => array(
'id' => 2,
'name' => 'Another dossier',
'bin_valide' => 1
)
)
在您看来,您可以简单地在档案上循环:
// app/View/Dossiers/index.ctp
foreach ($dossiers as $dossier):
echo '<p>The name of the dossier is: ' . $dossier['Dossier']['name'] . '</p>';
echo '<p>Valid: ' . (bool)$dossier['Dossier']['bin_valide'] . '</p>';
endforeach;
//app/View/Dossiers/index.ctp
foreach($dossiers as$dossier):
echo'档案的名称为:'.$dossier['dossier']['name'].';
回音“有效:”(bool)$dossier['dossier']['bin_valide'].”;
endforeach;
这将打印:
档案的名称是:一些档案
有效:假
档案的名称是:另一份档案
有效:正确
我建议您从基本了解MVC和CakePHP开始,而不是试图将各个部分粘在一起 这是你必须理解的。检查一下一般的设计模式和。并且有php中不同模式的例子 也可以从CakePHP开始,而不是尝试非结构化的试错方法,在没有阅读基础知识的情况下做一些事情 您的控制器命名错误。控制器应命名为复数,因此应命名为DossiersController。模型总是单数的。您应遵循。如果不遵循,某些automagic将无法工作 所有数据操作和获取都应该进入模型
public function getStatus() {
return $this->Dossier->field('bin_valide');
}
您的控制器就像一个管理器,从模型中获取数据并将其返回到视图。它基本上只处理您的请求。模型也比控制器更容易测试,基本规则是您需要胖模型和瘦控制器。控制器只会将数据设置到视图:
public function status() {
$this->set('status', $this->Dossier->getStatus());
}
在您看来,简单地用它做点什么:
if ($status === 1) { echo 'Yes'; } else { echo 'No'; }
帮你自己一个忙,先做博客教程,它会让你对CakePHP有一个基本的了解,并防止因非结构化的尝试和错误而受挫。:)谢谢你的快速回答。但让我们想象一下,该字段稍微复杂一些:类似于int字段“type”,我想将以下单词关联起来:-type=1:“apples”-type=2:“pears”-type=3:oranges等等。我应该在哪里声明这样一个函数,在控制器中以某种方式“准备”数据?不是吗cakePHP的关联可能性意味着什么,一个包含这些方面的称为“类型”的模型?
public function status() {
$this->set('status', $this->Dossier->getStatus());
}
if ($status === 1) { echo 'Yes'; } else { echo 'No'; }