如何在CakePHP 2.4中访问从AppControler传递给Component的参数

时间:2013-10-03 03:54:36

标签: cakephp

我创建了一个名为ApiComponent的组件来处理打开HttpSocket到另一台服务器以发布信息。它看起来像这样:

class ApiComponent extends Component {

    public function connect($endpoint,$data) {
        App::uses('HttpSocket', 'Network/Http');
        $HttpSocket = new HttpSocket();            
        // rest of the code
    }

}

这可以理解为我可以从我的控制器调用$this->Api->connect('/posts/add.json',$data);并且代码按预期执行。

但是,我在$HttpSocket->request中有很多设置,例如主机名,端口号,用户名,密码等,我想从组件中取出并放入配置文件。< / p>

根据http://book.cakephp.org/2.0/en/controllers/components.html#including-your-component-in-your-controllers我可以从AppController将参数传递给Component,如下所示:

public $components = array(
    'Api' => array(
        'host' => 'localhost',
        'port' => '80'
    ),
    'Session', 'Auth'
);

手册说这会将数组传递给ApiComponent::__construct(),但它没有说明我应该如何访问组件中的数据(或者,它可能......我在陌生的领域这里)。

所以,我的问题是:

1)在AppController中添加主机,用户名,密码等内容是否合适?和...

2)......如果是这样,我如何从组件中访问它们?

...或...

3)...如果没有,我应该在哪里放置这样的设置?

2 个答案:

答案 0 :(得分:1)

在您的ApiComponent中,您的设置存储在:

$this->settings

请参阅API

我不完全赞同@Lionel Chan:我认为将这些值存储在组件设置中并不是一个坏主意。但是使用Configure类也是一种很好的做法。

答案 1 :(得分:0)

  1. 不,这不合适(所以不清楚)。控制器用于系统/业务逻辑,而不用于配置。

  2. (和3.)您可以使用以下方法存储配置:

    1. 好老不断的方式:

      这很简单,只需define(key, value) bootstrap.php Configure::write()这些凭据就可以了,而且它可以全球访问。

    2. 使用Configure

      配置非常方便,因为它是CakePHP的全局。您只需bootstrap.php在{{1}}文件中写入凭据即可。是的,如果你不介意,它会有一些小的开销,但不应该引人注意。

相关问题