Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建CakePHP自定义配置_Php_Cakephp_Cakephp 1.3 - Fatal编程技术网

创建CakePHP自定义配置

创建CakePHP自定义配置,php,cakephp,cakephp-1.3,Php,Cakephp,Cakephp 1.3,我正在尝试存储应用程序的配置设置。要存储的详细信息应该在整个应用程序中都可用,并且应该可以对其进行更新。详细信息的示例包括徽标图像的链接和联系人详细信息 首先,我将细节存储在数据库中,创建了一个模型和控制器。但是,由于徽标位于每个页面上,因此需要在每个页面加载时查询数据库 我已经读过关于Configure类的文章,但是我不能让它太过有效。谁能解释一下我如何使用Configure将这些配置变量存储在一个文件中,并在文件中读取和更新它们。我已经看过烹饪手册和API,但不是很清楚。你可以在应用程序控制

我正在尝试存储应用程序的配置设置。要存储的详细信息应该在整个应用程序中都可用,并且应该可以对其进行更新。详细信息的示例包括徽标图像的链接和联系人详细信息

首先,我将细节存储在数据库中,创建了一个模型和控制器。但是,由于徽标位于每个页面上,因此需要在每个页面加载时查询数据库


我已经读过关于Configure类的文章,但是我不能让它太过有效。谁能解释一下我如何使用Configure将这些配置变量存储在一个文件中,并在文件中读取和更新它们。我已经看过烹饪手册和API,但不是很清楚。

你可以在应用程序控制器的beforeFilter中循环使用设置表,使用名称作为写入设置的方式

像这样:

<?php 
    $settings = Cache::read('AppSettings');

    if(!$settings){
        $settings = $this->Settings->find('all');
        Cache::write('AppSettings', $settings);
    }

    foreach($settings as $setting){
        Configure::write('Settings.' . $setting['Setting']['name'], $setting['Setting']['value']);
    }
?>

因此,您将拥有一个包含id、name和value字段的数据库,其中name是用于获取配置的名称,value是您期望从中获得的值

字段“name”值为“sitename”,字段“value”值为“MySite”的行

可以使用
Configure::read('Settings.sitename')调用并将返回“MySite”

然后在设置模型中,放置
Cache::delete('AppSettings')afterSave
方法中的code>
. 这样,当更新或添加记录时,缓存将被破坏,设置将被重新缓存和重新配置。

非常好的解决方案@Kevin,但是您的代码中有一个小错误,在Configure::write函数的foreach循环中,它应该是$setting[][(没有尾随的s)