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

时间:2016-01-19 17:35:15

标签: model-view-controller action cakephp-3.x ctp

我想从ctp文件访问控制器操作。这里我的动作名称和ctp文件名是不同的。例如,我在故障单的名称中创建了一个操作,我的视图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/>";
}

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

最后,它使用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/>";
}

答案 1 :(得分:0)

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

(如果是控制器)

use App\Controller\ControllerName;

$ControllerNameObj = new ControllerName;

$ControllerNameObj->functionName();

(如果是ctp文件)

$abcObj = new \App\Controller\HomeController; 

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

答案 2 :(得分:0)

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

(对于控制器)

use App\Controller\ControllerName;

$ControllerNameObj = new ControllerName;

$ControllerNameObj->functionName();

(如果是ctp文件)

$abcObj = new \App\Controller\HomeController;

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