如何创建可在视图中调用的函数(如在index.ctp中)?
我刚刚在我的一个控制器中写了一个函数:
public function getName($id) {
$name = $users
->find()
->where(['id' => $id ])
->first()
->username;
return $name;
}
该函数应根据作为参数传递的$ id返回用户名。我只想知道如何从我的视图中调用函数。我收到此错误:
"错误:调用未定义的函数getName()"
答案 0 :(得分:1)
对于这类工作,您可以使用cakePHP Cell
//src/View/Cell/UserCell.php
namespace App\View\Cell;
use Cake\View\Cell;
class UserCell extends Cell{
public function getName($id) {
$users = TableRegistry::get('Users');// or may use $this->loadModel('Users');
$name = $users->find()->where(['id' => $id ])->first()->username;
return $name;
}
}
现在您可以从视图中调用
echo $this->cell('User::getName', [$id]);
以下是Official Doc
答案 1 :(得分:0)
你可以这样做,但这是针对MVC模式的,并且无论如何都不推荐。
Namespace\ControllerName::getName(1)
你应该考虑看看CakePHP手册并理解,如何设置变量以便从控制器中查看http://book.cakephp.org/3.0/en/views.html#setting-view-variables
其他选项是向您的控制器发出AJAX请求,如果您希望获取基于以下内容的数据:视图中的用户操作。