在CakePHP公共类变量

时间:2015-08-29 04:22:25

标签: php cakephp

如何在CakePHP 2.6中的模型$ actsAs数组中连接全局常量和字符串?

我有一个文件上传插件需要通过$ actsAs配置提供给它的目录路径,但是虽然它让我只使用全局常量或字符串作为数组键值,但它不会让我连接两个在一起。这是一个问题,因为理论上我的应用程序可能生活在应用程序路径不同的各种环境中,我宁愿不进行硬编码,而是使用相对于全局常量ROOT的路径。

在我看来,我正在遇到PHP的限制。这有什么好的解决方案?特定于蛋糕/蛋糕友好的解决方案是一个优势。

什么有效:

// Import.php
public $actsAs = array(
    'Uploader.Attachment' => array(
        'filename' => array(
            // You can use a global constant by itself:
            'tempDir' => TMP,
            'uploadDir' => 
            // Using a full string works, too.
            '/var/www/vhosts/hostname/app/webroot/file/imports',
            //
            'finalPath' => '/file/imports/',
            'nameCallback' => 'nameCallback',
            'overwrite' => false,
        ),
    ),
);

我想工作但不起作用。我没有连接,而是出现了“意外”。错误:

public $actsAs = array(
    'Uploader.Attachment' => array(
        'filename' => array(
            'tempDir' => TMP,
            // Concatenation of the two results in an "unexpected ." error:
            // ROOT being '/var/www/vhosts/hostname/'
            'uploadDir' => ROOT . '/app/webroot/file/imports',
            //
            'finalPath' => '/file/imports/',
            'nameCallback' => 'nameCallback',
            'overwrite' => false,
        ),
    ),
);

1 个答案:

答案 0 :(得分:0)

您可以在构造函数中执行此操作:

public function __construct($id = false, $table = null, $ds = null) {
   $this->actAs = array(
    'Uploader.Attachment' => array(
        'filename' => array(
            'tempDir' => TMP,
            'uploadDir' => ROOT . '/app/webroot/file/imports',
            'finalPath' => '/file/imports/',
            'nameCallback' => 'nameCallback',
            'overwrite' => false,
        ),
    ),
   );
  parent::__construct($id, $table, $ds);
}