我通过以下代码从其他控制器调用了我的操作:
Yii::import('application.controllers.ProvinceCityController');
$obj =new ProvinceCityController($id); // preparing object
echo $obj->actiondynamiccities(20);
我可以通过邮寄请求发送我的数据(20)吗?因为actiondynamiccities()
得到$_POST
并做一些事情。。。
如果需要将POST变量发送到控制器,则只能使用AJAX。
如果你想,你可以通过GET发送它,并附上一个密钥来保护它的安全
Yii::import('application.controllers.ProvinceCityController');
$obj =new ProvinceCityController($id); // preparing object
echo $obj->actiondynamiccities(20, /*SECRET*/);
在省级城市控制器
public function actionDynamicCities($id = null, $key = null)
{
$id = isset($_POST['id']) ? $_POST['id'] : $id;
if(!isset($_POST['id'] && strcmp($key, /*SECRET*/) != 0)
{ throw Exception here... }
...continue with code
}
此外,考虑获得这种秘密,即使是POST ID。
当一个函数在多个控制器上多次使用时,您必须维护一个单独的类,该类可以通过它的方法提供此功能。
Ex:创建一个类SharedFuncs
并将该文件保存在components
文件夹中
<?php
class SharedFuncs
{
public function hello($name) {
return "Helloo..!, ".ucfirst($name);
}
}
?>
并在项目中的任何位置访问这些方法。
<?php
$utils=new SharedFuncs();
echo $utils->hello('maryam');
?>