从带参数

时间:2015-10-29 16:45:09

标签: cakephp controller element

我从我的元素调用控制器的功能。我发送了你需要的参数。我遇到的问题是,在我的元素中,这样的值为TRUE,但是当驱动程序到达FALSE时,我不明白为什么会发生这种情况。清理临时文件夹和缓存,我关闭并再次打开文件,但没有。我找不到问题是什么,我来找你。我希望你能帮助我。

调用元素,我需要的参数是'web'

echo $this->element(
    'atributo_element', 
    array(
        'data'=>$atributo, 
        'eventID'=>$eventID, 
        'format'=>'simple',
        'evento'=>$evento, 
        'input_value'=>$input_value, 
        'setup'=>$setup, 
        'web' => true
    )
);

element.ctp

print_r($web); // ====> 1
$this->requestAction(
    array(
        'controller'=>'tickets',
        'action'=>'listado',
        'admin'=>false
    ),
    array($eventID, $inscID, $web)
);

控制器

public function listado($evento_id = null, $inscripcion_id = null, $web = false) {
    print_r($web); //=====> false 
    $tickets = $this->Ticket->getTicketsActivos($evento_id, $web);
}

修改

试图找到错误,一些奇怪的探测

echo $this->Html->link(array('controller'=>'tickets', 'action'=>'listado', 'admin'=>false),
                                         array($eventID,$inscID, $web));

这实际上打印了web的值,如1所示,但是函数永远不会收到它,因为1太奇怪了

1 个答案:

答案 0 :(得分:0)

您错误地设置了requestAction()的网址。您需要使用'pass'索引传递第二个数组中的所有路由参数: -

$this->requestAction(
    array(
        'controller' => 'tickets',
        'action' => 'listado',
        'admin' => false,
    ),
    array(
        'pass' => array(
            $eventID,
            $inscID, 
            $web
        )
    )
);

您正在做的是将您的控制器操作调用为listado(),而不使用任何参数listado(null, null, false)

使用$this->Html->link()的示例是错误的,因为传递的参数需要在与第一个参数作为链接名称的其他路由器参数相同的数组中定义: -

echo $this->Html->link(
    'link',
    array(
        'controller' => 'tickets', 
        'action' => 'listado', 
        'admin' => false,
        $eventID,
        $inscID, 
        $web
    )
);

值得注意的是requestAction()会导致性能不佳,如果可能,最好避免使用。