我可以通过请求发送动作中的变量到另一个动作吗?

时间:2013-12-03 11:19:27

标签: php post yii import action

我通过以下代码从其他控制器调用了我的操作:

Yii::import('application.controllers.ProvinceCityController');
$obj =new ProvinceCityController($id); // preparing object
echo $obj->actiondynamiccities(20); 

我可以通过邮寄请求发送我的数据(20)吗?因为actiondynamiccities()得到$_POST并做某事......

2 个答案:

答案 0 :(得分:0)

如果需要将POST变量发送到控制器,则只能使用AJAX。

如果需要,您可以通过GET发送密钥以保护其安全性

 Yii::import('application.controllers.ProvinceCityController');
  $obj =new ProvinceCityController($id); // preparing object
  echo $obj->actiondynamiccities(20, /*SECRET*/); 

并在ProvinceCityController中

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 ids也要获得这种秘密。

答案 1 :(得分:0)

当一个函数在多个控制器中多次使用时,您必须维护一个单独的类,该类可以通过它的方法提供此功能。

Ex:创建一个类SharedFuncs并将该文件保存在components文件夹

<?php
    class SharedFuncs 
    {
        public function hello($name) {
            return "Helloo..!, ".ucfirst($name);
        }
    }
?>

并访问项目中任何位置的方法。

<?php
    $utils=new SharedFuncs();
    echo $utils->hello('maryam');
?>