【问题标题】:Concatenating constants and strings in CakePHP public class variables在 CakePHP 公共类变量中连接常量和字符串
【发布时间】:2015-08-29 04:22:24
【问题描述】:

如何在 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,
        ),
    ),
);

【问题讨论】:

标签: php cakephp


【解决方案1】:

你可以在构造函数中这样做:

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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2016-11-15
    • 2018-06-23
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多