CakePHP如何创建函数并从视图中调用它们

时间:2016-10-23 02:59:31

标签: php function cakephp

如何创建可在视图中调用的函数(如在index.ctp中)?

我刚刚在我的一个控制器中写了一个函数:

public function getName($id) {
    $name = $users
      ->find()
      ->where(['id' => $id ])
      ->first()
      ->username;
    return $name;
}

该函数应根据作为参数传递的$ id返回用户名。我只想知道如何从我的视图中调用函数。我收到此错误:

  

"错误:调用未定义的函数getName()"

2 个答案:

答案 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请求,如果您希望获取基于以下内容的数据:视图中的用户操作。