Cakephp 2.5 Postlink在网址上隐藏模型属性名称

时间:2017-09-18 14:06:45

标签: cakephp

我在视图文件中使用了cakephp 2.5 postlink方法:

$tableRow['Model.modelatribute'] = $this->Form->postLink(
                    $data['Vehicle']['plate'],
                    array('controller'=>'somecontroller',
                      'action' => 'somemethod',
                      'Model.modelatribute' => base64_encode($data['Vehicle']['plate'])
                    ),
                    array('confirm' => 'Look at  vehicle '.$data['Vehicle']['plate'])
                );

我不想在网址栏上显示模型属性名称。点击链接并重定向后,网址显示:

somemethod/Model.modelatribute:vSpEeTIweQ%3D%3D

我可以使用postlink方法o cakephp 2.5隐藏模型属性名称吗?

提前感谢

2 个答案:

答案 0 :(得分:2)

如果您只想将Model.modelatribute的值作为参数传递,请在routing array中不要使用Model.modelatribute。如果您想在网址中传递值而不显示,可以使用postLink的data option

echo $this->Form->postLink(
    $data['Vehicle']['plate'],
    array(
        'controller'=>'somecontroller',
        'action' => 'somemethod',
        base64_encode($data['Vehicle']['plate']) // Routing array without modelname
    ),
    array(
        'confirm' => 'Look at  vehicle '.$data['Vehicle']['plate'],
        'data' => array(
            // Data option of postLink method
            'Model.modelatribute' => base64_encode($data['Vehicle']['plate'])
        )
    )
);

答案 1 :(得分:1)

好吧,放在那里。如果您不希望它出现在那里,请不要将其放在URL中。您也可以put it into the body of the POST request

如果您担心人们可以使用模型名称进行某些操作而您希望隐藏它,那么这是一种非常糟糕的方法,称为security through obscurity。相反,您需要确保验证只传递和处理您想要的值。因此,请始终从任何地方检查您的传入数据。