如何将输入字段添加到表单->;在cakephp 1.2中全局创建方法

如何将输入字段添加到表单->;在cakephp 1.2中全局创建方法,php,forms,cakephp,Php,Forms,Cakephp,我试图在我的所有表单上添加一个隐藏的输入,作为$form->create()函数的一部分(有点像rails),这样我就可以添加一个定制的csrf令牌 我是否可以覆盖帮助器,在它之后添加输入?最简单的方法是添加蛋糕 通过使用安全组件,您可以自动获得CSRF并形成篡改保护。隐藏的令牌字段将自动插入表单中,并由安全组件进行检查 最简单的方法是添加蛋糕 通过使用安全组件,您可以自动获得CSRF并形成篡改保护。隐藏的令牌字段将自动插入表单中,并由安全组件进行检查 无论如何,你都不应该这样做,也就是说,以你

我试图在我的所有表单上添加一个隐藏的输入,作为$form->create()函数的一部分(有点像rails),这样我就可以添加一个定制的csrf令牌


我是否可以覆盖帮助器,在它之后添加输入?

最简单的方法是添加蛋糕

通过使用安全组件,您可以自动获得CSRF并形成篡改保护。隐藏的令牌字段将自动插入表单中,并由安全组件进行检查


最简单的方法是添加蛋糕

通过使用安全组件,您可以自动获得CSRF并形成篡改保护。隐藏的令牌字段将自动插入表单中,并由安全组件进行检查


无论如何,你都不应该这样做,也就是说,以你提问的方式(表单->创建)。创建一个助手并使用它,如果您想知道将值放在哪里,您还可以将CSRF存储在用户会话中。

无论如何,您都不应该这样做,即以您提问的方式(表单->创建)。创建一个帮助器并使用它,如果您想知道将值放在哪里,还可以将CSRF存储在用户会话中。

在CakePHP 2.x中通过别名覆盖核心帮助器 在CakePHP 2.x中,您可以通过为自己的帮助程序使用“别名”来覆盖默认帮助程序。这将允许您创建一个内置CakePHP帮助程序的“插入式”替换,而无需更改其余代码

例如:

app/Controller/AppController.php

class AppController extends Controller {
    public $helpers = array(
        'Form' => array(
            'className' => 'FancyFormHelper'
        )
    );
}
app/View/Helper/FancyFormHelper.php

App::uses('FormHelper', 'View/Helper');

class FancyFormHelper extends FormHelper {
    
    public function create($model = null, $options = array())
    {
        $output = parent::create($model, $options);

        // append your hidden fields 
        return $output . $this->createCSRFfield(); // Or whatever you name your method
    }
}
文档:

在CakePHP 2.x中通过别名覆盖核心帮助程序 在CakePHP 2.x中,您可以通过为自己的帮助程序使用“别名”来覆盖默认帮助程序。这将允许您创建一个内置CakePHP帮助程序的“插入式”替换,而无需更改其余代码

例如:

app/Controller/AppController.php

class AppController extends Controller {
    public $helpers = array(
        'Form' => array(
            'className' => 'FancyFormHelper'
        )
    );
}
app/View/Helper/FancyFormHelper.php

App::uses('FormHelper', 'View/Helper');

class FancyFormHelper extends FormHelper {
    
    public function create($model = null, $options = array())
    {
        $output = parent::create($model, $options);

        // append your hidden fields 
        return $output . $this->createCSRFfield(); // Or whatever you name your method
    }
}

文档:

嗯,我研究过了。问题是我的一些get actions更改了资源,而安全组件只检查post/put/destroy操作。get actions更改了资源?我不确定这一点,因为我从未使用过该版本的cakephp,但从api来看,它在component@looneydoodle这是不幸的吗?永远不要使用“获取”表单修改数据。是什么阻止你将其转换为“发布”表单?你确实意识到,一个友好的谷歌机器人在你的网站上爬行,也会在不经意间进行更改,甚至删除数据?嗯,我调查过了。问题是我的一些get actions更改了资源,而安全组件只检查post/put/destroy操作。get actions更改了资源?我不确定这一点,因为我从未使用过该版本的cakephp,但从api来看,它在component@looneydoodle这是不幸的吗?永远不要使用“获取”表单修改数据。是什么阻止你将其转换为“发布”表单?你确实意识到,一个友好的谷歌机器人在你的网站上爬行,也会在不经意间进行更改,甚至删除数据?无论其正确与否,我如何覆盖助手的create方法以在其完成通常的操作后执行更多的操作?无论其正确与否,我如何覆盖助手的create方法以在其完成通常的操作后执行更多的操作?