gpt4 book ai didi

php - cakephp 中的 requestAction

转载 作者:行者123 更新时间:2023-12-04 20:12:23 25 4
gpt4 key购买 nike

我已将 GeoIP 集成到我的 CakePHP 中。现在我必须从我的 View 文件中调用它。我在我的 Controller 中做了这样的功能:

function getCountry($ip)
{
$this->GeoIP->countryName($ip);
}

GeoIP 是一个包含的组件。

当我在全局 View 中写下这样的内容时:$this->GeoIP->countryName('8.8.8.8') 它运行良好,但我记得,这对于 MCV 架构是错误的。所以正确的方法是为我的 Controller 调用 requestAction

这里我有两个问题:我必须在位于 View 文件中的 php 函数中执行此操作:

// MyView.php:
<?php
function Foo()
{
$this->GeoIP->countryName(...);
}
?>

第一个错误是 $this 在函数内部不可用,第二个错误是如何从我的组件调用 getCountry 并将需要的 ip 地址传递给 $ip?

我试过:

echo $this->requestAction('Monitoring/getCountry/8.8.8.8');

Monitoring 是 Controller 名称。

但这没有返回任何错误。什么是正确的方法以及如何在函数中调用它?

最佳答案

像这样:

Layout -> View/Layouts/default.ctp (适用于任何其他 View /元素或 block )

<h1>My Website</h1>
<?php echo $this->element('GeoIP') ?>

Element -> View/Elements/GeoIP.ctp (使用一个元素,这样你就可以缓存它,而不是每次都请求 Controller )

<?php
$country = $this->requestAction(array('controller' => 'Monitoring', 'action' => 'ipToCountry'));

echo "You're from {$country}?";
?>

Controller -> Controller/MonitoringController.php

public function ipToCountry() {
// Only accessible via requestAction()
if (empty($this->request->params['requested']))
throw new ForbiddenException();

return $this->GeoIP->countryName('8.8.8.8');
}

关于php - cakephp 中的 requestAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9241197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com