如何在cakephp 1.2中向表单全局添加输入字段->create方法?


How do I add an input field to the form->create method globally in cakephp 1.2

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

我是否可以重写helper以在它之后添加输入?

最简单的方法就是添加cake提供的安全组件。

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

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

在CakePHP 2.x中通过别名重写核心助手

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

例如:

app/控制器/AppController.php

class AppController extends Controller {
    public $helpers = array(
        'Form' => array(
            'className' => 'FancyFormHelper'
        )
    );
}

应用程序/视图/帮助/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
    }
}

文档:使用和配置helper