php - 在站点级别定义 cakephp inputDefaults 的方法

标签 php cakephp cakephp-2.0

有没有办法在站点级别定义 options['inputDefaults'] 而不是在每个表单中定义

最佳答案

TLDR:

将下面的 2 段代码粘贴到各自的位置,然后将 $defaultOptions 数组更改为您想要的任何内容 - 瞧。除了向 Form->createinputDefaults 添加默认值外,它不会改变任何 FormHelper 的功能。

解释&代码:

您可以通过自定义 MyFormHelper 来扩展 FormHelper(比听起来容易):

<?php
//create this file called 'MyFormHelper.php' in your View/Helper folder
App::uses('FormHelper', 'View/Helper');
class MyFormHelper extends FormHelper {

    public function create($model = null, $options = array()) {
        $defaultOptions = array(
            'inputDefaults' => array(
                'div' => false,
                'label' => false
            )
        );      

        if(!empty($options['inputDefaults'])) {
            $options = array_merge($defaultOptions['inputDefaults'], $options['inputDefaults']);
        } else {
            $options = array_merge($defaultOptions, $options);
        }
        return parent::create($model, $options);
    }
}

然后,在您的 AppController 中,按以下方式包含 Form 助手(如果您已经有一个 $helpers 变量,只需添加 'Form' => ... 到它):

public $helpers = array(
    'Form' => array(
        'className' => 'MyForm'
    )
);

这样一来,每当您调用 $this->Form 时,它实际上都会调用您的自定义“MyFormHelper”——它唯一做的就是设置 inputDefaults,如果它们未指定,然后继续执行 Cake 的 FormHelper 中的正常逻辑。

关于php - 在站点级别定义 cakephp inputDefaults 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235301/

相关文章:

php - 如何通过 Twig 用 html 实体转义整个 block ?

php - 删除第一篇文章并在 PHP 中显示第二篇文章

cakephp - 如何在 cakephp 2.0 中删除 View 中的 session ?

php - Cakephp 查找转换为 Sql 语法

mysql - 即使在相关表中找不到相关记录,也可以从一个表中检索所有记录

php - Firebase 托管 - 访问 API?

php - Jquery Ajax 返回 NaN

javascript - Window.open 在 Cakephp 中调用 Action

cakephp - 在 CakePHP 2.3 中使用 OAuth 进行身份验证

php - 与 cakephp 中先前带有前缀的页面上的另一个前缀链接 :2. 5.4