如何从 CakePHP 3 中的 ctp 文件访问控制器操作

Posted

技术标签:

【中文标题】如何从 CakePHP 3 中的 ctp 文件访问控制器操作【英文标题】:How to access a controller action , from ctp file in CakePHP 3 【发布时间】:2016-01-19 17:35:14 【问题描述】:

我想从 ctp 文件访问控制器操作。这里我的动作名和ctp文件名是不同的。比如我以ticket的名字创建了一个action,我的view ctp文件名为ticket_title。如何做到这一点?

这是我的行动:票

class UsersController extends AppController

public function ticket()

 $ticket=$this->Tickets->find('all');
 $this->set(compact('ticket'));


我的观点 ctp 文件:ticket_title.ctp

<?php
$this->requestAction(array('controller' => 'users', 'action' => 'ticket'));

foreach($ticket as $ticket1)

    echo $ticket1->title."<br/>";

任何人都可以帮助我吗?

【问题讨论】:

可能重复:***.com/questions/30318793/… 【参考方案1】:

最后,它通过使用 render() 方法工作。 在我的行动中:

public function ticket()

$this->loadModel('Tickets');
$ticket=$this->Tickets->find('all');
$this->set(compact('ticket'));
$this->render('ticket_title');

这是我的ticket_title.ctp

<?php
foreach($ticket as $ticket1)

    echo $ticket1->title."<br/>";

【讨论】:

【参考方案2】:

是的,它在 CTP of Cake PHP 3 中工作。您可以在任何其他控制器或需要的 ctp 文件中使用此对象

(如果是控制器)

use App\Controller\ControllerName;

$ControllerNameObj = new ControllerName;

$ControllerNameObj->functionName();

(如果是 ctp 文件)

$abcObj = new \App\Controller\HomeController;

$fetchdetail = $abcObj->ControllerfunctionName($parameter1, $parameter2);

【讨论】:

【参考方案3】:

您可以在任何其他控制器或需要的ctp文件中使用此对象

(如果是控制器)

use App\Controller\ControllerName;

$ControllerNameObj = new ControllerName;

$ControllerNameObj->functionName();

(如果是 ctp 文件)

$abcObj = new \App\Controller\HomeController; 

$fetchdetail = $abcObj->ControllerfunctionName($parameter1, $parameter2);

【讨论】:

以上是关于如何从 CakePHP 3 中的 ctp 文件访问控制器操作的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS 中使用 Netbeans+ Cakephp 突出显示 .ctp 文件的语法

如何在 CakePHP 中嵌入 swf 文件

SVN将所有CakePHP视图从thtml重命名为ctp

模板文件“Error/error500.ctp”丢失。在 CakePHP 的单元测试期间

CakePHP:在 view.ctp 中显示图像

Cakephp 3:view.ctp求和两个变量