我不知道如何将控制器1的函数(动作)中的隐藏数据发送到yii中Controller2的函数(动作)。
我认为通过POST将数据发送到第二个功能,我不打算在不使用表单的情况下发送POST数据专有技术。
你能帮助我吗?
抱歉我的英文
Controller1:
类DeviceController扩展Controller {
public function actionDeviceTurnOn(){ if(isset($_GET['id_device'])){ $id_device = $_GET['id_device']; $model = $this->loadModel($id_device); $model->status = 1; $title = "Message of admin"; $message = "Good morning" . "\r\n" . "\r\n" . "The device is On"; MessagesController::messageAutoComplete(Yii::app()->user->id, $_GET['id_user'], $title, $message); } } } ?>
控制器2:
类MessagesController扩展Controller {
public function messageAutoComplete($from_user_id=null, $to_user_id=null, $title=null, $message=null){ $data['from_user_id'] = $from_user_id; $data['to_user_id'] = $to_user_id; $data['title'] = $title; $data['message'] = $message; MessagesController::actionCompose($data); } public function actionCompose ($data=null) { $model=new Messages; $this->performAjaxValidation($model); if(isset($_POST['Messages'])) { foreach($_POST['Messages']['to_user_id'] as $user_id) { $model = new Messages; $model->attributes=$_POST['Messages']; $model->to_user_id = $user_id; $model->save(); } $this->redirect(array('success')); } $model->to_user_id = ""; if($data != null){ $model->from_user_id = $data['from_user_id']; $model->to_user_id = $data['to_user_id']; $model->title = $data['title']; $model->message = $data['message']; } $this->render('compose',array( 'model'=>$model, )); } }
这就是我要做的,但它不起作用!
答案 0 :(得分:2)
最后,我找到了解决问题的方法。
要将数据隐藏功能(动作)controller1发送到函数(动作)Controller2,我创建了一个包含controler1函数中隐藏数据的会话,我在Controller2的函数中得到了这个会话。
我按照以下教程创建会话: http://www.larryullman.com/2011/05/03/using-sessions-with-the-yii-framework/
答案 1 :(得分:1)
我手边看到的一件事是你静态调用你的方法,但方法是一个成员函数。应该是公共静态函数messageAutoComplete是正确的。另外我注意到从控制器调用控制器在Yii中不起作用。你真的应该在组件目录中添加一个帮助器类。你甚至可以从你的组件扩展你的控制器,如果你不想让它成为一个静态的方法,所以它会被称为$ this-> messageAutoComplete(params)
答案 2 :(得分:0)
此外,您可以通过调用控制器上的renderpartial并在同一控制器中将所有数据发送到两个视图文件,获取支持的数据并在相关操作中处理它们。